<div dir="ltr">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.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Apr 27, 2017 at 11:31 AM, Nanley Chery <span dir="ltr"><<a href="mailto:nanleychery@gmail.com" target="_blank">nanleychery@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Resolves of CCS-enabled image subresources are currently tied to the<br>
scope of a subpass. This can cause us to lose clear data compression<br>
prematurely in some cases. For example, an application can record a<br>
render pass that only clears followed by another render pass that only<br>
draws. The driver would do a fast-clear then immediately resolve the<br>
color buffers before the second render pass.<br>
<br>
This series instead ties the lifetime of clear data compression to the<br>
scope of the image layout. In the above example, the application would<br>
presumably keep the image in the<br>
VK_IMAGE_LAYOUT_COLOR_<wbr>ATTACHMENT_OPTIMAL layout across both render<br>
passes and so the driver would avoid the intermediate resolve.<br>
<br>
----<br>
<br>
This series improves the average frame rate of a Dota 2 benchmark by<br>
3.04% on my SKL GT4. The frame rates are now similar to those seen when<br>
running it with INTEL_DEBUG=norbc. The benchmark was run three times at<br>
1080p in release mode.<br>
<br>
Six tests in dEQP-VK.geometry.layered.3d.* now fail, but I've attributed<br>
the failures to a test bug and filed a bug report.<br>
<br>
----<br>
<br>
Cc: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br>
<br>
Nanley Chery (22):<br>
  intel/isl: Limit CCS to one subresource on gen7<br>
  intel/isl: Only create a CCS buffer if the image supports rendering<br>
  intel/isl: Add surface state clear value information<br>
  anv: Add color auxiliary buffer helpers<br>
  anv/image: Append CCS/MCS with a clear value buffer<br>
  anv/image: Remove incorrect assertion in anv_BindImage<br>
  anv/image: Initialize the clear values buffer<br>
  anv/cmd_buffer: Always enable CCS_D in render passes<br>
  anv/cmd_buffer: Don't partially fast-clear image layers<br>
  anv/cmd_buffer: Disable fast clears in the GENERAL layout<br>
  anv/cmd_buffer: Ensure the fast clear values are correct<br>
  anv/gpu_memcpy: Add a lighter-weight memcpy path<br>
  blorp/clear: Add a binding-table-based CCS resolve function<br>
  anv/blorp: Add a surface-state-based CCS resolve function<br>
  anv/cmd_buffer: Adjust the image view reloc function<br>
  anv/cmd_buffer: Add transition_color_buffer()<br>
  anv: Add anv_get_sliceCount()<br>
  anv/cmd_buffer: Perform color buffer layout transitions<br>
  anv/blorp: Stop resolving CCS implicitly<br>
  anv/pass: Get rid of anv_subpass_usage<br>
  intel/blorp: Allow BLORP calls to be predicated<br>
  anv: Predicate fast-clear resolves<br>
<br>
 src/intel/blorp/blorp.h            |  12 +<br>
 src/intel/blorp/blorp_clear.c      |  64 +++--<br>
 src/intel/blorp/blorp_genX_<wbr>exec.h  |   3 +<br>
 src/intel/isl/isl.c                |  20 +-<br>
 src/intel/isl/isl.h                |   4 +<br>
 src/intel/vulkan/anv_blorp.c       | 188 +++-----------<br>
 src/intel/vulkan/anv_image.c       | 153 ++++++++++-<br>
 src/intel/vulkan/anv_pass.c        |  36 ++-<br>
 src/intel/vulkan/anv_private.h     |  68 ++++-<br>
 src/intel/vulkan/genX_cmd_<wbr>buffer.c | 507 ++++++++++++++++++++++++++++++<wbr>-------<br>
 src/intel/vulkan/genX_gpu_<wbr>memcpy.c |  38 +++<br>
 11 files changed, 801 insertions(+), 292 deletions(-)<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
2.12.2<br>
<br>
</font></span></blockquote></div><br></div>