Mesa (main): radv: switch to VK_FORMAT_FEATURE_2_XXX/VkFormatProperties3KHR

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Oct 12 10:58:28 UTC 2021


Module: Mesa
Branch: main
Commit: 5dee0d9da961b9a027910ce7e8e16a2f849d9b8d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5dee0d9da961b9a027910ce7e8e16a2f849d9b8d

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Tue Aug 17 08:56:02 2021 +0200

radv: switch to VK_FORMAT_FEATURE_2_XXX/VkFormatProperties3KHR

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13194>

---

 src/amd/vulkan/radv_formats.c | 147 ++++++++++++++++++++++++------------------
 1 file changed, 85 insertions(+), 62 deletions(-)

diff --git a/src/amd/vulkan/radv_formats.c b/src/amd/vulkan/radv_formats.c
index a63d09bd28f..429f462cfdd 100644
--- a/src/amd/vulkan/radv_formats.c
+++ b/src/amd/vulkan/radv_formats.c
@@ -36,6 +36,7 @@
 #include "util/format_srgb.h"
 #include "util/half_float.h"
 #include "vulkan/util/vk_format.h"
+#include "vulkan/util/vk_enum_defines.h"
 
 uint32_t
 radv_translate_buffer_dataformat(const struct util_format_description *desc, int first_non_void)
