Mesa (main): anv: switch to use VkFormatFeatureFlags2KHR internally

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Oct 11 16:53:20 UTC 2021


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

Author: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Date:   Wed Jul  7 17:36:19 2021 +0300

anv: switch to use VkFormatFeatureFlags2KHR internally

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13198>

---

 src/intel/vulkan/anv_android.c |  13 ++-
 src/intel/vulkan/anv_formats.c | 179 ++++++++++++++++++++++-------------------
 src/intel/vulkan/anv_private.h |  12 +--
 3 files changed, 110 insertions(+), 94 deletions(-)

diff --git a/src/intel/vulkan/anv_android.c b/src/intel/vulkan/anv_android.c
index d974ffcd3e1..749e5feb33b 100644
--- a/src/intel/vulkan/anv_android.c
+++ b/src/intel/vulkan/anv_android.c
@@ -167,6 +167,12 @@ android_format_from_vk(unsigned vk_format)
    }
 }
 
+static VkFormatFeatureFlags
+features2_to_features(VkFormatFeatureFlags2KHR features2)
+{
+   return features2 & VK_ALL_FORMAT_FEATURE_FLAG_BITS;
+}
+
 static VkResult
 get_ahw_buffer_format_properties(
    VkDevice device_h,
@@ -207,9 +213,10 @@ get_ahw_buffer_format_properties(
    if (desc.usage & AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER)
       tiling = VK_IMAGE_TILING_LINEAR;
 
-   p->formatFeatures =
-      anv_get_image_format_features(&device->info, p->format, anv_format,
-                                    tiling, NULL);
+   VkFormatFeatureFlags2KHR features2 =
+      anv_get_image_format_features2(&device->info, p->format, anv_format,
+                                     tiling, NULL);
+   p->formatFeatures = features2_to_features(features2);
 
    /* "Images can be created with an external format even if the Android hardware
     *  buffer has a format which has an equivalent Vulkan format to enable
diff --git a/src/intel/vulkan/anv_formats.c b/src/intel/vulkan/anv_formats.c
index a9f18088357..75fff645d39 100644
--- a/src/intel/vulkan/anv_formats.c
+++ b/src/intel/vulkan/anv_formats.c
@@ -544,14 +544,14 @@ anv_get_format_aspect(const struct intel_device_info *devinfo,
 
 // Format capabilities
 
-VkFormatFeatureFlags
-anv_get_image_format_features(const struct intel_device_info *devinfo,
-                              VkFormat vk_format,
-                              const struct anv_format *anv_format,
-                              VkImageTiling vk_tiling,
-                              const struct isl_drm_modifier_info *isl_mod_info)
+VkFormatFeatureFlags2KHR
+anv_get_image_format_features2(const struct intel_device_info *devinfo,
+                               VkFormat vk_format,
+                               const struct anv_format *anv_format,
+                               VkImageTiling vk_tiling,
+                               const struct isl_drm_modifier_info *isl_mod_info)
 {
-   VkFormatFeatureFlags flags = 0;
+   VkFormatFeatureFlags2KHR flags = 0;
 
    if (anv_format == NULL)
       return 0;
@@ -566,18 +566,18 @@ anv_get_image_format_features(const struct intel_device_info *devinfo,
           vk_tiling == VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT)
          return 0;
 
-      flags |= VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT |
-               VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT |
-               VK_FORMAT_FEATURE_BLIT_SRC_BIT |
-               VK_FORMAT_FEATURE_BLIT_DST_BIT |
-               VK_FORMAT_FEATURE_TRANSFER_SRC_BIT |
-               VK_FORMAT_FEATURE_TRANSFER_DST_BIT;
+      flags |= VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR |
+               VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR |
+               VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR |
+               VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR |
+               VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR |
+               VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR;
 
       if (aspects & VK_IMAGE_ASPECT_DEPTH_BIT)
-         flags |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT;
+         flags |= VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR;
 
       if ((aspects & VK_IMAGE_ASPECT_DEPTH_BIT) && devinfo->ver >= 9)
-         flags |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT;
+         flags |= VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR;
 
       return flags;
    }
@@ -605,13 +605,13 @@ anv_get_image_format_features(const struct intel_device_info *devinfo,
       return 0;
 
    if (isl_format_supports_sampling(devinfo, plane_format.isl_format)) {
-      flags |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT;
+      flags |= VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR;
 
       if (devinfo->ver >= 9)
-         flags |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT;
+         flags |= VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR;
 
       if (isl_format_supports_filtering(devinfo, plane_format.isl_format))
-         flags |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT;
+         flags |= VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR;
    }
 
    /* We can render to swizzled formats.  However, if the alpha channel is
@@ -620,31 +620,31 @@ anv_get_image_format_features(const struct intel_device_info *devinfo,
     */
    if (isl_format_supports_rendering(devinfo, plane_format.isl_format) &&
        plane_format.swizzle.a == ISL_CHANNEL_SELECT_ALPHA) {
-      flags |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT;
+      flags |= VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR;
 
       if (isl_format_supports_alpha_blending(devinfo, plane_format.isl_format))
-         flags |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT;
+         flags |= VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR;
    }
 
    /* Load/store is determined based on base format.  This prevents RGB
     * formats from showing up as load/store capable.
     */
    if (isl_format_supports_typed_writes(devinfo, base_isl_format))
-      flags |= VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT;
+      flags |= VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR;
 
    if (base_isl_format == ISL_FORMAT_R32_SINT ||
        base_isl_format == ISL_FORMAT_R32_UINT ||
        base_isl_format == ISL_FORMAT_R32_FLOAT)
-      flags |= VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT;
+      flags |= VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR;
 
    if (flags) {
-      flags |= VK_FORMAT_FEATURE_BLIT_SRC_BIT |
-               VK_FORMAT_FEATURE_TRANSFER_SRC_BIT |
-               VK_FORMAT_FEATURE_TRANSFER_DST_BIT;
+      flags |= VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR |
+               VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR |
+               VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR;
 
       /* Blit destination requires rendering support. */
       if (isl_format_supports_rendering(devinfo, plane_format.isl_format))
-         flags |= VK_FORMAT_FEATURE_BLIT_DST_BIT;
+         flags |= VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR;
    }
 
    /* XXX: We handle 3-channel formats by switching them out for RGBX or
@@ -658,8 +658,8 @@ anv_get_image_format_features(const struct intel_device_info *devinfo,
        base_isl_format != ISL_FORMAT_UNSUPPORTED &&
        !util_is_power_of_two_or_zero(isl_format_layouts[base_isl_format].bpb) &&
        isl_format_rgb_to_rgbx(base_isl_format) == ISL_FORMAT_UNSUPPORTED) {
-      flags &= ~VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT;
-      flags &= ~VK_FORMAT_FEATURE_BLIT_DST_BIT;
+      flags &= ~VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR;
+      flags &= ~VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR;
    }
 
    if (anv_format->can_ycbcr) {
@@ -671,11 +671,11 @@ anv_get_image_format_features(const struct intel_device_info *devinfo,
           * sampler. The failures show a slightly out of range values on the
           * bottom left of the sampled image.
           */
-         flags |= VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT;
+         flags |= VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR;
       } else {
-         flags |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT |
-                  VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT |
-                  VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT;
+         flags |= VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR |
+                  VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR |
+                  VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR;
       }
 
       /* We can support cosited chroma locations when handle planes with our
@@ -684,20 +684,20 @@ anv_get_image_format_features(const struct intel_device_info *devinfo,
       for (unsigned p = 0; p < anv_format->n_planes; p++) {
          if (anv_format->planes[p].denominator_scales[0] > 1 ||
              anv_format->planes[p].denominator_scales[1] > 1) {
-            flags |= VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT;
+            flags |= VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR;
             break;
          }
       }
 
       if (anv_format->n_planes > 1)
-         flags |= VK_FORMAT_FEATURE_DISJOINT_BIT;
+         flags |= VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR;
 
-      const VkFormatFeatureFlags disallowed_ycbcr_image_features =
-         VK_FORMAT_FEATURE_BLIT_SRC_BIT |
-         VK_FORMAT_FEATURE_BLIT_DST_BIT |
-         VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
-         VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT |
-         VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT;
+      const VkFormatFeatureFlags2KHR disallowed_ycbcr_image_features =
+         VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR |
+         VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR |
+         VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR |
+         VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR |
+         VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR;
 
       flags &= ~disallowed_ycbcr_image_features;
    }
@@ -748,7 +748,7 @@ anv_get_image_format_features(const struct intel_device_info *devinfo,
 
       if (anv_format->n_planes > 1) {
          /* For simplicity, keep DISJOINT disabled for multi-planar format. */
-         flags &= ~VK_FORMAT_FEATURE_DISJOINT_BIT;
+         flags &= ~VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR;
 
          /* VK_ANDROID_external_memory_android_hardware_buffer in Virtio-GPU
           * Venus driver layers on top of VK_EXT_image_drm_format_modifier of
@@ -779,26 +779,26 @@ anv_get_image_format_features(const struct intel_device_info *devinfo,
           * eglCreateImage, we require that the dma_buf for the primary surface
           * and the dma_buf for its aux surface refer to the same bo.
           */
-         flags &= ~VK_FORMAT_FEATURE_DISJOINT_BIT;
+         flags &= ~VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR;
 
          /* When the hardware accesses a storage image, it bypasses the aux
           * surface. We could support storage access on images with aux
           * modifiers by resolving the aux surface prior to the storage access.
           */
-         flags &= ~VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT;
-         flags &= ~VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT;
+         flags &= ~VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR;
+         flags &= ~VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR;
       }
    }
 
    return flags;
 }
 
