Module: Mesa
Branch: main
Commit: 25a32433b13a329e8e510ce6328fa92f35f244c6
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=25a32433b13a329e8e510ce6328fa92f35f244c6

Author: Tapani Pälli <tapani.pa...@intel.com>
Date:   Mon Dec 11 10:03:51 2023 +0200

anv: use slow clear for small surfaces with Wa_18020603990

Described in Wa_18020603990, we need to use slow clear or add an
partial resolve after fast clear for surfaces where bpp <= 32 and
dim <= 256x256.

Signed-off-by: Tapani Pälli <tapani.pa...@intel.com>
Reviewed-by: Nanley Chery <nanley.g.ch...@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26629>

---

 src/intel/vulkan/anv_image.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c
index 5ba57beebe9..5287b5bfeff 100644
--- a/src/intel/vulkan/anv_image.c
+++ b/src/intel/vulkan/anv_image.c
@@ -3269,6 +3269,16 @@ anv_can_fast_clear_color_view(struct anv_device *device,
                     "LOAD_OP_CLEAR.  Only fast-clearing the first slice");
    }
 
+   /* Wa_18020603990 - slow clear surfaces up to 256x256, 32bpp. */
+   if (intel_needs_workaround(device->info, 18020603990)) {
+      const struct anv_surface *anv_surf =
+         &iview->image->planes->primary_surface;
+      if (isl_format_get_layout(anv_surf->isl.format)->bpb <= 32 &&
+          anv_surf->isl.logical_level0_px.w <= 256 &&
+          anv_surf->isl.logical_level0_px.h <= 256)
+         return false;
+   }
+
    return true;
 }
 

Reply via email to