From 89f78cf333a06384728627e9755d1a9b2e3370d7 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Fri, 23 Feb 2018 21:12:50 -0800 Subject: [PATCH] anv: Enable MSAA fast-clears MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This speeds up the Sascha Willems multisampling demo by around 25% when using 8x or 16x MSAA. Reviewed-by: Samuel Iglesias Gonsálvez --- src/intel/vulkan/anv_image.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c index a2bae7b3827..922c46936a1 100644 --- a/src/intel/vulkan/anv_image.c +++ b/src/intel/vulkan/anv_image.c @@ -952,8 +952,10 @@ anv_layout_to_fast_clear_type(const struct gen_device_info * const devinfo, assert(image->aspects & VK_IMAGE_ASPECT_ANY_COLOR_BIT_ANV); - /* Multisample fast-clear is not yet supported. */ - if (image->samples > 1) + /* We don't support MSAA fast-clears on Ivybridge or Bay Trail because they + * lack the MI ALU which we need to determine the predicates. + */ + if (devinfo->gen == 7 && !devinfo->is_haswell && image->samples > 1) return ANV_FAST_CLEAR_NONE; switch (layout) { @@ -964,12 +966,13 @@ anv_layout_to_fast_clear_type(const struct gen_device_info * const devinfo, return ANV_FAST_CLEAR_NONE; default: - /* If the image has CCS_E enabled all the time then we can use + /* 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. */ - if (image->planes[plane].aux_usage == ISL_AUX_USAGE_CCS_E) + if (image->planes[plane].aux_usage == ISL_AUX_USAGE_MCS || + image->planes[plane].aux_usage == ISL_AUX_USAGE_CCS_E) return ANV_FAST_CLEAR_DEFAULT_VALUE; else return ANV_FAST_CLEAR_NONE; -- 2.30.2