Module: Mesa Branch: master Commit: 76d2772472037b2b9922f748170bebbce0b2a1de URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=76d2772472037b2b9922f748170bebbce0b2a1de
Author: Jason Ekstrand <[email protected]> Date: Tue Mar 31 17:46:37 2020 -0500 anv: Allow all clear colors for texturing on Gen11+ Starting with Gen11, we have two indirect clear colors: An unconverted float/int version which is us used for rendering and a converted pixel value version which is used for texturing. Because the one used for texturing is stored as a single pixel of that color, it works no matter what format is being used. Because it's a simple HW indirect and doesn't involve copying surface states around, we can use it in the sampler without having to worry about surface states having out-of-date clear values. The result is that we can now allow any clear color when texturing. This cuts the number of resolves in a RenderDoc trace of Dota2 by 95% on Gen11+ (you read that right) and improves perf by 3.5%. It improves perf in a handful of other workloads by < 1%. Reviewed-by: Rafael Antognolli <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4393> --- src/intel/vulkan/anv_image.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c index 456fce1fc7f..19809884717 100644 --- a/src/intel/vulkan/anv_image.c +++ b/src/intel/vulkan/anv_image.c @@ -1604,12 +1604,20 @@ anv_layout_to_fast_clear_type(const struct gen_device_info * const devinfo, return ANV_FAST_CLEAR_ANY; } else if (image->planes[plane].aux_usage == ISL_AUX_USAGE_MCS || image->planes[plane].aux_usage == ISL_AUX_USAGE_CCS_E) { - /* If the image has MCS or CCS_E enabled all the time then we can use - * fast-clear as long as the clear color is the default value of zero - * since this is the default value we program into every surface - * state used for texturing. - */ - return ANV_FAST_CLEAR_DEFAULT_VALUE; + if (devinfo->gen >= 11) { + /* On ICL and later, the sampler hardware uses a copy of the clear + * value that is encoded as a pixel value. Therefore, we can use + * any clear color we like for sampling. + */ + return ANV_FAST_CLEAR_ANY; + } else { + /* If the image has MCS or CCS_E enabled all the time then we can + * use fast-clear as long as the clear color is the default value + * of zero since this is the default value we program into every + * surface state used for texturing. + */ + return ANV_FAST_CLEAR_DEFAULT_VALUE; + } } else { return ANV_FAST_CLEAR_NONE; } _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
