From: Dave Airlie <airl...@redhat.com>

From AMDVLK fast clears don't work with cmask on gfx9, only with
dcc, so we don't need to allocate cmask for single sampled surfaces.

Signed-off-by: Dave Airlie <airl...@redhat.com>
---
 src/amd/vulkan/radv_image.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c
index efd17e4889..612fb1d791 100644
--- a/src/amd/vulkan/radv_image.c
+++ b/src/amd/vulkan/radv_image.c
@@ -834,7 +834,7 @@ radv_image_can_enable_dcc(struct radv_image *image)
 }
 
 static inline bool
-radv_image_can_enable_cmask(struct radv_image *image)
+radv_image_can_enable_cmask(struct radv_image *image, bool is_gfx9)
 {
        if (image->surface.bpe > 8 && image->info.samples == 1) {
                /* Do not enable CMASK for non-MSAA images (fast color clear)
@@ -844,6 +844,12 @@ radv_image_can_enable_cmask(struct radv_image *image)
                return false;
        }
 
+       if (is_gfx9 && image->info.samples == 1) {
+               /* amdvlk - GFX9 only supports fast color clears using DCC 
memory; having cMask does nothing for fast-clears.
+                  - we just enable it for multisample cases then. */
+               return false;
+       }
+
        return radv_image_can_enable_dcc_or_cmask(image) &&
               image->info.levels == 1 &&
               image->info.depth == 1 &&
@@ -926,7 +932,7 @@ radv_image_create(VkDevice _device,
        } else {
                /* When DCC cannot be enabled, try CMASK. */
                image->surface.dcc_size = 0;
-               if (radv_image_can_enable_cmask(image)) {
+               if (radv_image_can_enable_cmask(image, 
device->physical_device->rad_info.chip_class >= GFX9)) {
                        radv_image_alloc_cmask(device, image);
                }
        }
-- 
2.14.3

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to