From 6f749ec0a7cc46a11a158ff6702e67da10082328 Mon Sep 17 00:00:00 2001 From: Lynne Date: Sun, 8 Feb 2026 05:56:51 +0100 Subject: [PATCH] hwcontext_vulkan: zero-pad optional_instance_exts The layer settings extension was enabled since the list was blank, and some compilers complained about that, and it should have been always supported on all platforms everywhere. Unfortunately, some platforms LIE, claim they support it and yet they error out that the extension is missing. Juse zero pad the array. --- libavutil/hwcontext_vulkan.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c index 8e4bcb3d30..377625f30b 100644 --- a/libavutil/hwcontext_vulkan.c +++ b/libavutil/hwcontext_vulkan.c @@ -677,10 +677,10 @@ typedef struct VulkanOptExtension { } VulkanOptExtension; static const VulkanOptExtension optional_instance_exts[] = { - { VK_EXT_LAYER_SETTINGS_EXTENSION_NAME, FF_VK_EXT_NO_FLAG }, #ifdef __APPLE__ { VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME, FF_VK_EXT_NO_FLAG }, #endif + { 0 }, }; static const VulkanOptExtension optional_device_exts[] = { @@ -746,14 +746,14 @@ static const VulkanOptExtension optional_device_exts[] = { const char **av_vk_get_optional_instance_extensions(int *count) { const char **exts = av_malloc_array(sizeof(*exts), - FF_ARRAY_ELEMS(optional_instance_exts)); + FF_ARRAY_ELEMS(optional_instance_exts) - 1); if (!exts) return NULL; - for (int i = 0; i < FF_ARRAY_ELEMS(optional_instance_exts); i++) + for (int i = 0; i < FF_ARRAY_ELEMS(optional_instance_exts) - 1; i++) exts[i] = optional_instance_exts[i].name; - *count = FF_ARRAY_ELEMS(optional_instance_exts); + *count = FF_ARRAY_ELEMS(optional_instance_exts) - 1; return exts; } @@ -881,7 +881,7 @@ static int check_extensions(AVHWDeviceContext *ctx, int dev, AVDictionary *opts, if (!dev) { mod = "instance"; optional_exts = optional_instance_exts; - optional_exts_num = FF_ARRAY_ELEMS(optional_instance_exts); + optional_exts_num = FF_ARRAY_ELEMS(optional_instance_exts) - 1; user_exts = av_dict_get(opts, "instance_extensions", NULL, 0); if (user_exts) { user_exts_str = av_strdup(user_exts->value);