diff --git a/src/intel/vulkan/anv_formats.c b/src/intel/vulkan/anv_formats.c index 7bf14d19706..f3db21cbc94 100644 --- a/src/intel/vulkan/anv_formats.c +++ b/src/intel/vulkan/anv_formats.c @@ -531,7 +531,8 @@ anv_get_format(const struct anv_physical_device *device, VkFormat vk_format) const struct anv_format *format = &anv_formats[ext_number].formats[enum_offset]; - if (format->planes[0].isl_format == ISL_FORMAT_UNSUPPORTED) + if (format->planes[0].isl_format == ISL_FORMAT_UNSUPPORTED && + format->planes[0].vbo_format == ISL_FORMAT_UNSUPPORTED) return NULL; /* This format is only available if custom border colors without format is @@ -644,7 +645,8 @@ anv_get_image_format_features2(const struct anv_physical_device *physical_device VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT | VK_IMAGE_CREATE_SPARSE_ALIASED_BIT)) != 0; - if (anv_format == NULL) + if (anv_format == NULL || + anv_format->planes[0].isl_format == ISL_FORMAT_UNSUPPORTED) return 0; assert((isl_mod_info != NULL) == diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index 294fc0271dd..e413a00397b 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -5635,10 +5635,10 @@ anv_get_isl_format(const struct anv_physical_device *device, VkFormat vk_format, } static inline enum isl_format -anv_get_vbo_format(const struct anv_physical_device *device, VkFormat vk_format, - VkImageAspectFlags aspect, VkImageTiling tiling) +anv_get_vbo_format(const struct anv_physical_device *device, VkFormat vk_format) { - return anv_get_format_aspect(device, vk_format, aspect, tiling).vbo_format; + const struct anv_format *format = anv_get_format(device, vk_format); + return format != NULL ? format->planes[0].vbo_format : ISL_FORMAT_UNSUPPORTED; } bool anv_format_supports_ccs_e(const struct anv_physical_device *device, diff --git a/src/intel/vulkan/genX_pipeline.c b/src/intel/vulkan/genX_pipeline.c index 63f315c7794..daa3fc98db1 100644 --- a/src/intel/vulkan/genX_pipeline.c +++ b/src/intel/vulkan/genX_pipeline.c @@ -215,10 +215,8 @@ emit_ves_vf_instancing(struct anv_batch *batch, } u_foreach_bit(a, vi->attributes_valid) { - enum isl_format format = anv_get_vbo_format(device->physical, - vi->attributes[a].format, - VK_IMAGE_ASPECT_COLOR_BIT, - VK_IMAGE_TILING_LINEAR); + enum isl_format format = anv_get_vbo_format( + device->physical, vi->attributes[a].format); assume(format < ISL_NUM_FORMATS); uint32_t binding = vi->attributes[a].binding;