[Mesa-dev] [PATCH 00/22] anv: Move CCS resolves to layout transitions

Nanley Chery nanleychery at gmail.com
Thu Apr 27 18:31:59 UTC 2017


Resolves of CCS-enabled image subresources are currently tied to the
scope of a subpass. This can cause us to lose clear data compression
prematurely in some cases. For example, an application can record a
render pass that only clears followed by another render pass that only
draws. The driver would do a fast-clear then immediately resolve the
color buffers before the second render pass.

This series instead ties the lifetime of clear data compression to the
scope of the image layout. In the above example, the application would
presumably keep the image in the
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL layout across both render
passes and so the driver would avoid the intermediate resolve.

----

This series improves the average frame rate of a Dota 2 benchmark by
3.04% on my SKL GT4. The frame rates are now similar to those seen when
running it with INTEL_DEBUG=norbc. The benchmark was run three times at
1080p in release mode.

Six tests in dEQP-VK.geometry.layered.3d.* now fail, but I've attributed
the failures to a test bug and filed a bug report.

----

Cc: Jason Ekstrand <jason at jlekstrand.net>

Nanley Chery (22):
  intel/isl: Limit CCS to one subresource on gen7
  intel/isl: Only create a CCS buffer if the image supports rendering
  intel/isl: Add surface state clear value information
  anv: Add color auxiliary buffer helpers
  anv/image: Append CCS/MCS with a clear value buffer
  anv/image: Remove incorrect assertion in anv_BindImage
  anv/image: Initialize the clear values buffer
  anv/cmd_buffer: Always enable CCS_D in render passes
  anv/cmd_buffer: Don't partially fast-clear image layers
  anv/cmd_buffer: Disable fast clears in the GENERAL layout
  anv/cmd_buffer: Ensure the fast clear values are correct
  anv/gpu_memcpy: Add a lighter-weight memcpy path
  blorp/clear: Add a binding-table-based CCS resolve function
  anv/blorp: Add a surface-state-based CCS resolve function
  anv/cmd_buffer: Adjust the image view reloc function
  anv/cmd_buffer: Add transition_color_buffer()
  anv: Add anv_get_sliceCount()
  anv/cmd_buffer: Perform color buffer layout transitions
  anv/blorp: Stop resolving CCS implicitly
  anv/pass: Get rid of anv_subpass_usage
  intel/blorp: Allow BLORP calls to be predicated
  anv: Predicate fast-clear resolves

 src/intel/blorp/blorp.h            |  12 +
 src/intel/blorp/blorp_clear.c      |  64 +++--
 src/intel/blorp/blorp_genX_exec.h  |   3 +
 src/intel/isl/isl.c                |  20 +-
 src/intel/isl/isl.h                |   4 +
 src/intel/vulkan/anv_blorp.c       | 188 +++-----------
 src/intel/vulkan/anv_image.c       | 153 ++++++++++-
 src/intel/vulkan/anv_pass.c        |  36 ++-
 src/intel/vulkan/anv_private.h     |  68 ++++-
 src/intel/vulkan/genX_cmd_buffer.c | 507 ++++++++++++++++++++++++++++++-------
 src/intel/vulkan/genX_gpu_memcpy.c |  38 +++
 11 files changed, 801 insertions(+), 292 deletions(-)

-- 
2.12.2



More information about the mesa-dev mailing list