-static VkFormatFeatureFlags
-get_buffer_format_features(const struct intel_device_info *devinfo,
-                           VkFormat vk_format,
-                           const struct anv_format *anv_format)
+static VkFormatFeatureFlags2KHR
+get_buffer_format_features2(const struct intel_device_info *devinfo,
+                            VkFormat vk_format,
+                            const struct anv_format *anv_format)
 {
-   VkFormatFeatureFlags flags = 0;
+   VkFormatFeatureFlags2KHR flags = 0;
 
    if (anv_format == NULL)
       return 0;
@@ -819,20 +819,26 @@ get_buffer_format_features(const struct intel_device_info *devinfo,
 
    if (isl_format_supports_sampling(devinfo, isl_format) &&
        !isl_format_is_compressed(isl_format))
-      flags |= VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT;
+      flags |= VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR;
 
    if (isl_format_supports_vertex_fetch(devinfo, isl_format))
-      flags |= VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT;
+      flags |= VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR;
 
    if (isl_is_storage_image_format(isl_format))
-      flags |= VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT;
+      flags |= VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR;
 
    if (isl_format == ISL_FORMAT_R32_SINT || isl_format == ISL_FORMAT_R32_UINT)
-      flags |= VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT;
+      flags |= VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR;
 
    return flags;
 }
 
+static VkFormatFeatureFlags
+features2_to_features(VkFormatFeatureFlags2KHR features2)
+{
+   return features2 & VK_ALL_FORMAT_FEATURE_FLAG_BITS;
+}
+
 static void
 get_drm_format_modifier_properties_list(const struct anv_physical_device *physical_device,
                                         VkFormat vk_format,
@@ -845,10 +851,11 @@ get_drm_format_modifier_properties_list(const struct anv_physical_device *physic
                     &list->drmFormatModifierCount);
 
    isl_drm_modifier_info_for_each(isl_mod_info) {
-      VkFormatFeatureFlags features =
-         anv_get_image_format_features(devinfo, vk_format, anv_format,
-                                       VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT,
-                                       isl_mod_info);
+      VkFormatFeatureFlags2KHR features2 =
+         anv_get_image_format_features2(devinfo, vk_format, anv_format,
+                                        VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT,
+                                        isl_mod_info);
+      VkFormatFeatureFlags features = features2_to_features(features2);
       if (!features)
          continue;
 
@@ -877,15 +884,17 @@ void anv_GetPhysicalDeviceFormatProperties2(
 
    assert(pFormatProperties->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2);
 
+   VkFormatFeatureFlags2KHR linear2, optimal2, buffer2;
+   linear2 = anv_get_image_format_features2(devinfo, vk_format, anv_format,
+                                            VK_IMAGE_TILING_LINEAR, NULL);
+   optimal2 = anv_get_image_format_features2(devinfo, vk_format, anv_format,
+                                             VK_IMAGE_TILING_OPTIMAL, NULL);
+   buffer2 = get_buffer_format_features2(devinfo, vk_format, anv_format);
+
    pFormatProperties->formatProperties = (VkFormatProperties) {
-      .linearTilingFeatures =
-         anv_get_image_format_features(devinfo, vk_format, anv_format,
-                                       VK_IMAGE_TILING_LINEAR, NULL),
-      .optimalTilingFeatures =
-         anv_get_image_format_features(devinfo, vk_format, anv_format,
-                                       VK_IMAGE_TILING_OPTIMAL, NULL),
-      .bufferFeatures =
-         get_buffer_format_features(devinfo, vk_format, anv_format),
+      .linearTilingFeatures = features2_to_features(linear2),
+      .optimalTilingFeatures = features2_to_features(optimal2),
+      .bufferFeatures = features2_to_features(buffer2),
    };
 
    vk_foreach_struct(ext, pFormatProperties->pNext) {
@@ -909,7 +918,7 @@ anv_get_image_format_properties(
    VkImageFormatProperties *pImageFormatProperties,
    VkSamplerYcbcrConversionImageFormatProperties *pYcbcrImageFormatProperties)
 {
-   VkFormatFeatureFlags format_feature_flags;
+   VkFormatFeatureFlags2KHR format_feature_flags;
    VkExtent3D maxExtent;
    uint32_t maxMipLevels;
    uint32_t maxArraySize;
@@ -933,9 +942,9 @@ anv_get_image_format_properties(
    }
 
    assert(format->vk_format == info->format);
-   format_feature_flags = anv_get_image_format_features(devinfo, info->format,
-                                                        format, info->tiling,
-                                                        isl_mod_info);
+   format_feature_flags = anv_get_image_format_features2(devinfo, info->format,
+                                                         format, info->tiling,
+                                                         isl_mod_info);
 
    /* Remove the VkFormatFeatureFlags that are incompatible with any declared
     * image view format. (Removals are more likely to occur when a DRM format
@@ -945,11 +954,11 @@ anv_get_image_format_properties(
       for (uint32_t i = 0; i < format_list_info->viewFormatCount; ++i) {
          VkFormat vk_view_format = format_list_info->pViewFormats[i];
          const struct anv_format *anv_view_format = anv_get_format(vk_view_format);
-         VkFormatFeatureFlags view_format_features =
-            anv_get_image_format_features(devinfo, vk_view_format,
-                                          anv_view_format,
-                                          info->tiling,
-                                          isl_mod_info);
+         VkFormatFeatureFlags2KHR view_format_features =
+            anv_get_image_format_features2(devinfo, vk_view_format,
+                                           anv_view_format,
+                                           info->tiling,
+                                           isl_mod_info);
          format_feature_flags &= view_format_features;
       }
    }
@@ -1032,8 +1041,8 @@ anv_get_image_format_properties(
 
    if (info->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_STORAGE_BIT)) {
       sampleCounts = isl_device_get_sample_counts(&physical_device->isl_dev);
@@ -1042,33 +1051,33 @@ anv_get_image_format_properties(
    if (info->usage & (VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
                       VK_IMAGE_USAGE_TRANSFER_DST_BIT)) {
       /* Accept transfers on anything we can sample from or renderer to. */
-      if (!(format_feature_flags & (VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
-                                    VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT |
-                                    VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT))) {
+      if (!(format_feature_flags & (VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR |
+                                    VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR |
+                                    VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_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;
       }
    }
@@ -1078,11 +1087,11 @@ anv_get_image_format_properties(
        *
        *    If format is a multi-planar format, and if imageCreateFormatFeatures
        *    (as defined in Image Creation Limits) does not contain
-       *    VK_FORMAT_FEATURE_DISJOINT_BIT, then flags must not contain
+       *    VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR, then flags must not contain
        *    VK_IMAGE_CREATE_DISJOINT_BIT.
        */
       if (format->n_planes > 1 &&
-          !(format_feature_flags & VK_FORMAT_FEATURE_DISJOINT_BIT)) {
+          !(format_feature_flags & VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR)) {
          goto unsupported;
       }
 
diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
index 2ac3907627b..159ce4cc1c0 100644
--- a/src/intel/vulkan/anv_private.h
+++ b/src/intel/vulkan/anv_private.h
@@ -4437,12 +4437,12 @@ anv_rasterization_aa_mode(VkPolygonMode raster_mode,
    return false;
 }
 
-VkFormatFeatureFlags
-anv_get_image_format_features(const struct intel_device_info *devinfo,
-                              VkFormat vk_format,
-                              const struct anv_format *anv_format,
-                              VkImageTiling vk_tiling,
-                              const struct isl_drm_modifier_info *isl_mod_info);
+VkFormatFeatureFlags2KHR
+anv_get_image_format_features2(const struct intel_device_info *devinfo,
+                               VkFormat vk_format,
+                               const struct anv_format *anv_format,
+                               VkImageTiling vk_tiling,
+                               const struct isl_drm_modifier_info *isl_mod_info);
 
 void anv_fill_buffer_surface_state(struct anv_device *device,
                                    struct anv_state state,



More information about the mesa-commit mailing list