[Mesa-dev] [PATCH 00/22] anv: Move CCS resolves to layout transitions
Jason Ekstrand
jason at jlekstrand.net
Wed May 3 22:45:04 UTC 2017
Ok, I must say I'm a bit impressed. This series is a bit nuts but you
pulled it off with style. I don't think any hardware designers ever
intended for resolves to be done this way but it seems to work out really
well. Good work! I've sent a variety of comments throughout the series
but no reviews yet because I think there will probably be a v2.
On Thu, Apr 27, 2017 at 11:31 AM, Nanley Chery <nanleychery at gmail.com>
wrote:
> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170503/436ea35d/attachment.html>
More information about the mesa-dev
mailing list