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

2017-05-03 Thread Jason Ekstrand
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 
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 
>
> 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
>
>
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


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

2017-04-27 Thread Nanley Chery
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 

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

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev