4 * this is public domain without any warranties of any kind
7 /* XXX: KEEP AN EYE ON ABBREVIATIONS, ALWAYS */
11 #include "app_core_types.h"
12 #include "nyanvk/types.h"
15 #include "app_state.c"
16 /*----------------------------------------------------------------------------*/
17 #include "namespace/vk_syms.c"
18 /*----------------------------------------------------------------------------*/
20 static void *loader_g
; /* we put the dl handle in vk namespace */
21 /*----------------------------------------------------------------------------*/
22 #define INSTANCE_STATIC_SYM(x,y) \
23 dl_##y = vk_get_instance_proc_addr(0, #x); \
25 LOG("0:MAIN:FATAL:unable to find vulkan " #x "\n"); \
28 static void instance_static_syms(void)
30 INSTANCE_STATIC_SYM(vkEnumerateInstanceVersion
,
31 vk_enumerate_instance_version
);
32 INSTANCE_STATIC_SYM(vkEnumerateInstanceExtensionProperties
,
33 vk_enumerate_instance_ext_props
);
34 INSTANCE_STATIC_SYM(vkEnumerateInstanceLayerProperties
,
35 vk_enumerate_instance_layer_props
);
36 INSTANCE_STATIC_SYM(vkCreateInstance
, vk_create_instance
);
38 #undef INSTANCE_STATIC_SYM
39 /*----------------------------------------------------------------------------*/
40 #define INSTANCE_SYM(x,y) \
41 dl_##y = vk_get_instance_proc_addr(app_instance, #x); \
43 LOG("0:MAIN:FATAL:unable to find vulkan " #x "\n"); \
46 static void instance_syms(void)
48 INSTANCE_SYM(vkEnumeratePhysicalDevices
, vk_enumerate_phydevs
);
49 INSTANCE_SYM(vkEnumerateDeviceExtensionProperties
,
50 vk_enumerate_dev_ext_props
);
51 INSTANCE_SYM(vkGetPhysicalDeviceProperties2
, vk_get_phydev_props
);
52 INSTANCE_SYM(vkGetPhysicalDeviceQueueFamilyProperties2
,
53 vk_get_phydev_q_fam_props
);
54 INSTANCE_SYM(vkCreateDevice
, vk_create_dev
);
55 /* wsi related -------------------------------------------------------*/
56 INSTANCE_SYM(vkGetPhysicalDeviceSurfaceSupportKHR
,
57 vk_get_phydev_surf_support
);
58 INSTANCE_SYM(vkGetPhysicalDeviceSurfaceFormats2KHR
,
59 vk_get_phydev_surf_texel_mem_blk_confs
);
60 INSTANCE_SYM(vkCreateXcbSurfaceKHR
, vk_create_xcb_surf
);
61 INSTANCE_SYM(vkGetPhysicalDeviceMemoryProperties2
,
62 vk_get_phydev_mem_props
);
63 INSTANCE_SYM(vkGetPhysicalDeviceSurfaceCapabilities2KHR
,
64 vk_get_phydev_surf_caps
);
65 INSTANCE_SYM(vkGetPhysicalDeviceSurfacePresentModesKHR
,
66 vk_get_phydev_surf_present_modes
);
67 /*--------------------------------------------------------------------*/
70 /*----------------------------------------------------------------------------*/
71 #define DEV_SYM(x,y) \
72 app_surf.dev.dl_##y = vk_get_dev_proc_addr(app_surf.dev.vk, #x); \
73 if (app_surf.dev.dl_##y == 0) { \
74 LOG("0:MAIN:FATAL:unable to find vulkan device " #x "\n"); \
77 static void dev_syms(void)
79 DEV_SYM(vkGetDeviceQueue
, vk_get_dev_q
);
80 DEV_SYM(vkCreateCommandPool
, vk_create_cp
);
81 DEV_SYM(vkCreateSwapchainKHR
, vk_create_swpchn
);
82 DEV_SYM(vkGetSwapchainImagesKHR
, vk_get_swpchn_imgs
);
83 DEV_SYM(vkCreateImage
, vk_create_img
);
84 DEV_SYM(vkGetImageMemoryRequirements2KHR
, vk_get_img_mem_rqmts
);
85 DEV_SYM(vkAllocateMemory
, vk_alloc_mem
);
86 DEV_SYM(vkBindImageMemory2KHR
, vk_bind_img_mem
);
87 DEV_SYM(vkMapMemory
, vk_map_mem
);
88 DEV_SYM(vkAllocateCommandBuffers
, vk_alloc_cbs
);
89 DEV_SYM(vkBeginCommandBuffer
, vk_begin_cb
);
90 DEV_SYM(vkEndCommandBuffer
, vk_end_cb
);
91 DEV_SYM(vkCmdPipelineBarrier
, vk_cmd_pl_barrier
);
92 DEV_SYM(vkQueueSubmit
, vk_q_submit
);
93 DEV_SYM(vkQueueWaitIdle
, vk_q_wait_idle
);
94 DEV_SYM(vkGetImageSubresourceLayout
, vk_get_img_subrsrc_layout
);
95 DEV_SYM(vkAcquireNextImage2KHR
, vk_acquire_next_img
);
96 DEV_SYM(vkResetCommandBuffer
, vk_reset_cb
);
97 DEV_SYM(vkCmdBlitImage
, vk_cmd_blit_img
);
98 DEV_SYM(vkQueuePresentKHR
, vk_q_present
);
99 DEV_SYM(vkCreateSemaphore
, vk_create_sem
);
102 /*----------------------------------------------------------------------------*/
103 #define DLSYM(x, y) \
104 dl_##y = dlsym(loader_g, #x); \
106 LOG("0:MAIN:FATAL:%s:unable to find " #x "\n", dlerror()); \
109 static void loader_syms(void)
111 DLSYM(vkGetInstanceProcAddr
, vk_get_instance_proc_addr
);
112 DLSYM(vkGetDeviceProcAddr
, vk_get_dev_proc_addr
);
115 /*----------------------------------------------------------------------------*/
116 static void load_vk_loader(void)
118 /* no '/' in the shared dynamic lib path name, then standard lookup */
119 loader_g
= dlopen("libvulkan.so.1", RTLD_LAZY
);
121 LOG("0:MAIN:FATAL:%s:unable to load the vulkan loader dynamic shared library\n", dlerror());
125 /*----------------------------------------------------------------------------*/
127 #include "namespace/vk_syms.c"
129 /*----------------------------------------------------------------------------*/
130 #endif /* VK_SYMS_C */