[Mesa-dev] [PATCH 00/14] GetTexImage and CopyTexSubImage fixes and improvements

Marek Olšák maraeo at gmail.com
Thu Dec 20 09:56:38 PST 2012

This series contains some fixes for rarely used OpenGL features. What's more interesting here is that it uses 2 features we could use in gallium more often: 3D blits and 3D texture tranfers. The interfaces have been in place already.

The 3D blit can be done with pipe->blit by setting pipe_blit_info.dst.box.depth and src.box.depth to a value > 1. It can copy multiple texture layers/slices with a single blit call. It's implemented by the u_blitter module, which is what most drivers use, though at the moment there's no support for flipping and scaling in the Z direction.

Concerning the 3D transfers, we've had pipe_transfer.layer_stride, box.z and box.depth for some time, so we can just start using them. The drivers which don't implement the 3D transfers have a reason to do so now. This series doesn't break the drivers which don't implement them, because I'm using the 3D transfers to fix things which have always been broken.

In particular, decompress_with_blit uses a 3D blit to decompressed a whole 2D array texture to a temporary texture and a 3D transfer to map all of it. Also, the CopyTexSubImage fallback needs a 3D transfer to be able to map a 1D array texture.


More information about the mesa-dev mailing list