19 #ifndef AVUTIL_VULKAN_LOADER_H
20 #define AVUTIL_VULKAN_LOADER_H
25 #define PFN_LOAD_INFO(req_inst, req_dev, ext_flag, name) \
29 offsetof(FFVulkanFunctions, name), \
31 { "vk"#name, "vk"#name"EXT", "vk"#name"KHR" } \
37 static const struct ExtensionMap {
50 { VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME, FF_VK_EXT_EXTERNAL_WIN32_MEMORY },
51 { VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME, FF_VK_EXT_EXTERNAL_WIN32_SEM },
63 for (
int i = 0;
i < nb_extensions;
i++) {
65 if (!strcmp(extensions[
i], extension_map[j].
name)) {
66 mask |= extension_map[j].flag;
90 uint64_t extensions_mask,
91 int has_inst,
int has_dev)
95 static const struct FunctionLoadInfo {
100 const char *names[3];
109 const struct FunctionLoadInfo *load = &vk_load_info[
i];
110 PFN_vkVoidFunction
fn;
112 if (load->req_dev && !has_dev)
114 if (load->req_inst && !has_inst)
118 const char *
name = load->names[j];
122 else if (load->req_inst)
133 "as supported, but got NULL function pointer!\n", load->names[0]);
137 *(PFN_vkVoidFunction *)((uint8_t *)vk + load->struct_offset) =
fn;