From d861af251321a95094f3e9d75702436921c46fa5 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Thu, 14 Aug 2025 09:52:13 +0300 Subject: [PATCH] anv: fix R64* vertex buffer format support Disabled by mistake :( Signed-off-by: Lionel Landwerlin Fixes: 5c7397c751 ("anv: add mapping for VBO formats in format mapping") Reviewed-by: Ivan Briano Part-of: (cherry picked from commit 381cb2cabdeb0817f46c97e6bce059a078a4fec1) --- .pick_status.json | 2 +- src/intel/vulkan/anv_formats.c | 6 ++++-- src/intel/vulkan/anv_private.h | 6 +++--- src/intel/vulkan/genX_pipeline.c | 6 ++---- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 6d132eec289..ce0d3101e63 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2784,7 +2784,7 @@ "description": "anv: fix R64* vertex buffer format support", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "5c7397c75135eb0ba8c601e041d456266c866858", "notes": null diff --git a/src/intel/vulkan/anv_formats.c b/src/intel/vulkan/anv_formats.c index fe72f5be506..66804c65f9b 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 a344d701677..d177b8647df 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -5421,10 +5421,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 8d60778071b..3448e2373dc 100644 --- a/src/intel/vulkan/genX_pipeline.c +++ b/src/intel/vulkan/genX_pipeline.c @@ -214,10 +214,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;