This patch series enables delta color compression (DCC) for Vulcanic Islands GPU's. This should reduce memory bandwidth to increase performance.
I have found no documentation on this feature, so most of the work is based on guesswork, register names and Catalyst traces. Some benchmarks I've ran: nexuiz 68.83 -> 81.62 openarena 50.90 -> 50.80 heaven 5.47 -> 6.26 valley 9.58 -> 10.40 xonotic 60.32 -> 60.27 Note that DCC for SCANOUT surfaces is still disabled, as the X server can be rendering to it as front buffer, which has no resource flush. As a side effect, the main framebuffers of clients (at least on DRI2) are also not DCC enabled. As passing a surface to the X server and display are the most common reasons for decompressing, games should not pretty much never trigger the DCC decompression path. We therefore should have only very minor performance regressions. If I enable DCC for SCANOUT buffers in applications I get nexuiz 68.83 -> 78.81 openarena 50.90 -> 56.10 heaven 5.47 -> 6.28 valley 9.58 -> 10.54 xonotic 60.32 -> 56.26 This change would have somewhat mixed results, with a regression for xonotic. As for testing, I run this systemwide for a few days now and a piglit test minus a few tests that locked up on the baseline or seemingly gave random results, did not result in regressions. Bas Nieuwenhuizen (8): radeonsi: Allocate buffers for DCC. radeonsi: Add DCC compression tracking machinery. radeonsi: Enable DCC. radeonsi: Add DCC fast clear. radeonsi: Invalidate the L2 cache on framebuffer change. radeonsi: Add sampling of DCC compressed textures. radeonsi: Do not decompress DCC textures for sampling. radeonsi: Add DCC for multisampled textures. src/gallium/drivers/radeon/r600_buffer_common.c | 20 +++++++ src/gallium/drivers/radeon/r600_pipe_common.h | 9 ++++ src/gallium/drivers/radeon/r600_texture.c | 69 +++++++++++++++++++++---- src/gallium/drivers/radeon/r600d_common.h | 1 + src/gallium/drivers/radeon/radeon_winsys.h | 5 ++ src/gallium/drivers/radeonsi/cik_sdma.c | 6 ++- src/gallium/drivers/radeonsi/si_blit.c | 39 +++++++++----- src/gallium/drivers/radeonsi/si_descriptors.c | 5 ++ src/gallium/drivers/radeonsi/si_dma.c | 6 ++- src/gallium/drivers/radeonsi/si_pipe.c | 2 + src/gallium/drivers/radeonsi/si_pipe.h | 3 ++ src/gallium/drivers/radeonsi/si_state.c | 47 ++++++++++++++--- src/gallium/drivers/radeonsi/si_state_draw.c | 14 +++++ src/gallium/drivers/radeonsi/sid.h | 1 + src/gallium/winsys/amdgpu/drm/amdgpu_surface.c | 47 +++++++++++++++-- 15 files changed, 237 insertions(+), 37 deletions(-) -- 2.5.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev