[Mesa-dev] [PATCH 0/8] Add DCC support.

Alex Deucher alexdeucher at gmail.com
Fri Sep 4 14:00:47 PDT 2015


On Fri, Sep 4, 2015 at 3:47 PM, Bas Nieuwenhuizen
<bas at 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.
>

FWIW, all of the register information is available in mesa and in the kernel:
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/amd/include/asic_reg/gca


> 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.
>

The display hardware does not support DCC.

> 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.

DCC is not always a win so there probably needs to be heuristics as to
when to enable it.

Alex

>
> 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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list