tu: Add missing storage image/texel buffer bits
authorConnor Abbott <cwabbott0@gmail.com>
Tue, 19 May 2020 15:37:26 +0000 (17:37 +0200)
committerMarge Bot <eric+marge@anholt.net>
Tue, 26 May 2020 11:16:09 +0000 (11:16 +0000)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5122>

src/freedreno/vulkan/tu_formats.c

index 8ecdbdbdc90a8ba7d94c22eafb381c338fc68534..a7d2d31bd6df197d319e6627a7e99acce24c11f0 100644 (file)
@@ -418,6 +418,26 @@ tu_physical_device_get_format_properties(
       optimal |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
                  VK_FORMAT_FEATURE_BLIT_DST_BIT;
 
+      /* IBO's don't have a swap field at all, so swapped formats can't be
+       * supported, even with linear images.
+       *
+       * TODO: See if setting the swap field from the tex descriptor works,
+       * after we enable shaderStorageImageReadWithoutFormat and there are
+       * tests for these formats.
+       */
+      if (native_fmt.swap == WZYX) {
+         optimal |= VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT;
+         buffer |= VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT;
+      }
+
+      /* TODO: The blob also exposes these for R16G16_UINT/R16G16_SINT, but we
+       * don't have any tests for those.
+       */
+      if (format == VK_FORMAT_R32_UINT || format == VK_FORMAT_R32_SINT) {
+         optimal |= VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT;
+         buffer |= VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT;
+      }
+
       if (vk_format_is_float(format) ||
           vk_format_is_unorm(format) ||
           vk_format_is_snorm(format) ||