1 #ifndef HALIDE_RUNTIME_VULKAN_INTERFACE_H
2 #define HALIDE_RUNTIME_VULKAN_INTERFACE_H
12 #define HL_VK_ENV_DELIM ";"
14 #define HL_VK_ENV_DELIM ":"
18 #define VK_NO_PROTOTYPES
20 #include <vulkan/vulkan.h>
50 const char *lib_names[] = {
58 for (
auto &lib_name : lib_names) {
61 debug(
user_context) <<
" Loaded Vulkan loader library: " << lib_name <<
"\n";
64 debug(
user_context) <<
" Missing Vulkan loader library: " << lib_name <<
"\n";
73 #define VULKAN_FN(fn) WEAK PFN_##fn fn = nullptr;
74 #define HL_USE_VULKAN_LOADER_FNS
75 #define HL_USE_VULKAN_INSTANCE_FNS
76 #define HL_USE_VULKAN_DEVICE_FNS
78 #undef HL_USE_VULKAN_DEVICE_FNS
79 #undef HL_USE_VULKAN_INSTANCE_FNS
80 #undef HL_USE_VULKAN_LOADER_FNS
87 #define VULKAN_FN(fn) fn = (PFN_##fn)halide_vulkan_get_symbol(user_context, #fn);
88 #define HL_USE_VULKAN_LOADER_FNS
90 #undef HL_USE_VULKAN_LOADER_FNS
97 #define VULKAN_FN(fn) fn = (PFN_##fn)vkGetInstanceProcAddr(instance, #fn);
98 #define HL_USE_VULKAN_INSTANCE_FNS
100 #undef HL_USE_VULKAN_INSTANCE_FNS
106 #define VULKAN_FN(fn) fn = (PFN_##fn)(nullptr);
107 #define HL_USE_VULKAN_INSTANCE_FNS
109 #undef HL_USE_VULKAN_INSTANCE_FNS
116 #define VULKAN_FN(fn) fn = (PFN_##fn)vkGetDeviceProcAddr(device, #fn);
117 #define HL_USE_VULKAN_DEVICE_FNS
119 #undef HL_USE_VULKAN_DEVICE_FNS
125 #define VULKAN_FN(fn) fn = (PFN_##fn)(nullptr);
126 #define HL_USE_VULKAN_DEVICE_FNS
128 #undef HL_USE_VULKAN_DEVICE_FNS
void * halide_get_library_symbol(void *lib, const char *name)
void * halide_load_library(const char *name)
void WEAK vk_unload_vulkan_device_functions(void *user_context)
void WEAK vk_unload_vulkan_instance_functions(void *user_context)
void WEAK vk_load_vulkan_loader_functions(void *user_context)
WEAK void * halide_vulkan_get_symbol(void *user_context, const char *name)
void WEAK vk_load_vulkan_device_functions(void *user_context, VkDevice device)
void WEAK vk_load_vulkan_instance_functions(void *user_context, VkInstance instance)
WEAK halide_device_interface_t vulkan_device_interface
This file defines the class FunctionDAG, which is our representation of a Halide pipeline,...
Each GPU API provides a halide_device_interface_t struct pointing to the code that manages device all...