Module: Mesa
Branch: staging/23.1
Commit: 033738b6deb1c91fc1bc17438610836976c12c9e
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=033738b6deb1c91fc1bc17438610836976c12c9e

Author: Samuel Pitoiset <[email protected]>
Date:   Thu Apr 13 10:28:52 2023 +0200

radv: disable fast-clears with CMASK for 128-bit formats

This isn't supported according to RadeonSI.

This fixes a piglit test with Zink that uses a R32G32B32A32_SINT format
with MSAA 8x. This is because DCC fast-clears with MSAA require to
clear CMASK too.

Cc: mesa-stable
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7313
Signed-off-by: Samuel Pitoiset <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22462>
(cherry picked from commit 0d7912d239dac5bf3c8b07f2a6ca467f760d6aa6)

---

 .pick_status.json                                       | 2 +-
 src/amd/vulkan/radv_image.c                             | 4 ++++
 src/gallium/drivers/zink/ci/zink-radv-navi10-fails.txt  | 1 -
 src/gallium/drivers/zink/ci/zink-radv-vangogh-fails.txt | 1 -
 4 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/.pick_status.json b/.pick_status.json
index 05b767c89e5..408df0e5450 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -4,7 +4,7 @@
         "description": "radv: disable fast-clears with CMASK for 128-bit 
formats",
         "nominated": true,
         "nomination_type": 0,
-        "resolution": 0,
+        "resolution": 1,
         "main_sha": null,
         "because_sha": null
     },
diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c
index 2dca1dec417..4b11c6ebf90 100644
--- a/src/amd/vulkan/radv_image.c
+++ b/src/amd/vulkan/radv_image.c
@@ -1638,6 +1638,10 @@ radv_image_can_fast_clear(const struct radv_device 
*device, const struct radv_im
       /* RB+ doesn't work with CMASK fast clear on Stoney. */
       if (!radv_image_has_dcc(image) && 
device->physical_device->rad_info.family == CHIP_STONEY)
          return false;
+
+      /* Fast-clears with CMASK aren't supported for 128-bit formats. */
+      if (radv_image_has_cmask(image) && 
vk_format_get_blocksizebits(image->vk.format) > 64)
+         return false;
    } else {
       if (!radv_image_has_htile(image))
          return false;
diff --git a/src/gallium/drivers/zink/ci/zink-radv-navi10-fails.txt 
b/src/gallium/drivers/zink/ci/zink-radv-navi10-fails.txt
index 1e2c4a90dba..fed90b6216b 100644
--- a/src/gallium/drivers/zink/ci/zink-radv-navi10-fails.txt
+++ b/src/gallium/drivers/zink/ci/zink-radv-navi10-fails.txt
@@ -391,7 +391,6 @@ spec@egl_nok_texture_from_pixmap@basic,Timeout
 spec@ext_image_dma_buf_import@ext_image_dma_buf_import-sample_yuv420,Fail
 spec@ext_image_dma_buf_import@ext_image_dma_buf_import-sample_yvu420,Fail
 
spec@ext_image_dma_buf_import@ext_image_dma_buf_import-transcode-nv12-as-r8-gr88,Fail
-spec@ext_texture_integer@multisample-fast-clear gl_ext_texture_integer,Fail
 spec@ext_texture_srgb@fbo-generatemipmap-formats,Fail
 spec@ext_texture_srgb@fbo-generatemipmap-formats-s3tc,Fail
 
spec@ext_texture_srgb@fbo-generatemipmap-formats-s3tc@GL_COMPRESSED_SLUMINANCE_ALPHA,Fail
diff --git a/src/gallium/drivers/zink/ci/zink-radv-vangogh-fails.txt 
b/src/gallium/drivers/zink/ci/zink-radv-vangogh-fails.txt
index 34bb8784a0d..9d09fd5e96b 100644
--- a/src/gallium/drivers/zink/ci/zink-radv-vangogh-fails.txt
+++ b/src/gallium/drivers/zink/ci/zink-radv-vangogh-fails.txt
@@ -388,7 +388,6 @@ spec@egl_nok_texture_from_pixmap@basic,Timeout
 spec@ext_image_dma_buf_import@ext_image_dma_buf_import-sample_yuv420,Fail
 spec@ext_image_dma_buf_import@ext_image_dma_buf_import-sample_yvu420,Fail
 
spec@ext_image_dma_buf_import@ext_image_dma_buf_import-transcode-nv12-as-r8-gr88,Fail
-spec@ext_texture_integer@multisample-fast-clear gl_ext_texture_integer,Fail
 spec@ext_texture_srgb@fbo-generatemipmap-formats,Fail
 spec@ext_texture_srgb@fbo-generatemipmap-formats-s3tc,Fail
 
spec@ext_texture_srgb@fbo-generatemipmap-formats-s3tc@GL_COMPRESSED_SLUMINANCE_ALPHA,Fail

Reply via email to