With DirectX8 and above, it is possible to create dynamic textures: writing into these kind of texture is very fast, and thus, they are used for procedural textures, textures displaying video sequences, or simple 2D sprites.
In my previous job, where we used to develop 2D/3D mixed games, we made a relevant benchmark between DirectX7 DirectDraw and DirectX8 Direct3D, which consisted in writing and then display a large sequence of 2D sprites. Depending on the video card, the DirectX7 benchmark was about 2 time faster, whatever classic method we use for DirectX8. We supposed that the DirectX8 driver, when locking the texture, write the texture from video memory to main memory, and, when unlocking, write back to video memory. With DirectX7, there's only one write to video memory.
With dynamic textures, we give the driver a hint telling it we want only write-only textures. And using this feature on video cards supporting it (GeForce3 and above), we got the same performance in DirectX8 than in DirectX7.
So, is this feature can be supported by Irrlicht? If I am not wrong, it's done by adding a flag during the creation of a texture in DirectX3D. I don't know OpenGL support dynamic textures.