Thank you very much. I'm impressed. Sorry, but this will take some time for me to review because I'm very busy currently. I will have to check with internal documentation if everything is correct. The idea of not using DCC for scanout/shared buffers is great.
Marek On Fri, Sep 4, 2015 at 9:47 PM, Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl> wrote: > 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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev