[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