From e7b8ac099fcc6cc5b541afa4099d27deaa84882f Mon Sep 17 00:00:00 2001 From: Matthew Waters Date: Tue, 25 Feb 2025 21:17:57 +1100 Subject: [PATCH] vulkan/operation: retrieve function pointers directly from the device The instance API version supported may not be of the same version supported by the device. It is possible that the function that is returned may be non-0 but not functional due to the requested API version of the instance limiting the availability of calling the returned function. Can be reproduced by running a pipeline with GST_VULKAN_INSTANCE_API_VERSION=1.1 Part-of: --- .../gst-libs/gst/vulkan/gstvkoperation.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkoperation.c b/subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkoperation.c index 12622b7df4..b5f5885300 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkoperation.c +++ b/subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkoperation.c @@ -163,21 +163,19 @@ gst_vulkan_operation_constructed (GObject * object) VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME); if (priv->has_sync2) { - priv->QueueSubmit2 = gst_vulkan_instance_get_proc_address (device->instance, + priv->QueueSubmit2 = gst_vulkan_device_get_proc_address (device, "vkQueueSubmit2"); if (!priv->QueueSubmit2) { priv->QueueSubmit2 = - gst_vulkan_instance_get_proc_address (device->instance, - "vkQueueSubmit2KHR"); + gst_vulkan_device_get_proc_address (device, "vkQueueSubmit2KHR"); } if (!priv->CmdPipelineBarrier2) { priv->CmdPipelineBarrier2 = - gst_vulkan_instance_get_proc_address (device->instance, - "vkCmdPipelineBarrier2"); + gst_vulkan_device_get_proc_address (device, "vkCmdPipelineBarrier2"); if (!priv->CmdPipelineBarrier2) { priv->CmdPipelineBarrier2 = - gst_vulkan_instance_get_proc_address (device->instance, + gst_vulkan_device_get_proc_address (device, "vkCmdPipelineBarrier2KHR"); } }