mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
hwcontext_vulkan: dynamically load functions
This patch allows for alternative loader implementations.
This commit is contained in:
parent
ffeeff4fbc
commit
4a6581e968
@ -427,16 +427,19 @@ static int cuda_device_derive(AVHWDeviceContext *device_ctx,
|
||||
|
||||
switch (src_ctx->type) {
|
||||
#if CONFIG_VULKAN
|
||||
#define TYPE PFN_vkGetPhysicalDeviceProperties2
|
||||
case AV_HWDEVICE_TYPE_VULKAN: {
|
||||
AVVulkanDeviceContext *vkctx = src_ctx->hwctx;
|
||||
TYPE prop_fn = (TYPE)vkctx->get_proc_addr(vkctx->inst, "vkGetPhysicalDeviceProperties2");
|
||||
VkPhysicalDeviceProperties2 vk_dev_props = {
|
||||
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,
|
||||
.pNext = &vk_idp,
|
||||
};
|
||||
vkGetPhysicalDeviceProperties2(vkctx->phys_dev, &vk_dev_props);
|
||||
prop_fn(vkctx->phys_dev, &vk_dev_props);
|
||||
src_uuid = vk_idp.deviceUUID;
|
||||
break;
|
||||
}
|
||||
#undef TYPE
|
||||
#endif
|
||||
default:
|
||||
return AVERROR(ENOSYS);
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -42,6 +42,13 @@ typedef struct AVVulkanDeviceContext {
|
||||
*/
|
||||
const VkAllocationCallbacks *alloc;
|
||||
|
||||
/**
|
||||
* Pointer to the instance-provided vkGetInstanceProcAddr loading function.
|
||||
* If NULL, will pick either libvulkan or libvolk, depending on libavutil's
|
||||
* compilation settings, and set this field.
|
||||
*/
|
||||
PFN_vkGetInstanceProcAddr get_proc_addr;
|
||||
|
||||
/**
|
||||
* Vulkan instance. Must be at least version 1.1.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user