r600g: add in-place DB decompression and texturing with DB tiling
authorMarek Olšák <maraeo@gmail.com>
Tue, 2 Oct 2012 20:02:54 +0000 (22:02 +0200)
committerMarek Olšák <maraeo@gmail.com>
Tue, 6 Nov 2012 01:54:16 +0000 (02:54 +0100)
commit428e37c2da420f7dc14a2ea265f2387270f9bee1
tree3b7b2334962ef164625fdbf9c60b9a155b000915
parentc80ceded6f0e420b4be28637155480225daefd15
r600g: add in-place DB decompression and texturing with DB tiling

The decompression is done in-place and only the compressed tiles are
decompressed. Note: R6xx-R7xx can do that only with Z16 and Z32F.

The texture unit is programmed to use non-displayable tiling and depth
ordering of samples, so that it can fetch the texture in the native DB format.

The latest version of the libdrm surface allocator is required for stencil
texturing to work. The old one didn't create the mipmap tree correctly.
We need a separate mipmap tree for stencil, because the stencil mipmap
offsets are not really depth offsets/4.

There are still some known bugs, but this should save some memory and it also
improves performance a little bit in Lightsmark (especially with low
resolutions; tested with Radeon HD 5000).

The DB->CB copy is still used for transfers.

Reviewed-by: Jerome Glisse <jglisse@redhat.com>
src/gallium/auxiliary/util/u_blitter.c
src/gallium/drivers/r600/evergreen_compute_internal.c
src/gallium/drivers/r600/evergreen_state.c
src/gallium/drivers/r600/evergreend.h
src/gallium/drivers/r600/r600_blit.c
src/gallium/drivers/r600/r600_pipe.h
src/gallium/drivers/r600/r600_resource.h
src/gallium/drivers/r600/r600_state.c
src/gallium/drivers/r600/r600_texture.c