anv: Use blorp_ccs_ambiguate instead of fast-clears
authorJason Ekstrand <jason.ekstrand@intel.com>
Tue, 28 Nov 2017 02:09:48 +0000 (18:09 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Fri, 9 Feb 2018 00:35:31 +0000 (16:35 -0800)
commitf0523f70ef4e3788a4510581c641dcea51640417
tree6e44368d65103ffb4677f7855b09a264f1787a4a
parent84fd2ebfbcd743840a173a2e8b4268991e0fcc78
anv: Use blorp_ccs_ambiguate instead of fast-clears

Even though the blorp pass looks a bit on the sketchy side, the end
result in the Vulkan driver is very nice.  Instead of having this weird
case where you do a fast clear and then maybe have to resolve, we just
do the ambiguate and are done with it.  The ambiguate does exactly what
we want of setting all the CCS values to 0 which puts it into the
pass-through state.

This should also improve performance a bit in certain cases.  For
instance, if we did a transition from UNDEFINED to GENERAL for a surface
that doesn't have CCS enabled all the time, we would end up doing a
fast-clear and then a full resolve which ends up touching every byte in
the main surface as well as the CCS.  With the ambiguate pass, that
transition only touches the CCS.

Reviewed-by: Nanley Chery <nanley.g.chery@intel.com>
src/intel/vulkan/anv_blorp.c
src/intel/vulkan/genX_cmd_buffer.c