[Mesa-dev] [PATCH v3 0/7] Add DCC support

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Tue Oct 20 15:10:35 PDT 2015


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

For the third version I incorporated the suggestions from Marek
as well as fixed a bug with the fast clear.

There is still no MSAA support yet, as I currently only get it
to work correctly if I either use a DCC_DECOMPRESS instead of a
normal DECOMPRESS or disable fast clears. Even if I set the
CMASK to 0xCCCCCCCC while not fast-clearing it is still slower.

v3:
 - use FLUSH_AND_INV_CB_DATA_TS instead of FLUSH_CACHE
 - decrease MAX_UNCOMPRESSED_BLOCK_SIZE as necessary
 - Rework fast clear to be more flexible for formats with < 4 components.
 - Add dcc_enabled check to DCC decompress.

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 FLUSH_AND_INV_CB_DATA_TS for DCC.
  radeonsi: Enable DCC.
  radeonsi: Implement DCC fast clear.
  radeonsi: Add DCC decompression.
  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       | 125 ++++++++++++++++++++++--
 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_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          |   3 +
 src/gallium/drivers/radeonsi/si_state.c         |  53 ++++++++--
 src/gallium/drivers/radeonsi/si_state_draw.c    |  25 +++++
 src/gallium/drivers/radeonsi/sid.h              |   1 +
 src/gallium/winsys/amdgpu/drm/amdgpu_surface.c  |  47 ++++++++-
 15 files changed, 310 insertions(+), 35 deletions(-)

-- 
2.6.1



More information about the mesa-dev mailing list