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 <nanleych...@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 <ja...@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 > >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev