[Mesa-dev] [PATCH v2 0/7] Add DCC Support.

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Sun Oct 11 08:38:00 PDT 2015


These patches enable delta color compression (DCC) for Vulcanic
Islands GPU's. This should reduce memory bandwidth to increase
performance.

In this second version I reworked the fast clear not to use the CMASK
for DCC compressed textures, as well as allowing integer formats.

With the reworked fast clear and shader based resolves, DCC compressed
MSAA textures became slower than non-DCC compressed textures. Therefore
I disabled DCC for MSAA textures.

Finally, I made the compression tracking supported optional as it is
currently not needed. This involves the last 2 patches of this series.

Besides the MSAA textures I have not found a significant performance
difference compared to the first version.

v2:
 - Rework fast clear not to use CMASK clear.
 - Rework cache flushes.
 - Drop MSAA support.
 - Remove unsupported KEY_CLEAR_ENABLE flag.
 - Use shader MSAA resolve if the destination is DCC compressed.
 - Only set ALPHA_IS_ON_MSB when needed.
 - Rework compression tracking and decompress to be optional.

Bas Nieuwenhuizen (7):
  radeonsi: Allocate buffers for DCC.
  radeonsi: Disable operations that do not work with DCC.
  radeonsi: Add a CACHE_FLUSH event
  radeonsi: Enable DCC.
  radeonsi: Implement DCC fast clear.
  radeonsi: Add DCC decompress.
  radeonsi: Add DCC compression tracking machinery.

 src/gallium/drivers/radeon/r600_buffer_common.c | 21 ++++++
 src/gallium/drivers/radeon/r600_pipe_common.h   |  8 ++
 src/gallium/drivers/radeon/r600_texture.c       | 98 +++++++++++++++++++++++--
 src/gallium/drivers/radeon/r600d_common.h       |  1 +
 src/gallium/drivers/radeon/radeon_winsys.h      |  5 ++
 src/gallium/drivers/radeonsi/cik_sdma.c         |  3 +-
 src/gallium/drivers/radeonsi/si_blit.c          | 41 +++++++----
 src/gallium/drivers/radeonsi/si_cp_dma.c        |  3 +-
 src/gallium/drivers/radeonsi/si_descriptors.c   |  7 +-
 src/gallium/drivers/radeonsi/si_dma.c           |  3 +-
 src/gallium/drivers/radeonsi/si_pipe.c          |  2 +
 src/gallium/drivers/radeonsi/si_pipe.h          |  4 +
 src/gallium/drivers/radeonsi/si_state.c         | 50 +++++++++++--
 src/gallium/drivers/radeonsi/si_state_draw.c    | 17 +++++
 src/gallium/drivers/radeonsi/sid.h              |  1 +
 src/gallium/winsys/amdgpu/drm/amdgpu_surface.c  | 47 ++++++++++--
 16 files changed, 275 insertions(+), 36 deletions(-)

-- 
2.5.3



More information about the mesa-dev mailing list