[Mesa-dev] [PATCH 00/13] Use the constant engine in radeonsi

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Thu Apr 14 01:34:50 UTC 2016


This series implements updating descriptors using the constant engine.
This should result in a 0%-3% improvement for CPU bound applications,
as we only have to upload the change descriptors from the CPU.

There are very slight performance advantages on the GPU too, as the
CE uploads the data directly to the L2 cache. This series reduces the
number of cycles waited on LGKM counters by about 1/6th across multiple
applications. However this translates in almost negligible performance
improvements.

Only the amdgpu winsys supports this for now. I think the radeon
winsys can be extended to support it, but I don't have any radeon
hardware so it is probably better that someone else implements that.

This series does not include support for partially updating
uniforms. My gallium interface proof of concept became kind of messy
and the constant engine patches have been requested for descriptors.

Bas Nieuwenhuizen (10):
  winsys/amdgpu: Enlarge const IB size.
  radeonsi: Create CE IB.
  radeonsi: Add dirty_mask to descriptor list.
  radeonsi: Add CE packet definitions.
  radeonsi: Add CE synchronization.
  radeonsi: Allocate chunks of CE ram.
  radeonsi: Add CE uploader.
  radeonsi: Use CE for vertex buffers.
  gallium/util: Add u_bit_scan_consecutive_range64.
  radeonsi: Use CE for all descriptors.

Marek Olšák (3):
  gallium/radeon: move ring_type into winsyses
  winsys/amdgpu: split IB data into a new structure in preparation for
    CE
  winsys/amdgpu: add support for const IB

 src/gallium/auxiliary/util/u_math.h           |   8 ++
 src/gallium/drivers/radeon/r600_pipe_common.c |   1 +
 src/gallium/drivers/radeon/r600_pipe_common.h |   1 +
 src/gallium/drivers/radeon/radeon_winsys.h    |  19 +++-
 src/gallium/drivers/radeonsi/si_descriptors.c | 149 +++++++++++++++++++++-----
 src/gallium/drivers/radeonsi/si_hw_context.c  |   4 +-
 src/gallium/drivers/radeonsi/si_pipe.c        |  18 ++++
 src/gallium/drivers/radeonsi/si_pipe.h        |   6 ++
 src/gallium/drivers/radeonsi/si_state.h       |   4 +
 src/gallium/drivers/radeonsi/si_state_draw.c  |  24 +++++
 src/gallium/drivers/radeonsi/sid.h            |   6 ++
 src/gallium/winsys/amdgpu/drm/amdgpu_bo.c     |   5 -
 src/gallium/winsys/amdgpu/drm/amdgpu_bo.h     |   6 ++
 src/gallium/winsys/amdgpu/drm/amdgpu_cs.c     | 125 ++++++++++++++-------
 src/gallium/winsys/amdgpu/drm/amdgpu_cs.h     |  26 +++--
 src/gallium/winsys/radeon/drm/radeon_drm_cs.c |  10 +-
 src/gallium/winsys/radeon/drm/radeon_drm_cs.h |   1 +
 17 files changed, 326 insertions(+), 87 deletions(-)

-- 
2.8.0



More information about the mesa-dev mailing list