From 51660ad52361befd3c7e55b4d4b5af7e399150af Mon Sep 17 00:00:00 2001 From: llyyr Date: Fri, 24 Apr 2026 16:00:11 +0530 Subject: [PATCH] libavutil/vulkan: replace GetDeviceQueue with GetDeviceQueue2 vkGetDeviceQueue2 with flags = 0 is equivalent to vkGetDeviceQueue and is available since Vulkan 1.1. Needed to support queues created with non-zero VkDeviceQueueCreateFlags. Fixes VUID-vkGetDeviceQueue-flags-01841 VVL error. --- libavutil/vulkan.c | 12 +++++++++++- libavutil/vulkan_functions.h | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/libavutil/vulkan.c b/libavutil/vulkan.c index 1ffde91745..44ae1dc6df 100644 --- a/libavutil/vulkan.c +++ b/libavutil/vulkan.c @@ -507,7 +507,17 @@ int ff_vk_exec_pool_init(FFVulkanContext *s, AVVulkanDeviceQueueFamily *qf, /* Queue index distribution */ e->qi = i % qf->num; e->qf = qf->idx; - vk->GetDeviceQueue(s->hwctx->act_dev, qf->idx, e->qi, &e->queue); + VkDeviceQueueInfo2 qinfo = { + .sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2, +#ifdef VK_KHR_internally_synchronized_queues + .flags = (s->extensions & FF_VK_EXT_INTERNAL_QUEUE_SYNC) + ? VK_DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR + : 0, +#endif + .queueFamilyIndex = qf->idx, + .queueIndex = e->qi, + }; + vk->GetDeviceQueue2(s->hwctx->act_dev, &qinfo, &e->queue); } return 0; diff --git a/libavutil/vulkan_functions.h b/libavutil/vulkan_functions.h index 3c4deef0a2..86dff046b2 100644 --- a/libavutil/vulkan_functions.h +++ b/libavutil/vulkan_functions.h @@ -121,7 +121,7 @@ typedef uint64_t FFVulkanExtensions; MACRO(1, 1, FF_VK_EXT_NO_FLAG, CmdDispatchBase) \ \ /* Queue */ \ - MACRO(1, 1, FF_VK_EXT_NO_FLAG, GetDeviceQueue) \ + MACRO(1, 1, FF_VK_EXT_NO_FLAG, GetDeviceQueue2) \ MACRO(1, 1, FF_VK_EXT_NO_FLAG, QueueSubmit) \ MACRO(1, 1, FF_VK_EXT_NO_FLAG, QueueSubmit2) \ \