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