<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>