v3dv: don't expose image load/store features for linear images
authorIago Toral Quiroga <itoral@igalia.com>
Tue, 15 Mar 2022 08:44:27 +0000 (09:44 +0100)
committerMarge Bot <emma+marge@anholt.net>
Fri, 18 Mar 2022 13:17:58 +0000 (13:17 +0000)
Reviewed-by: Alejandro PiƱeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15342>

src/broadcom/vulkan/v3dv_formats.c

index e1dcd25..e6557cb 100644 (file)
@@ -181,15 +181,17 @@ image_format_features(struct v3dv_physical_device *pdevice,
       vk_format_description(vk_format);
    assert(desc);
 
-   if (desc->layout == UTIL_FORMAT_LAYOUT_PLAIN && desc->is_array) {
-      flags |= VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT;
-      if (desc->nr_channels == 1 && vk_format_is_int(vk_format))
-         flags |= VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT;
-   } else if (vk_format == VK_FORMAT_A2B10G10R10_UNORM_PACK32 ||
-              vk_format == VK_FORMAT_A2B10G10R10_UINT_PACK32 ||
-              vk_format == VK_FORMAT_B10G11R11_UFLOAT_PACK32) {
-      /* To comply with shaderStorageImageExtendedFormats */
-      flags |= VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT;
+   if (tiling != VK_IMAGE_TILING_LINEAR) {
+      if (desc->layout == UTIL_FORMAT_LAYOUT_PLAIN && desc->is_array) {
+         flags |= VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT;
+         if (desc->nr_channels == 1 && vk_format_is_int(vk_format))
+            flags |= VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT;
+      } else if (vk_format == VK_FORMAT_A2B10G10R10_UNORM_PACK32 ||
+                 vk_format == VK_FORMAT_A2B10G10R10_UINT_PACK32 ||
+                 vk_format == VK_FORMAT_B10G11R11_UFLOAT_PACK32) {
+         /* To comply with shaderStorageImageExtendedFormats */
+         flags |= VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT;
+      }
    }
 
    if (flags) {