@@ -605,9 +606,9 @@ radv_is_filter_minmax_format_supported(VkFormat format)
    /* From the Vulkan spec 1.1.71:
     *
     * "The following formats must support the
-    *  VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT feature with
+    *  VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR feature with
     *  VK_IMAGE_TILING_OPTIMAL, if they support
-    *  VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT."
+    *  VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR."
     */
    /* TODO: enable more formats. */
    switch (format) {
@@ -640,9 +641,9 @@ radv_device_supports_etc(struct radv_physical_device *physical_device)
 
 static void
 radv_physical_device_get_format_properties(struct radv_physical_device *physical_device,
-                                           VkFormat format, VkFormatProperties *out_properties)
+                                           VkFormat format, VkFormatProperties3KHR *out_properties)
 {
-   VkFormatFeatureFlags linear = 0, tiled = 0, buffer = 0;
+   VkFormatFeatureFlags2KHR linear = 0, tiled = 0, buffer = 0;
    const struct util_format_description *desc = vk_format_description(format);
    bool blendable;
    bool scaled = false;
@@ -663,14 +664,15 @@ radv_physical_device_get_format_properties(struct radv_physical_device *physical
    }
 
    if (vk_format_get_plane_count(format) > 1 || desc->layout == UTIL_FORMAT_LAYOUT_SUBSAMPLED) {
-      uint32_t tiling = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT | VK_FORMAT_FEATURE_TRANSFER_DST_BIT |
-                        VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT |
-                        VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT |
-                        VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT;
+      uint64_t tiling = VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR |
+                        VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR |
+                        VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR |
+                        VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR |
+                        VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR;
 
       /* The subsampled formats have no support for linear filters. */
       if (desc->layout != UTIL_FORMAT_LAYOUT_SUBSAMPLED) {
-         tiling |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT;
+         tiling |= VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR;
       }
 
       /* Fails for unknown reasons with linear tiling & subsampled formats. */
@@ -682,35 +684,35 @@ radv_physical_device_get_format_properties(struct radv_physical_device *physical
    }
 
    if (radv_is_storage_image_format_supported(physical_device, format)) {
-      tiled |= VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT;
-      linear |= VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT;
+      tiled |= VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR;
+      linear |= VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR;
    }
 
    if (radv_is_buffer_format_supported(format, &scaled)) {
       if (format != VK_FORMAT_R64_UINT && format != VK_FORMAT_R64_SINT) {
-         buffer |= VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT;
+         buffer |= VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR;
          if (!scaled)
-            buffer |= VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT;
+            buffer |= VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR;
       }
-      buffer |= VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT;
+      buffer |= VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR;
    }
 
    if (vk_format_is_depth_or_stencil(format)) {
       if (radv_is_zs_format_supported(format)) {
-         tiled |= VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT;
-         tiled |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT;
-         tiled |= VK_FORMAT_FEATURE_BLIT_SRC_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT;
-         tiled |= VK_FORMAT_FEATURE_TRANSFER_SRC_BIT | VK_FORMAT_FEATURE_TRANSFER_DST_BIT;
+         tiled |= VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR;
+         tiled |= VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR;
+         tiled |= VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR | VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR;
+         tiled |= VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR | VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR;
 
          if (radv_is_filter_minmax_format_supported(format))
-            tiled |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT;
+            tiled |= VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR;
 
          if (vk_format_has_depth(format))
-            tiled |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT;
+            tiled |= VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR;
 
          /* Don't support blitting surfaces with depth/stencil. */
          if (vk_format_has_depth(format) && vk_format_has_stencil(format))
-            tiled &= ~VK_FORMAT_FEATURE_BLIT_DST_BIT;
+            tiled &= ~VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR;
 
          /* Don't support linear depth surfaces */
          linear = 0;
@@ -718,33 +720,33 @@ radv_physical_device_get_format_properties(struct radv_physical_device *physical
    } else {
       bool linear_sampling;
       if (radv_is_sampler_format_supported(format, &linear_sampling)) {
-         linear |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT;
-         tiled |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT;
+         linear |= VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR | VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR;
+         tiled |= VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR | VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR;
 
          if (radv_is_filter_minmax_format_supported(format))
-            tiled |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT;
+            tiled |= VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR;
 
          if (linear_sampling) {
-            linear |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT;
-            tiled |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT;
+            linear |= VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR;
+            tiled |= VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR;
          }
 
          /* Don't support blitting for R32G32B32 formats. */
          if (format == VK_FORMAT_R32G32B32_SFLOAT || format == VK_FORMAT_R32G32B32_UINT ||
              format == VK_FORMAT_R32G32B32_SINT) {
-            linear &= ~VK_FORMAT_FEATURE_BLIT_SRC_BIT;
+            linear &= ~VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR;
          }
       }
       if (radv_is_colorbuffer_format_supported(physical_device, format, &blendable)) {
-         linear |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT;
-         tiled |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT;
+         linear |= VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR | VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR;
+         tiled |= VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR | VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR;
          if (blendable) {
-            linear |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT;
-            tiled |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT;
+            linear |= VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR;
+            tiled |= VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR;
          }
       }
       if (tiled && !scaled) {
-         tiled |= VK_FORMAT_FEATURE_TRANSFER_SRC_BIT | VK_FORMAT_FEATURE_TRANSFER_DST_BIT;
+         tiled |= VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR | VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR;
       }
 
       /* Tiled formatting does not support NPOT pixel sizes */
@@ -753,13 +755,13 @@ radv_physical_device_get_format_properties(struct radv_physical_device *physical
    }
 
    if (linear && !scaled) {
-      linear |= VK_FORMAT_FEATURE_TRANSFER_SRC_BIT | VK_FORMAT_FEATURE_TRANSFER_DST_BIT;
+      linear |= VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR | VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR;
    }
 
    if (radv_is_atomic_format_supported(format)) {
-      buffer |= VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT;
-      linear |= VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT;
-      tiled |= VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT;
+      buffer |= VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR;
+      linear |= VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR;
+      tiled |= VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR;
    }
 
    switch (format) {
@@ -770,7 +772,7 @@ radv_physical_device_get_format_properties(struct radv_physical_device *physical
    case VK_FORMAT_A2R10G10B10_SINT_PACK32:
    case VK_FORMAT_A2B10G10R10_SINT_PACK32:
       buffer &=
-         ~(VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT | VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT);
+         ~(VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR | VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR);
       linear = 0;
       tiled = 0;
       break;
@@ -788,7 +790,7 @@ radv_physical_device_get_format_properties(struct radv_physical_device *physical
    case VK_FORMAT_R16G16_SNORM:
    case VK_FORMAT_R16G16B16A16_SNORM:
    case VK_FORMAT_R16G16B16A16_UNORM:
-      buffer |= VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR;
+      buffer |= VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR;
       break;
    default:
       break;
@@ -799,13 +801,13 @@ radv_physical_device_get_format_properties(struct radv_physical_device *physical
 
    /* From the Vulkan spec 1.2.163:
     *
-    * "VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR must be supported for the
+    * "VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR must be supported for the
     *  following formats if the attachmentFragmentShadingRate feature is supported:"
     *
     * - VK_FORMAT_R8_UINT
     */
    if (format == VK_FORMAT_R8_UINT) {
-      tiled |= VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR;
+      tiled |= VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR;
    }
 
    out_properties->linearTilingFeatures = linear;
@@ -1123,11 +1125,11 @@ static const struct ac_modifier_options radv_modifier_options = {
    .dcc_retile = true,
 };
 
-static VkFormatFeatureFlags
+static VkFormatFeatureFlags2KHR
 radv_get_modifier_flags(struct radv_physical_device *dev, VkFormat format, uint64_t modifier,
-                        const VkFormatProperties *props)
+                        const VkFormatProperties3KHR *props)
 {
-   VkFormatFeatureFlags features;
+   VkFormatFeatureFlags2KHR features;
 
    if (vk_format_is_compressed(format) || vk_format_is_depth_or_stencil(format))
       return 0;
@@ -1142,7 +1144,7 @@ radv_get_modifier_flags(struct radv_physical_device *dev, VkFormat format, uint6
        * do not support DCC image stores.
        */
       if (!ac_modifier_supports_dcc_image_stores(modifier) || radv_is_atomic_format_supported(format))
-         features &= ~VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT;
+         features &= ~VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR;
 
       if (dev->instance->debug_flags & (RADV_DEBUG_NO_DCC | RADV_DEBUG_NO_DISPLAY_DCC))
          return 0;
@@ -1151,6 +1153,12 @@ radv_get_modifier_flags(struct radv_physical_device *dev, VkFormat format, uint6
    return features;
 }
 
+static VkFormatFeatureFlags
+features2_to_features(VkFormatFeatureFlags2KHR features2)
+{
+   return features2 & VK_ALL_FORMAT_FEATURE_FLAG_BITS;
+}
+
 static void
 radv_list_drm_format_modifiers(struct radv_physical_device *dev, VkFormat format,
                                VkFormatProperties2 *pFormatProperties)
@@ -1187,8 +1195,9 @@ radv_list_drm_format_modifiers(struct radv_physical_device *dev, VkFormat format
 
    mod_list->drmFormatModifierCount = 0;
    for (unsigned i = 0; i < mod_count; ++i) {
-      VkFormatFeatureFlags features =
-         radv_get_modifier_flags(dev, format, mods[i], &pFormatProperties->formatProperties);
+      VkFormatProperties3KHR format_props;
+      VkFormatFeatureFlags2KHR features =
+         radv_get_modifier_flags(dev, format, mods[i], &format_props);
       unsigned planes = vk_format_get_plane_count(format);
       if (planes == 1) {
          if (ac_modifier_has_dcc_retile(mods[i]))
@@ -1197,6 +1206,13 @@ radv_list_drm_format_modifiers(struct radv_physical_device *dev, VkFormat format
             planes = 2;
       }
 
+      pFormatProperties->formatProperties.linearTilingFeatures =
+         features2_to_features(format_props.linearTilingFeatures);
+      pFormatProperties->formatProperties.optimalTilingFeatures =
+         features2_to_features(format_props.optimalTilingFeatures);
+      pFormatProperties->formatProperties.bufferFeatures =
+         features2_to_features(format_props.bufferFeatures);
+
       if (!features)
          continue;
 
@@ -1205,7 +1221,7 @@ radv_list_drm_format_modifiers(struct radv_physical_device *dev, VkFormat format
       mod_list->pDrmFormatModifierProperties[mod_list->drmFormatModifierCount]
          .drmFormatModifierPlaneCount = planes;
       mod_list->pDrmFormatModifierProperties[mod_list->drmFormatModifierCount]
-         .drmFormatModifierTilingFeatures = features;
+         .drmFormatModifierTilingFeatures = features2_to_features(features);
 
       ++mod_list->drmFormatModifierCount;
    }
@@ -1295,9 +1311,16 @@ radv_GetPhysicalDeviceFormatProperties2(VkPhysicalDevice physicalDevice, VkForma
                                         VkFormatProperties2 *pFormatProperties)
 {
    RADV_FROM_HANDLE(radv_physical_device, physical_device, physicalDevice);
+   VkFormatProperties3KHR format_props;
+
+   radv_physical_device_get_format_properties(physical_device, format, &format_props);
 
-   radv_physical_device_get_format_properties(physical_device, format,
-                                              &pFormatProperties->formatProperties);
+   pFormatProperties->formatProperties.linearTilingFeatures =
+      features2_to_features(format_props.linearTilingFeatures);
+   pFormatProperties->formatProperties.optimalTilingFeatures =
+      features2_to_features(format_props.optimalTilingFeatures);
+   pFormatProperties->formatProperties.bufferFeatures =
+      features2_to_features(format_props.bufferFeatures);
 
    radv_list_drm_format_modifiers(physical_device, format, pFormatProperties);
 }
@@ -1308,8 +1331,8 @@ radv_get_image_format_properties(struct radv_physical_device *physical_device,
                                  VkImageFormatProperties *pImageFormatProperties)
 
 {
-   VkFormatProperties format_props;
-   VkFormatFeatureFlags format_feature_flags;
+   VkFormatProperties3KHR format_props;
+   VkFormatFeatureFlags2KHR format_feature_flags;
    VkExtent3D maxExtent;
    uint32_t maxMipLevels;
    uint32_t maxArraySize;
@@ -1378,8 +1401,8 @@ radv_get_image_format_properties(struct radv_physical_device *physical_device,
    }
 
    if (tiling == VK_IMAGE_TILING_OPTIMAL && info->type == VK_IMAGE_TYPE_2D &&
-       (format_feature_flags & (VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
-                                VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT)) &&
+       (format_feature_flags & (VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR |
+                                VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR)) &&
        !(info->flags & VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT) &&
        !(info->usage & VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR)) {
       sampleCounts |= VK_SAMPLE_COUNT_2_BIT | VK_SAMPLE_COUNT_4_BIT | VK_SAMPLE_COUNT_8_BIT;
@@ -1403,49 +1426,49 @@ radv_get_image_format_properties(struct radv_physical_device *physical_device,
        vk_format_get_blocksizebits(format) == 128 && vk_format_is_compressed(format) &&
        (info->flags & VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT) &&
        ((info->flags & VK_IMAGE_CREATE_EXTENDED_USAGE_BIT) ||
-        (info->usage & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT))) {
+        (info->usage & VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR))) {
       goto unsupported;
    }
 
    if (info->usage & VK_IMAGE_USAGE_SAMPLED_BIT) {
-      if (!(format_feature_flags & VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT)) {
+      if (!(format_feature_flags & VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR)) {
          goto unsupported;
       }
    }
 
    if (info->usage & VK_IMAGE_USAGE_STORAGE_BIT) {
-      if (!(format_feature_flags & VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT)) {
+      if (!(format_feature_flags & VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR)) {
          goto unsupported;
       }
    }
 
    if (info->usage & VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT) {
-      if (!(format_feature_flags & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT)) {
+      if (!(format_feature_flags & VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR)) {
          goto unsupported;
       }
    }
 
    if (info->usage & VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) {
-      if (!(format_feature_flags & VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT)) {
+      if (!(format_feature_flags & VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR)) {
          goto unsupported;
       }
    }
 
    if (info->usage & VK_IMAGE_USAGE_TRANSFER_SRC_BIT) {
-      if (!(format_feature_flags & VK_FORMAT_FEATURE_TRANSFER_SRC_BIT)) {
+      if (!(format_feature_flags & VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR)) {
          goto unsupported;
       }
    }
 
    if (info->usage & VK_IMAGE_USAGE_TRANSFER_DST_BIT) {
-      if (!(format_feature_flags & VK_FORMAT_FEATURE_TRANSFER_DST_BIT)) {
+      if (!(format_feature_flags & VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR)) {
          goto unsupported;
       }
    }
 
    if (info->usage & VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT) {
-      if (!(format_feature_flags & (VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
-                                    VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT))) {
+      if (!(format_feature_flags & (VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR |
+                                    VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR))) {
          goto unsupported;
       }
    }



More information about the mesa-commit mailing list