37#if VK_EXT_debug_marker
38static PFN_vkDebugMarkerSetObjectTagEXT pfn_vkDebugMarkerSetObjectTagEXT = 0;
39static PFN_vkDebugMarkerSetObjectNameEXT pfn_vkDebugMarkerSetObjectNameEXT = 0;
40static PFN_vkCmdDebugMarkerBeginEXT pfn_vkCmdDebugMarkerBeginEXT = 0;
41static PFN_vkCmdDebugMarkerEndEXT pfn_vkCmdDebugMarkerEndEXT = 0;
42static PFN_vkCmdDebugMarkerInsertEXT pfn_vkCmdDebugMarkerInsertEXT = 0;
44VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectTagEXT(
46 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
48 assert(pfn_vkDebugMarkerSetObjectTagEXT);
49 return pfn_vkDebugMarkerSetObjectTagEXT(
device, pTagInfo);
51VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectNameEXT(
53 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
55 assert(pfn_vkDebugMarkerSetObjectNameEXT);
56 return pfn_vkDebugMarkerSetObjectNameEXT(
device, pNameInfo);
58VKAPI_ATTR
void VKAPI_CALL vkCmdDebugMarkerBeginEXT(
59 VkCommandBuffer commandBuffer,
60 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
62 assert(pfn_vkCmdDebugMarkerBeginEXT);
63 pfn_vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo);
65VKAPI_ATTR
void VKAPI_CALL vkCmdDebugMarkerEndEXT(
66 VkCommandBuffer commandBuffer)
68 assert(pfn_vkCmdDebugMarkerEndEXT);
69 pfn_vkCmdDebugMarkerEndEXT(commandBuffer);
71VKAPI_ATTR
void VKAPI_CALL vkCmdDebugMarkerInsertEXT(
72 VkCommandBuffer commandBuffer,
73 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
75 assert(pfn_vkCmdDebugMarkerInsertEXT);
76 pfn_vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo);
79int has_VK_EXT_debug_marker = 0;
80int load_VK_EXT_debug_marker(VkInstance
instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice
device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
82 pfn_vkDebugMarkerSetObjectTagEXT = (PFN_vkDebugMarkerSetObjectTagEXT)getDeviceProcAddr(
device,
"vkDebugMarkerSetObjectTagEXT");
83 pfn_vkDebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT)getDeviceProcAddr(
device,
"vkDebugMarkerSetObjectNameEXT");
84 pfn_vkCmdDebugMarkerBeginEXT = (PFN_vkCmdDebugMarkerBeginEXT)getDeviceProcAddr(
device,
"vkCmdDebugMarkerBeginEXT");
85 pfn_vkCmdDebugMarkerEndEXT = (PFN_vkCmdDebugMarkerEndEXT)getDeviceProcAddr(
device,
"vkCmdDebugMarkerEndEXT");
86 pfn_vkCmdDebugMarkerInsertEXT = (PFN_vkCmdDebugMarkerInsertEXT)getDeviceProcAddr(
device,
"vkCmdDebugMarkerInsertEXT");
88 success = success && (pfn_vkDebugMarkerSetObjectTagEXT != 0);
89 success = success && (pfn_vkDebugMarkerSetObjectNameEXT != 0);
90 success = success && (pfn_vkCmdDebugMarkerBeginEXT != 0);
91 success = success && (pfn_vkCmdDebugMarkerEndEXT != 0);
92 success = success && (pfn_vkCmdDebugMarkerInsertEXT != 0);
93 has_VK_EXT_debug_marker = success;
99#if VK_KHR_external_memory_win32 && defined(VK_USE_PLATFORM_WIN32_KHR)
100static PFN_vkGetMemoryWin32HandleKHR pfn_vkGetMemoryWin32HandleKHR = 0;
101static PFN_vkGetMemoryWin32HandlePropertiesKHR pfn_vkGetMemoryWin32HandlePropertiesKHR = 0;
103VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleKHR(
105 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
108 assert(pfn_vkGetMemoryWin32HandleKHR);
109 return pfn_vkGetMemoryWin32HandleKHR(
device, pGetWin32HandleInfo, pHandle);
111VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandlePropertiesKHR(
113 VkExternalMemoryHandleTypeFlagBits handleType,
115 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
117 assert(pfn_vkGetMemoryWin32HandlePropertiesKHR);
118 return pfn_vkGetMemoryWin32HandlePropertiesKHR(
device, handleType, handle, pMemoryWin32HandleProperties);
121int has_VK_KHR_external_memory_win32 = 0;
122int load_VK_KHR_external_memory_win32(VkInstance
instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice
device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
124 pfn_vkGetMemoryWin32HandleKHR = (PFN_vkGetMemoryWin32HandleKHR)getDeviceProcAddr(
device,
"vkGetMemoryWin32HandleKHR");
125 pfn_vkGetMemoryWin32HandlePropertiesKHR = (PFN_vkGetMemoryWin32HandlePropertiesKHR)getDeviceProcAddr(
device,
"vkGetMemoryWin32HandlePropertiesKHR");
127 success = success && (pfn_vkGetMemoryWin32HandleKHR != 0);
128 success = success && (pfn_vkGetMemoryWin32HandlePropertiesKHR != 0);
129 has_VK_KHR_external_memory_win32 = success;
135#if VK_KHR_external_memory_fd
136static PFN_vkGetMemoryFdKHR pfn_vkGetMemoryFdKHR = 0;
137static PFN_vkGetMemoryFdPropertiesKHR pfn_vkGetMemoryFdPropertiesKHR = 0;
139VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdKHR(
141 const VkMemoryGetFdInfoKHR* pGetFdInfo,
144 assert(pfn_vkGetMemoryFdKHR);
145 return pfn_vkGetMemoryFdKHR(
device, pGetFdInfo, pFd);
147VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdPropertiesKHR(
149 VkExternalMemoryHandleTypeFlagBits handleType,
151 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
153 assert(pfn_vkGetMemoryFdPropertiesKHR);
154 return pfn_vkGetMemoryFdPropertiesKHR(
device, handleType, fd, pMemoryFdProperties);
157int has_VK_KHR_external_memory_fd = 0;
158int load_VK_KHR_external_memory_fd(VkInstance
instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice
device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
160 pfn_vkGetMemoryFdKHR = (PFN_vkGetMemoryFdKHR)getDeviceProcAddr(
device,
"vkGetMemoryFdKHR");
161 pfn_vkGetMemoryFdPropertiesKHR = (PFN_vkGetMemoryFdPropertiesKHR)getDeviceProcAddr(
device,
"vkGetMemoryFdPropertiesKHR");
163 success = success && (pfn_vkGetMemoryFdKHR != 0);
164 success = success && (pfn_vkGetMemoryFdPropertiesKHR != 0);
165 has_VK_KHR_external_memory_fd = success;
171#if VK_KHR_external_semaphore_win32 && defined(VK_USE_PLATFORM_WIN32_KHR)
172static PFN_vkImportSemaphoreWin32HandleKHR pfn_vkImportSemaphoreWin32HandleKHR = 0;
173static PFN_vkGetSemaphoreWin32HandleKHR pfn_vkGetSemaphoreWin32HandleKHR = 0;
175VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreWin32HandleKHR(
177 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
179 assert(pfn_vkImportSemaphoreWin32HandleKHR);
180 return pfn_vkImportSemaphoreWin32HandleKHR(
device, pImportSemaphoreWin32HandleInfo);
182VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreWin32HandleKHR(
184 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
187 assert(pfn_vkGetSemaphoreWin32HandleKHR);
188 return pfn_vkGetSemaphoreWin32HandleKHR(
device, pGetWin32HandleInfo, pHandle);
191int has_VK_KHR_external_semaphore_win32 = 0;
192int load_VK_KHR_external_semaphore_win32(VkInstance
instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice
device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
194 pfn_vkImportSemaphoreWin32HandleKHR = (PFN_vkImportSemaphoreWin32HandleKHR)getDeviceProcAddr(
device,
"vkImportSemaphoreWin32HandleKHR");
195 pfn_vkGetSemaphoreWin32HandleKHR = (PFN_vkGetSemaphoreWin32HandleKHR)getDeviceProcAddr(
device,
"vkGetSemaphoreWin32HandleKHR");
197 success = success && (pfn_vkImportSemaphoreWin32HandleKHR != 0);
198 success = success && (pfn_vkGetSemaphoreWin32HandleKHR != 0);
199 has_VK_KHR_external_semaphore_win32 = success;
205#if VK_KHR_external_semaphore_fd
206static PFN_vkImportSemaphoreFdKHR pfn_vkImportSemaphoreFdKHR = 0;
207static PFN_vkGetSemaphoreFdKHR pfn_vkGetSemaphoreFdKHR = 0;
209VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreFdKHR(
211 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
213 assert(pfn_vkImportSemaphoreFdKHR);
214 return pfn_vkImportSemaphoreFdKHR(
device, pImportSemaphoreFdInfo);
216VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreFdKHR(
218 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
221 assert(pfn_vkGetSemaphoreFdKHR);
222 return pfn_vkGetSemaphoreFdKHR(
device, pGetFdInfo, pFd);
225int has_VK_KHR_external_semaphore_fd = 0;
226int load_VK_KHR_external_semaphore_fd(VkInstance
instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice
device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
228 pfn_vkImportSemaphoreFdKHR = (PFN_vkImportSemaphoreFdKHR)getDeviceProcAddr(
device,
"vkImportSemaphoreFdKHR");
229 pfn_vkGetSemaphoreFdKHR = (PFN_vkGetSemaphoreFdKHR)getDeviceProcAddr(
device,
"vkGetSemaphoreFdKHR");
231 success = success && (pfn_vkImportSemaphoreFdKHR != 0);
232 success = success && (pfn_vkGetSemaphoreFdKHR != 0);
233 has_VK_KHR_external_semaphore_fd = success;
239#if VK_KHR_push_descriptor
240static PFN_vkCmdPushDescriptorSetKHR pfn_vkCmdPushDescriptorSetKHR = 0;
241static PFN_vkCmdPushDescriptorSetWithTemplateKHR pfn_vkCmdPushDescriptorSetWithTemplateKHR = 0;
243VKAPI_ATTR
void VKAPI_CALL vkCmdPushDescriptorSetKHR(
244 VkCommandBuffer commandBuffer,
245 VkPipelineBindPoint pipelineBindPoint,
246 VkPipelineLayout layout,
248 uint32_t descriptorWriteCount,
249 const VkWriteDescriptorSet* pDescriptorWrites)
251 assert(pfn_vkCmdPushDescriptorSetKHR);
252 pfn_vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites);
254VKAPI_ATTR
void VKAPI_CALL vkCmdPushDescriptorSetWithTemplateKHR(
255 VkCommandBuffer commandBuffer,
256 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
257 VkPipelineLayout layout,
261 assert(pfn_vkCmdPushDescriptorSetWithTemplateKHR);
262 pfn_vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData);
265int has_VK_KHR_push_descriptor = 0;
266int load_VK_KHR_push_descriptor(VkInstance
instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice
device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
268 pfn_vkCmdPushDescriptorSetKHR = (PFN_vkCmdPushDescriptorSetKHR)getDeviceProcAddr(
device,
"vkCmdPushDescriptorSetKHR");
269 pfn_vkCmdPushDescriptorSetWithTemplateKHR = (PFN_vkCmdPushDescriptorSetWithTemplateKHR)getDeviceProcAddr(
device,
"vkCmdPushDescriptorSetWithTemplateKHR");
271 success = success && (pfn_vkCmdPushDescriptorSetKHR != 0);
272 success = success && (pfn_vkCmdPushDescriptorSetWithTemplateKHR != 0);
273 has_VK_KHR_push_descriptor = success;
279#if VK_KHR_create_renderpass2
280static PFN_vkCreateRenderPass2KHR pfn_vkCreateRenderPass2KHR = 0;
281static PFN_vkCmdBeginRenderPass2KHR pfn_vkCmdBeginRenderPass2KHR = 0;
282static PFN_vkCmdNextSubpass2KHR pfn_vkCmdNextSubpass2KHR = 0;
283static PFN_vkCmdEndRenderPass2KHR pfn_vkCmdEndRenderPass2KHR = 0;
285VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2KHR(
287 const VkRenderPassCreateInfo2KHR* pCreateInfo,
288 const VkAllocationCallbacks* pAllocator,
289 VkRenderPass* pRenderPass)
291 assert(pfn_vkCreateRenderPass2KHR);
292 return pfn_vkCreateRenderPass2KHR(
device, pCreateInfo, pAllocator, pRenderPass);
294VKAPI_ATTR
void VKAPI_CALL vkCmdBeginRenderPass2KHR(
295 VkCommandBuffer commandBuffer,
296 const VkRenderPassBeginInfo* pRenderPassBegin,
297 const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
299 assert(pfn_vkCmdBeginRenderPass2KHR);
300 pfn_vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo);
302VKAPI_ATTR
void VKAPI_CALL vkCmdNextSubpass2KHR(
303 VkCommandBuffer commandBuffer,
304 const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
305 const VkSubpassEndInfoKHR* pSubpassEndInfo)
307 assert(pfn_vkCmdNextSubpass2KHR);
308 pfn_vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
310VKAPI_ATTR
void VKAPI_CALL vkCmdEndRenderPass2KHR(
311 VkCommandBuffer commandBuffer,
312 const VkSubpassEndInfoKHR* pSubpassEndInfo)
314 assert(pfn_vkCmdEndRenderPass2KHR);
315 pfn_vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo);
318int has_VK_KHR_create_renderpass2 = 0;
319int load_VK_KHR_create_renderpass2(VkInstance
instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice
device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
321 pfn_vkCreateRenderPass2KHR = (PFN_vkCreateRenderPass2KHR)getDeviceProcAddr(
device,
"vkCreateRenderPass2KHR");
322 pfn_vkCmdBeginRenderPass2KHR = (PFN_vkCmdBeginRenderPass2KHR)getDeviceProcAddr(
device,
"vkCmdBeginRenderPass2KHR");
323 pfn_vkCmdNextSubpass2KHR = (PFN_vkCmdNextSubpass2KHR)getDeviceProcAddr(
device,
"vkCmdNextSubpass2KHR");
324 pfn_vkCmdEndRenderPass2KHR = (PFN_vkCmdEndRenderPass2KHR)getDeviceProcAddr(
device,
"vkCmdEndRenderPass2KHR");
326 success = success && (pfn_vkCreateRenderPass2KHR != 0);
327 success = success && (pfn_vkCmdBeginRenderPass2KHR != 0);
328 success = success && (pfn_vkCmdNextSubpass2KHR != 0);
329 success = success && (pfn_vkCmdEndRenderPass2KHR != 0);
330 has_VK_KHR_create_renderpass2 = success;
336#if VK_KHR_external_fence_win32 && defined(VK_USE_PLATFORM_WIN32_KHR)
337static PFN_vkImportFenceWin32HandleKHR pfn_vkImportFenceWin32HandleKHR = 0;
338static PFN_vkGetFenceWin32HandleKHR pfn_vkGetFenceWin32HandleKHR = 0;
340VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceWin32HandleKHR(
342 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
344 assert(pfn_vkImportFenceWin32HandleKHR);
345 return pfn_vkImportFenceWin32HandleKHR(
device, pImportFenceWin32HandleInfo);
347VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceWin32HandleKHR(
349 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
352 assert(pfn_vkGetFenceWin32HandleKHR);
353 return pfn_vkGetFenceWin32HandleKHR(
device, pGetWin32HandleInfo, pHandle);
356int has_VK_KHR_external_fence_win32 = 0;
357int load_VK_KHR_external_fence_win32(VkInstance
instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice
device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
359 pfn_vkImportFenceWin32HandleKHR = (PFN_vkImportFenceWin32HandleKHR)getDeviceProcAddr(
device,
"vkImportFenceWin32HandleKHR");
360 pfn_vkGetFenceWin32HandleKHR = (PFN_vkGetFenceWin32HandleKHR)getDeviceProcAddr(
device,
"vkGetFenceWin32HandleKHR");
362 success = success && (pfn_vkImportFenceWin32HandleKHR != 0);
363 success = success && (pfn_vkGetFenceWin32HandleKHR != 0);
364 has_VK_KHR_external_fence_win32 = success;
370#if VK_EXT_debug_utils
371static PFN_vkSetDebugUtilsObjectNameEXT pfn_vkSetDebugUtilsObjectNameEXT = 0;
372static PFN_vkSetDebugUtilsObjectTagEXT pfn_vkSetDebugUtilsObjectTagEXT = 0;
373static PFN_vkQueueBeginDebugUtilsLabelEXT pfn_vkQueueBeginDebugUtilsLabelEXT = 0;
374static PFN_vkQueueEndDebugUtilsLabelEXT pfn_vkQueueEndDebugUtilsLabelEXT = 0;
375static PFN_vkQueueInsertDebugUtilsLabelEXT pfn_vkQueueInsertDebugUtilsLabelEXT = 0;
376static PFN_vkCmdBeginDebugUtilsLabelEXT pfn_vkCmdBeginDebugUtilsLabelEXT = 0;
377static PFN_vkCmdEndDebugUtilsLabelEXT pfn_vkCmdEndDebugUtilsLabelEXT = 0;
378static PFN_vkCmdInsertDebugUtilsLabelEXT pfn_vkCmdInsertDebugUtilsLabelEXT = 0;
379static PFN_vkCreateDebugUtilsMessengerEXT pfn_vkCreateDebugUtilsMessengerEXT = 0;
380static PFN_vkDestroyDebugUtilsMessengerEXT pfn_vkDestroyDebugUtilsMessengerEXT = 0;
381static PFN_vkSubmitDebugUtilsMessageEXT pfn_vkSubmitDebugUtilsMessageEXT = 0;
383VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectNameEXT(
385 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
387 assert(pfn_vkSetDebugUtilsObjectNameEXT);
388 return pfn_vkSetDebugUtilsObjectNameEXT(
device, pNameInfo);
390VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectTagEXT(
392 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
394 assert(pfn_vkSetDebugUtilsObjectTagEXT);
395 return pfn_vkSetDebugUtilsObjectTagEXT(
device, pTagInfo);
397VKAPI_ATTR
void VKAPI_CALL vkQueueBeginDebugUtilsLabelEXT(
399 const VkDebugUtilsLabelEXT* pLabelInfo)
401 assert(pfn_vkQueueBeginDebugUtilsLabelEXT);
402 pfn_vkQueueBeginDebugUtilsLabelEXT(
queue, pLabelInfo);
404VKAPI_ATTR
void VKAPI_CALL vkQueueEndDebugUtilsLabelEXT(
407 assert(pfn_vkQueueEndDebugUtilsLabelEXT);
408 pfn_vkQueueEndDebugUtilsLabelEXT(
queue);
410VKAPI_ATTR
void VKAPI_CALL vkQueueInsertDebugUtilsLabelEXT(
412 const VkDebugUtilsLabelEXT* pLabelInfo)
414 assert(pfn_vkQueueInsertDebugUtilsLabelEXT);
415 pfn_vkQueueInsertDebugUtilsLabelEXT(
queue, pLabelInfo);
417VKAPI_ATTR
void VKAPI_CALL vkCmdBeginDebugUtilsLabelEXT(
418 VkCommandBuffer commandBuffer,
419 const VkDebugUtilsLabelEXT* pLabelInfo)
421 assert(pfn_vkCmdBeginDebugUtilsLabelEXT);
422 pfn_vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
424VKAPI_ATTR
void VKAPI_CALL vkCmdEndDebugUtilsLabelEXT(
425 VkCommandBuffer commandBuffer)
427 assert(pfn_vkCmdEndDebugUtilsLabelEXT);
428 pfn_vkCmdEndDebugUtilsLabelEXT(commandBuffer);
430VKAPI_ATTR
void VKAPI_CALL vkCmdInsertDebugUtilsLabelEXT(
431 VkCommandBuffer commandBuffer,
432 const VkDebugUtilsLabelEXT* pLabelInfo)
434 assert(pfn_vkCmdInsertDebugUtilsLabelEXT);
435 pfn_vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
437VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugUtilsMessengerEXT(
439 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
440 const VkAllocationCallbacks* pAllocator,
441 VkDebugUtilsMessengerEXT* pMessenger)
443 assert(pfn_vkCreateDebugUtilsMessengerEXT);
444 return pfn_vkCreateDebugUtilsMessengerEXT(
instance, pCreateInfo, pAllocator, pMessenger);
446VKAPI_ATTR
void VKAPI_CALL vkDestroyDebugUtilsMessengerEXT(
448 VkDebugUtilsMessengerEXT messenger,
449 const VkAllocationCallbacks* pAllocator)
451 assert(pfn_vkDestroyDebugUtilsMessengerEXT);
452 pfn_vkDestroyDebugUtilsMessengerEXT(
instance, messenger, pAllocator);
454VKAPI_ATTR
void VKAPI_CALL vkSubmitDebugUtilsMessageEXT(
456 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
457 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
458 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
460 assert(pfn_vkSubmitDebugUtilsMessageEXT);
461 pfn_vkSubmitDebugUtilsMessageEXT(
instance, messageSeverity, messageTypes, pCallbackData);
464int has_VK_EXT_debug_utils = 0;
465int load_VK_EXT_debug_utils(VkInstance
instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice
device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
467 pfn_vkSetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT)getDeviceProcAddr(
device,
"vkSetDebugUtilsObjectNameEXT");
468 pfn_vkSetDebugUtilsObjectTagEXT = (PFN_vkSetDebugUtilsObjectTagEXT)getDeviceProcAddr(
device,
"vkSetDebugUtilsObjectTagEXT");
469 pfn_vkQueueBeginDebugUtilsLabelEXT = (PFN_vkQueueBeginDebugUtilsLabelEXT)getDeviceProcAddr(
device,
"vkQueueBeginDebugUtilsLabelEXT");
470 pfn_vkQueueEndDebugUtilsLabelEXT = (PFN_vkQueueEndDebugUtilsLabelEXT)getDeviceProcAddr(
device,
"vkQueueEndDebugUtilsLabelEXT");
471 pfn_vkQueueInsertDebugUtilsLabelEXT = (PFN_vkQueueInsertDebugUtilsLabelEXT)getDeviceProcAddr(
device,
"vkQueueInsertDebugUtilsLabelEXT");
472 pfn_vkCmdBeginDebugUtilsLabelEXT = (PFN_vkCmdBeginDebugUtilsLabelEXT)getDeviceProcAddr(
device,
"vkCmdBeginDebugUtilsLabelEXT");
473 pfn_vkCmdEndDebugUtilsLabelEXT = (PFN_vkCmdEndDebugUtilsLabelEXT)getDeviceProcAddr(
device,
"vkCmdEndDebugUtilsLabelEXT");
474 pfn_vkCmdInsertDebugUtilsLabelEXT = (PFN_vkCmdInsertDebugUtilsLabelEXT)getDeviceProcAddr(
device,
"vkCmdInsertDebugUtilsLabelEXT");
475 pfn_vkCreateDebugUtilsMessengerEXT = (PFN_vkCreateDebugUtilsMessengerEXT)getInstanceProcAddr(
instance,
"vkCreateDebugUtilsMessengerEXT");
476 pfn_vkDestroyDebugUtilsMessengerEXT = (PFN_vkDestroyDebugUtilsMessengerEXT)getInstanceProcAddr(
instance,
"vkDestroyDebugUtilsMessengerEXT");
477 pfn_vkSubmitDebugUtilsMessageEXT = (PFN_vkSubmitDebugUtilsMessageEXT)getInstanceProcAddr(
instance,
"vkSubmitDebugUtilsMessageEXT");
479 success = success && (pfn_vkSetDebugUtilsObjectNameEXT != 0);
480 success = success && (pfn_vkSetDebugUtilsObjectTagEXT != 0);
481 success = success && (pfn_vkQueueBeginDebugUtilsLabelEXT != 0);
482 success = success && (pfn_vkQueueEndDebugUtilsLabelEXT != 0);
483 success = success && (pfn_vkQueueInsertDebugUtilsLabelEXT != 0);
484 success = success && (pfn_vkCmdBeginDebugUtilsLabelEXT != 0);
485 success = success && (pfn_vkCmdEndDebugUtilsLabelEXT != 0);
486 success = success && (pfn_vkCmdInsertDebugUtilsLabelEXT != 0);
487 success = success && (pfn_vkCreateDebugUtilsMessengerEXT != 0);
488 success = success && (pfn_vkDestroyDebugUtilsMessengerEXT != 0);
489 success = success && (pfn_vkSubmitDebugUtilsMessageEXT != 0);
490 has_VK_EXT_debug_utils = success;
496#if VK_EXT_sample_locations
497static PFN_vkCmdSetSampleLocationsEXT pfn_vkCmdSetSampleLocationsEXT = 0;
498static PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT pfn_vkGetPhysicalDeviceMultisamplePropertiesEXT = 0;
500VKAPI_ATTR
void VKAPI_CALL vkCmdSetSampleLocationsEXT(
501 VkCommandBuffer commandBuffer,
502 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
504 assert(pfn_vkCmdSetSampleLocationsEXT);
505 pfn_vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo);
507VKAPI_ATTR
void VKAPI_CALL vkGetPhysicalDeviceMultisamplePropertiesEXT(
508 VkPhysicalDevice physicalDevice,
509 VkSampleCountFlagBits samples,
510 VkMultisamplePropertiesEXT* pMultisampleProperties)
512 assert(pfn_vkGetPhysicalDeviceMultisamplePropertiesEXT);
513 pfn_vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties);
516int has_VK_EXT_sample_locations = 0;
517int load_VK_EXT_sample_locations(VkInstance
instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice
device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
519 pfn_vkCmdSetSampleLocationsEXT = (PFN_vkCmdSetSampleLocationsEXT)getDeviceProcAddr(
device,
"vkCmdSetSampleLocationsEXT");
520 pfn_vkGetPhysicalDeviceMultisamplePropertiesEXT = (PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)getDeviceProcAddr(
device,
"vkGetPhysicalDeviceMultisamplePropertiesEXT");
522 success = success && (pfn_vkCmdSetSampleLocationsEXT != 0);
523 success = success && (pfn_vkGetPhysicalDeviceMultisamplePropertiesEXT != 0);
524 has_VK_EXT_sample_locations = success;
530#if VK_KHR_ray_tracing
531static PFN_vkCreateAccelerationStructureKHR pfn_vkCreateAccelerationStructureKHR = 0;
532static PFN_vkDestroyAccelerationStructureKHR pfn_vkDestroyAccelerationStructureKHR = 0;
533static PFN_vkGetAccelerationStructureMemoryRequirementsKHR pfn_vkGetAccelerationStructureMemoryRequirementsKHR = 0;
534static PFN_vkBindAccelerationStructureMemoryKHR pfn_vkBindAccelerationStructureMemoryKHR = 0;
535static PFN_vkCmdBuildAccelerationStructureKHR pfn_vkCmdBuildAccelerationStructureKHR = 0;
536static PFN_vkCmdBuildAccelerationStructureIndirectKHR pfn_vkCmdBuildAccelerationStructureIndirectKHR = 0;
537static PFN_vkBuildAccelerationStructureKHR pfn_vkBuildAccelerationStructureKHR = 0;
538static PFN_vkCopyAccelerationStructureKHR pfn_vkCopyAccelerationStructureKHR = 0;
539static PFN_vkCopyAccelerationStructureToMemoryKHR pfn_vkCopyAccelerationStructureToMemoryKHR = 0;
540static PFN_vkCopyMemoryToAccelerationStructureKHR pfn_vkCopyMemoryToAccelerationStructureKHR = 0;
541static PFN_vkWriteAccelerationStructuresPropertiesKHR pfn_vkWriteAccelerationStructuresPropertiesKHR = 0;
542static PFN_vkCmdCopyAccelerationStructureKHR pfn_vkCmdCopyAccelerationStructureKHR = 0;
543static PFN_vkCmdCopyAccelerationStructureToMemoryKHR pfn_vkCmdCopyAccelerationStructureToMemoryKHR = 0;
544static PFN_vkCmdCopyMemoryToAccelerationStructureKHR pfn_vkCmdCopyMemoryToAccelerationStructureKHR = 0;
545static PFN_vkCmdTraceRaysKHR pfn_vkCmdTraceRaysKHR = 0;
546static PFN_vkCreateRayTracingPipelinesKHR pfn_vkCreateRayTracingPipelinesKHR = 0;
547static PFN_vkGetRayTracingShaderGroupHandlesKHR pfn_vkGetRayTracingShaderGroupHandlesKHR = 0;
548static PFN_vkGetAccelerationStructureDeviceAddressKHR pfn_vkGetAccelerationStructureDeviceAddressKHR = 0;
549static PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR pfn_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = 0;
550static PFN_vkCmdWriteAccelerationStructuresPropertiesKHR pfn_vkCmdWriteAccelerationStructuresPropertiesKHR = 0;
551static PFN_vkCmdTraceRaysIndirectKHR pfn_vkCmdTraceRaysIndirectKHR = 0;
552static PFN_vkGetDeviceAccelerationStructureCompatibilityKHR pfn_vkGetDeviceAccelerationStructureCompatibilityKHR = 0;
554VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureKHR(
556 const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
557 const VkAllocationCallbacks* pAllocator,
558 VkAccelerationStructureKHR* pAccelerationStructure)
560 assert(pfn_vkCreateAccelerationStructureKHR);
561 return pfn_vkCreateAccelerationStructureKHR(
device, pCreateInfo, pAllocator, pAccelerationStructure);
563VKAPI_ATTR
void VKAPI_CALL vkDestroyAccelerationStructureKHR(
565 VkAccelerationStructureKHR accelerationStructure,
566 const VkAllocationCallbacks* pAllocator)
568 assert(pfn_vkDestroyAccelerationStructureKHR);
569 pfn_vkDestroyAccelerationStructureKHR(
device, accelerationStructure, pAllocator);
571VKAPI_ATTR
void VKAPI_CALL vkGetAccelerationStructureMemoryRequirementsKHR(
573 const VkAccelerationStructureMemoryRequirementsInfoKHR* pInfo,
574 VkMemoryRequirements2* pMemoryRequirements)
576 assert(pfn_vkGetAccelerationStructureMemoryRequirementsKHR);
577 pfn_vkGetAccelerationStructureMemoryRequirementsKHR(
device, pInfo, pMemoryRequirements);
579VKAPI_ATTR VkResult VKAPI_CALL vkBindAccelerationStructureMemoryKHR(
581 uint32_t bindInfoCount,
582 const VkBindAccelerationStructureMemoryInfoKHR* pBindInfos)
584 assert(pfn_vkBindAccelerationStructureMemoryKHR);
585 return pfn_vkBindAccelerationStructureMemoryKHR(
device, bindInfoCount, pBindInfos);
587VKAPI_ATTR
void VKAPI_CALL vkCmdBuildAccelerationStructureKHR(
588 VkCommandBuffer commandBuffer,
590 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
591 const VkAccelerationStructureBuildOffsetInfoKHR*
const* ppOffsetInfos)
593 assert(pfn_vkCmdBuildAccelerationStructureKHR);
594 pfn_vkCmdBuildAccelerationStructureKHR(commandBuffer, infoCount, pInfos, ppOffsetInfos);
596VKAPI_ATTR
void VKAPI_CALL vkCmdBuildAccelerationStructureIndirectKHR(
597 VkCommandBuffer commandBuffer,
598 const VkAccelerationStructureBuildGeometryInfoKHR* pInfo,
599 VkBuffer indirectBuffer,
600 VkDeviceSize indirectOffset,
601 uint32_t indirectStride)
603 assert(pfn_vkCmdBuildAccelerationStructureIndirectKHR);
604 pfn_vkCmdBuildAccelerationStructureIndirectKHR(commandBuffer, pInfo, indirectBuffer, indirectOffset, indirectStride);
606VKAPI_ATTR VkResult VKAPI_CALL vkBuildAccelerationStructureKHR(
609 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
610 const VkAccelerationStructureBuildOffsetInfoKHR*
const* ppOffsetInfos)
612 assert(pfn_vkBuildAccelerationStructureKHR);
613 return pfn_vkBuildAccelerationStructureKHR(
device, infoCount, pInfos, ppOffsetInfos);
615VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureKHR(
617 const VkCopyAccelerationStructureInfoKHR* pInfo)
619 assert(pfn_vkCopyAccelerationStructureKHR);
620 return pfn_vkCopyAccelerationStructureKHR(
device, pInfo);
622VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureToMemoryKHR(
624 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
626 assert(pfn_vkCopyAccelerationStructureToMemoryKHR);
627 return pfn_vkCopyAccelerationStructureToMemoryKHR(
device, pInfo);
629VKAPI_ATTR VkResult VKAPI_CALL vkCopyMemoryToAccelerationStructureKHR(
631 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
633 assert(pfn_vkCopyMemoryToAccelerationStructureKHR);
634 return pfn_vkCopyMemoryToAccelerationStructureKHR(
device, pInfo);
636VKAPI_ATTR VkResult VKAPI_CALL vkWriteAccelerationStructuresPropertiesKHR(
638 uint32_t accelerationStructureCount,
639 const VkAccelerationStructureKHR* pAccelerationStructures,
640 VkQueryType queryType,
645 assert(pfn_vkWriteAccelerationStructuresPropertiesKHR);
646 return pfn_vkWriteAccelerationStructuresPropertiesKHR(
device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride);
648VKAPI_ATTR
void VKAPI_CALL vkCmdCopyAccelerationStructureKHR(
649 VkCommandBuffer commandBuffer,
650 const VkCopyAccelerationStructureInfoKHR* pInfo)
652 assert(pfn_vkCmdCopyAccelerationStructureKHR);
653 pfn_vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo);
655VKAPI_ATTR
void VKAPI_CALL vkCmdCopyAccelerationStructureToMemoryKHR(
656 VkCommandBuffer commandBuffer,
657 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
659 assert(pfn_vkCmdCopyAccelerationStructureToMemoryKHR);
660 pfn_vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo);
662VKAPI_ATTR
void VKAPI_CALL vkCmdCopyMemoryToAccelerationStructureKHR(
663 VkCommandBuffer commandBuffer,
664 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
666 assert(pfn_vkCmdCopyMemoryToAccelerationStructureKHR);
667 pfn_vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo);
669VKAPI_ATTR
void VKAPI_CALL vkCmdTraceRaysKHR(
670 VkCommandBuffer commandBuffer,
671 const VkStridedBufferRegionKHR* pRaygenShaderBindingTable,
672 const VkStridedBufferRegionKHR* pMissShaderBindingTable,
673 const VkStridedBufferRegionKHR* pHitShaderBindingTable,
674 const VkStridedBufferRegionKHR* pCallableShaderBindingTable,
679 assert(pfn_vkCmdTraceRaysKHR);
680 pfn_vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth);
682VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesKHR(
684 VkPipelineCache pipelineCache,
685 uint32_t createInfoCount,
686 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
687 const VkAllocationCallbacks* pAllocator,
688 VkPipeline* pPipelines)
690 assert(pfn_vkCreateRayTracingPipelinesKHR);
691 return pfn_vkCreateRayTracingPipelinesKHR(
device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
693VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingShaderGroupHandlesKHR(
701 assert(pfn_vkGetRayTracingShaderGroupHandlesKHR);
702 return pfn_vkGetRayTracingShaderGroupHandlesKHR(
device, pipeline, firstGroup, groupCount, dataSize, pData);
704VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetAccelerationStructureDeviceAddressKHR(
706 const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
708 assert(pfn_vkGetAccelerationStructureDeviceAddressKHR);
709 return pfn_vkGetAccelerationStructureDeviceAddressKHR(
device, pInfo);
711VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
719 assert(pfn_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR);
720 return pfn_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
device, pipeline, firstGroup, groupCount, dataSize, pData);
722VKAPI_ATTR
void VKAPI_CALL vkCmdWriteAccelerationStructuresPropertiesKHR(
723 VkCommandBuffer commandBuffer,
724 uint32_t accelerationStructureCount,
725 const VkAccelerationStructureKHR* pAccelerationStructures,
726 VkQueryType queryType,
727 VkQueryPool queryPool,
730 assert(pfn_vkCmdWriteAccelerationStructuresPropertiesKHR);
731 pfn_vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery);
733VKAPI_ATTR
void VKAPI_CALL vkCmdTraceRaysIndirectKHR(
734 VkCommandBuffer commandBuffer,
735 const VkStridedBufferRegionKHR* pRaygenShaderBindingTable,
736 const VkStridedBufferRegionKHR* pMissShaderBindingTable,
737 const VkStridedBufferRegionKHR* pHitShaderBindingTable,
738 const VkStridedBufferRegionKHR* pCallableShaderBindingTable,
742 assert(pfn_vkCmdTraceRaysIndirectKHR);
743 pfn_vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, buffer, offset);
745VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceAccelerationStructureCompatibilityKHR(
747 const VkAccelerationStructureVersionKHR* version)
749 assert(pfn_vkGetDeviceAccelerationStructureCompatibilityKHR);
750 return pfn_vkGetDeviceAccelerationStructureCompatibilityKHR(
device, version);
753int has_VK_KHR_ray_tracing = 0;
754int load_VK_KHR_ray_tracing(VkInstance
instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice
device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
756 pfn_vkCreateAccelerationStructureKHR = (PFN_vkCreateAccelerationStructureKHR)getDeviceProcAddr(
device,
"vkCreateAccelerationStructureKHR");
757 pfn_vkDestroyAccelerationStructureKHR = (PFN_vkDestroyAccelerationStructureKHR)getDeviceProcAddr(
device,
"vkDestroyAccelerationStructureKHR");
758 pfn_vkGetAccelerationStructureMemoryRequirementsKHR = (PFN_vkGetAccelerationStructureMemoryRequirementsKHR)getDeviceProcAddr(
device,
"vkGetAccelerationStructureMemoryRequirementsKHR");
759 pfn_vkBindAccelerationStructureMemoryKHR = (PFN_vkBindAccelerationStructureMemoryKHR)getDeviceProcAddr(
device,
"vkBindAccelerationStructureMemoryKHR");
760 pfn_vkCmdBuildAccelerationStructureKHR = (PFN_vkCmdBuildAccelerationStructureKHR)getDeviceProcAddr(
device,
"vkCmdBuildAccelerationStructureKHR");
761 pfn_vkCmdBuildAccelerationStructureIndirectKHR = (PFN_vkCmdBuildAccelerationStructureIndirectKHR)getDeviceProcAddr(
device,
"vkCmdBuildAccelerationStructureIndirectKHR");
762 pfn_vkBuildAccelerationStructureKHR = (PFN_vkBuildAccelerationStructureKHR)getDeviceProcAddr(
device,
"vkBuildAccelerationStructureKHR");
763 pfn_vkCopyAccelerationStructureKHR = (PFN_vkCopyAccelerationStructureKHR)getDeviceProcAddr(
device,
"vkCopyAccelerationStructureKHR");
764 pfn_vkCopyAccelerationStructureToMemoryKHR = (PFN_vkCopyAccelerationStructureToMemoryKHR)getDeviceProcAddr(
device,
"vkCopyAccelerationStructureToMemoryKHR");
765 pfn_vkCopyMemoryToAccelerationStructureKHR = (PFN_vkCopyMemoryToAccelerationStructureKHR)getDeviceProcAddr(
device,
"vkCopyMemoryToAccelerationStructureKHR");
766 pfn_vkWriteAccelerationStructuresPropertiesKHR = (PFN_vkWriteAccelerationStructuresPropertiesKHR)getDeviceProcAddr(
device,
"vkWriteAccelerationStructuresPropertiesKHR");
767 pfn_vkCmdCopyAccelerationStructureKHR = (PFN_vkCmdCopyAccelerationStructureKHR)getDeviceProcAddr(
device,
"vkCmdCopyAccelerationStructureKHR");
768 pfn_vkCmdCopyAccelerationStructureToMemoryKHR = (PFN_vkCmdCopyAccelerationStructureToMemoryKHR)getDeviceProcAddr(
device,
"vkCmdCopyAccelerationStructureToMemoryKHR");
769 pfn_vkCmdCopyMemoryToAccelerationStructureKHR = (PFN_vkCmdCopyMemoryToAccelerationStructureKHR)getDeviceProcAddr(
device,
"vkCmdCopyMemoryToAccelerationStructureKHR");
770 pfn_vkCmdTraceRaysKHR = (PFN_vkCmdTraceRaysKHR)getDeviceProcAddr(
device,
"vkCmdTraceRaysKHR");
771 pfn_vkCreateRayTracingPipelinesKHR = (PFN_vkCreateRayTracingPipelinesKHR)getDeviceProcAddr(
device,
"vkCreateRayTracingPipelinesKHR");
772 pfn_vkGetRayTracingShaderGroupHandlesKHR = (PFN_vkGetRayTracingShaderGroupHandlesKHR)getDeviceProcAddr(
device,
"vkGetRayTracingShaderGroupHandlesKHR");
773 pfn_vkGetAccelerationStructureDeviceAddressKHR = (PFN_vkGetAccelerationStructureDeviceAddressKHR)getDeviceProcAddr(
device,
"vkGetAccelerationStructureDeviceAddressKHR");
774 pfn_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = (PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)getDeviceProcAddr(
device,
"vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
775 pfn_vkCmdWriteAccelerationStructuresPropertiesKHR = (PFN_vkCmdWriteAccelerationStructuresPropertiesKHR)getDeviceProcAddr(
device,
"vkCmdWriteAccelerationStructuresPropertiesKHR");
776 pfn_vkCmdTraceRaysIndirectKHR = (PFN_vkCmdTraceRaysIndirectKHR)getDeviceProcAddr(
device,
"vkCmdTraceRaysIndirectKHR");
777 pfn_vkGetDeviceAccelerationStructureCompatibilityKHR = (PFN_vkGetDeviceAccelerationStructureCompatibilityKHR)getDeviceProcAddr(
device,
"vkGetDeviceAccelerationStructureCompatibilityKHR");
779 success = success && (pfn_vkCreateAccelerationStructureKHR != 0);
780 success = success && (pfn_vkDestroyAccelerationStructureKHR != 0);
781 success = success && (pfn_vkGetAccelerationStructureMemoryRequirementsKHR != 0);
782 success = success && (pfn_vkBindAccelerationStructureMemoryKHR != 0);
783 success = success && (pfn_vkCmdBuildAccelerationStructureKHR != 0);
784 success = success && (pfn_vkCmdBuildAccelerationStructureIndirectKHR != 0);
785 success = success && (pfn_vkBuildAccelerationStructureKHR != 0);
786 success = success && (pfn_vkCopyAccelerationStructureKHR != 0);
787 success = success && (pfn_vkCopyAccelerationStructureToMemoryKHR != 0);
788 success = success && (pfn_vkCopyMemoryToAccelerationStructureKHR != 0);
789 success = success && (pfn_vkWriteAccelerationStructuresPropertiesKHR != 0);
790 success = success && (pfn_vkCmdCopyAccelerationStructureKHR != 0);
791 success = success && (pfn_vkCmdCopyAccelerationStructureToMemoryKHR != 0);
792 success = success && (pfn_vkCmdCopyMemoryToAccelerationStructureKHR != 0);
793 success = success && (pfn_vkCmdTraceRaysKHR != 0);
794 success = success && (pfn_vkCreateRayTracingPipelinesKHR != 0);
795 success = success && (pfn_vkGetRayTracingShaderGroupHandlesKHR != 0);
796 success = success && (pfn_vkGetAccelerationStructureDeviceAddressKHR != 0);
797 success = success && (pfn_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR != 0);
798 success = success && (pfn_vkCmdWriteAccelerationStructuresPropertiesKHR != 0);
799 success = success && (pfn_vkCmdTraceRaysIndirectKHR != 0);
800 success = success && (pfn_vkGetDeviceAccelerationStructureCompatibilityKHR != 0);
801 has_VK_KHR_ray_tracing = success;
807#if VK_NV_shading_rate_image
808static PFN_vkCmdBindShadingRateImageNV pfn_vkCmdBindShadingRateImageNV = 0;
809static PFN_vkCmdSetViewportShadingRatePaletteNV pfn_vkCmdSetViewportShadingRatePaletteNV = 0;
810static PFN_vkCmdSetCoarseSampleOrderNV pfn_vkCmdSetCoarseSampleOrderNV = 0;
812VKAPI_ATTR
void VKAPI_CALL vkCmdBindShadingRateImageNV(
813 VkCommandBuffer commandBuffer,
814 VkImageView imageView,
815 VkImageLayout imageLayout)
817 assert(pfn_vkCmdBindShadingRateImageNV);
818 pfn_vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout);
820VKAPI_ATTR
void VKAPI_CALL vkCmdSetViewportShadingRatePaletteNV(
821 VkCommandBuffer commandBuffer,
822 uint32_t firstViewport,
823 uint32_t viewportCount,
824 const VkShadingRatePaletteNV* pShadingRatePalettes)
826 assert(pfn_vkCmdSetViewportShadingRatePaletteNV);
827 pfn_vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes);
829VKAPI_ATTR
void VKAPI_CALL vkCmdSetCoarseSampleOrderNV(
830 VkCommandBuffer commandBuffer,
831 VkCoarseSampleOrderTypeNV sampleOrderType,
832 uint32_t customSampleOrderCount,
833 const VkCoarseSampleOrderCustomNV* pCustomSampleOrders)
835 assert(pfn_vkCmdSetCoarseSampleOrderNV);
836 pfn_vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders);
839int has_VK_NV_shading_rate_image = 0;
840int load_VK_NV_shading_rate_image(VkInstance
instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice
device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
842 pfn_vkCmdBindShadingRateImageNV = (PFN_vkCmdBindShadingRateImageNV)getDeviceProcAddr(
device,
"vkCmdBindShadingRateImageNV");
843 pfn_vkCmdSetViewportShadingRatePaletteNV = (PFN_vkCmdSetViewportShadingRatePaletteNV)getDeviceProcAddr(
device,
"vkCmdSetViewportShadingRatePaletteNV");
844 pfn_vkCmdSetCoarseSampleOrderNV = (PFN_vkCmdSetCoarseSampleOrderNV)getDeviceProcAddr(
device,
"vkCmdSetCoarseSampleOrderNV");
846 success = success && (pfn_vkCmdBindShadingRateImageNV != 0);
847 success = success && (pfn_vkCmdSetViewportShadingRatePaletteNV != 0);
848 success = success && (pfn_vkCmdSetCoarseSampleOrderNV != 0);
849 has_VK_NV_shading_rate_image = success;
856static PFN_vkCreateAccelerationStructureNV pfn_vkCreateAccelerationStructureNV = 0;
857static PFN_vkDestroyAccelerationStructureNV pfn_vkDestroyAccelerationStructureNV = 0;
858static PFN_vkGetAccelerationStructureMemoryRequirementsNV pfn_vkGetAccelerationStructureMemoryRequirementsNV = 0;
859static PFN_vkBindAccelerationStructureMemoryNV pfn_vkBindAccelerationStructureMemoryNV = 0;
860static PFN_vkCmdBuildAccelerationStructureNV pfn_vkCmdBuildAccelerationStructureNV = 0;
861static PFN_vkCmdCopyAccelerationStructureNV pfn_vkCmdCopyAccelerationStructureNV = 0;
862static PFN_vkCmdTraceRaysNV pfn_vkCmdTraceRaysNV = 0;
863static PFN_vkCreateRayTracingPipelinesNV pfn_vkCreateRayTracingPipelinesNV = 0;
864static PFN_vkGetRayTracingShaderGroupHandlesNV pfn_vkGetRayTracingShaderGroupHandlesNV = 0;
865static PFN_vkGetAccelerationStructureHandleNV pfn_vkGetAccelerationStructureHandleNV = 0;
866static PFN_vkCmdWriteAccelerationStructuresPropertiesNV pfn_vkCmdWriteAccelerationStructuresPropertiesNV = 0;
867static PFN_vkCompileDeferredNV pfn_vkCompileDeferredNV = 0;
869VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureNV(
871 const VkAccelerationStructureCreateInfoNV* pCreateInfo,
872 const VkAllocationCallbacks* pAllocator,
873 VkAccelerationStructureNV* pAccelerationStructure)
875 assert(pfn_vkCreateAccelerationStructureNV);
876 return pfn_vkCreateAccelerationStructureNV(
device, pCreateInfo, pAllocator, pAccelerationStructure);
878VKAPI_ATTR
void VKAPI_CALL vkDestroyAccelerationStructureNV(
880 VkAccelerationStructureNV accelerationStructure,
881 const VkAllocationCallbacks* pAllocator)
883 assert(pfn_vkDestroyAccelerationStructureNV);
884 pfn_vkDestroyAccelerationStructureNV(
device, accelerationStructure, pAllocator);
886VKAPI_ATTR
void VKAPI_CALL vkGetAccelerationStructureMemoryRequirementsNV(
888 const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
889 VkMemoryRequirements2KHR* pMemoryRequirements)
891 assert(pfn_vkGetAccelerationStructureMemoryRequirementsNV);
892 pfn_vkGetAccelerationStructureMemoryRequirementsNV(
device, pInfo, pMemoryRequirements);
894VKAPI_ATTR VkResult VKAPI_CALL vkBindAccelerationStructureMemoryNV(
896 uint32_t bindInfoCount,
897 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
899 assert(pfn_vkBindAccelerationStructureMemoryNV);
900 return pfn_vkBindAccelerationStructureMemoryNV(
device, bindInfoCount, pBindInfos);
902VKAPI_ATTR
void VKAPI_CALL vkCmdBuildAccelerationStructureNV(
903 VkCommandBuffer commandBuffer,
904 const VkAccelerationStructureInfoNV* pInfo,
905 VkBuffer instanceData,
906 VkDeviceSize instanceOffset,
908 VkAccelerationStructureNV dst,
909 VkAccelerationStructureNV src,
911 VkDeviceSize scratchOffset)
913 assert(pfn_vkCmdBuildAccelerationStructureNV);
914 pfn_vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset);
916VKAPI_ATTR
void VKAPI_CALL vkCmdCopyAccelerationStructureNV(
917 VkCommandBuffer commandBuffer,
918 VkAccelerationStructureNV dst,
919 VkAccelerationStructureNV src,
920 VkCopyAccelerationStructureModeNV mode)
922 assert(pfn_vkCmdCopyAccelerationStructureNV);
923 pfn_vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode);
925VKAPI_ATTR
void VKAPI_CALL vkCmdTraceRaysNV(
926 VkCommandBuffer commandBuffer,
927 VkBuffer raygenShaderBindingTableBuffer,
928 VkDeviceSize raygenShaderBindingOffset,
929 VkBuffer missShaderBindingTableBuffer,
930 VkDeviceSize missShaderBindingOffset,
931 VkDeviceSize missShaderBindingStride,
932 VkBuffer hitShaderBindingTableBuffer,
933 VkDeviceSize hitShaderBindingOffset,
934 VkDeviceSize hitShaderBindingStride,
935 VkBuffer callableShaderBindingTableBuffer,
936 VkDeviceSize callableShaderBindingOffset,
937 VkDeviceSize callableShaderBindingStride,
942 assert(pfn_vkCmdTraceRaysNV);
943 pfn_vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth);
945VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesNV(
947 VkPipelineCache pipelineCache,
948 uint32_t createInfoCount,
949 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
950 const VkAllocationCallbacks* pAllocator,
951 VkPipeline* pPipelines)
953 assert(pfn_vkCreateRayTracingPipelinesNV);
954 return pfn_vkCreateRayTracingPipelinesNV(
device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
956VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingShaderGroupHandlesNV(
964 assert(pfn_vkGetRayTracingShaderGroupHandlesNV);
965 return pfn_vkGetRayTracingShaderGroupHandlesNV(
device, pipeline, firstGroup, groupCount, dataSize, pData);
967VKAPI_ATTR VkResult VKAPI_CALL vkGetAccelerationStructureHandleNV(
969 VkAccelerationStructureNV accelerationStructure,
973 assert(pfn_vkGetAccelerationStructureHandleNV);
974 return pfn_vkGetAccelerationStructureHandleNV(
device, accelerationStructure, dataSize, pData);
976VKAPI_ATTR
void VKAPI_CALL vkCmdWriteAccelerationStructuresPropertiesNV(
977 VkCommandBuffer commandBuffer,
978 uint32_t accelerationStructureCount,
979 const VkAccelerationStructureNV* pAccelerationStructures,
980 VkQueryType queryType,
981 VkQueryPool queryPool,
984 assert(pfn_vkCmdWriteAccelerationStructuresPropertiesNV);
985 pfn_vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery);
987VKAPI_ATTR VkResult VKAPI_CALL vkCompileDeferredNV(
992 assert(pfn_vkCompileDeferredNV);
993 return pfn_vkCompileDeferredNV(
device, pipeline, shader);
996int has_VK_NV_ray_tracing = 0;
997int load_VK_NV_ray_tracing(VkInstance
instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice
device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
999 pfn_vkCreateAccelerationStructureNV = (PFN_vkCreateAccelerationStructureNV)getDeviceProcAddr(
device,
"vkCreateAccelerationStructureNV");
1000 pfn_vkDestroyAccelerationStructureNV = (PFN_vkDestroyAccelerationStructureNV)getDeviceProcAddr(
device,
"vkDestroyAccelerationStructureNV");
1001 pfn_vkGetAccelerationStructureMemoryRequirementsNV = (PFN_vkGetAccelerationStructureMemoryRequirementsNV)getDeviceProcAddr(
device,
"vkGetAccelerationStructureMemoryRequirementsNV");
1002 pfn_vkBindAccelerationStructureMemoryNV = (PFN_vkBindAccelerationStructureMemoryNV)getDeviceProcAddr(
device,
"vkBindAccelerationStructureMemoryNV");
1003 pfn_vkCmdBuildAccelerationStructureNV = (PFN_vkCmdBuildAccelerationStructureNV)getDeviceProcAddr(
device,
"vkCmdBuildAccelerationStructureNV");
1004 pfn_vkCmdCopyAccelerationStructureNV = (PFN_vkCmdCopyAccelerationStructureNV)getDeviceProcAddr(
device,
"vkCmdCopyAccelerationStructureNV");
1005 pfn_vkCmdTraceRaysNV = (PFN_vkCmdTraceRaysNV)getDeviceProcAddr(
device,
"vkCmdTraceRaysNV");
1006 pfn_vkCreateRayTracingPipelinesNV = (PFN_vkCreateRayTracingPipelinesNV)getDeviceProcAddr(
device,
"vkCreateRayTracingPipelinesNV");
1007 pfn_vkGetRayTracingShaderGroupHandlesNV = (PFN_vkGetRayTracingShaderGroupHandlesNV)getDeviceProcAddr(
device,
"vkGetRayTracingShaderGroupHandlesNV");
1008 pfn_vkGetAccelerationStructureHandleNV = (PFN_vkGetAccelerationStructureHandleNV)getDeviceProcAddr(
device,
"vkGetAccelerationStructureHandleNV");
1009 pfn_vkCmdWriteAccelerationStructuresPropertiesNV = (PFN_vkCmdWriteAccelerationStructuresPropertiesNV)getDeviceProcAddr(
device,
"vkCmdWriteAccelerationStructuresPropertiesNV");
1010 pfn_vkCompileDeferredNV = (PFN_vkCompileDeferredNV)getDeviceProcAddr(
device,
"vkCompileDeferredNV");
1012 success = success && (pfn_vkCreateAccelerationStructureNV != 0);
1013 success = success && (pfn_vkDestroyAccelerationStructureNV != 0);
1014 success = success && (pfn_vkGetAccelerationStructureMemoryRequirementsNV != 0);
1015 success = success && (pfn_vkBindAccelerationStructureMemoryNV != 0);
1016 success = success && (pfn_vkCmdBuildAccelerationStructureNV != 0);
1017 success = success && (pfn_vkCmdCopyAccelerationStructureNV != 0);
1018 success = success && (pfn_vkCmdTraceRaysNV != 0);
1019 success = success && (pfn_vkCreateRayTracingPipelinesNV != 0);
1020 success = success && (pfn_vkGetRayTracingShaderGroupHandlesNV != 0);
1021 success = success && (pfn_vkGetAccelerationStructureHandleNV != 0);
1022 success = success && (pfn_vkCmdWriteAccelerationStructuresPropertiesNV != 0);
1023 success = success && (pfn_vkCompileDeferredNV != 0);
1024 has_VK_NV_ray_tracing = success;
1030#if VK_KHR_draw_indirect_count
1031static PFN_vkCmdDrawIndirectCountKHR pfn_vkCmdDrawIndirectCountKHR = 0;
1032static PFN_vkCmdDrawIndexedIndirectCountKHR pfn_vkCmdDrawIndexedIndirectCountKHR = 0;
1034VKAPI_ATTR
void VKAPI_CALL vkCmdDrawIndirectCountKHR(
1035 VkCommandBuffer commandBuffer,
1037 VkDeviceSize offset,
1038 VkBuffer countBuffer,
1039 VkDeviceSize countBufferOffset,
1040 uint32_t maxDrawCount,
1043 assert(pfn_vkCmdDrawIndirectCountKHR);
1044 pfn_vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
1046VKAPI_ATTR
void VKAPI_CALL vkCmdDrawIndexedIndirectCountKHR(
1047 VkCommandBuffer commandBuffer,
1049 VkDeviceSize offset,
1050 VkBuffer countBuffer,
1051 VkDeviceSize countBufferOffset,
1052 uint32_t maxDrawCount,
1055 assert(pfn_vkCmdDrawIndexedIndirectCountKHR);
1056 pfn_vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
1059int has_VK_KHR_draw_indirect_count = 0;
1060int load_VK_KHR_draw_indirect_count(VkInstance
instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice
device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
1062 pfn_vkCmdDrawIndirectCountKHR = (PFN_vkCmdDrawIndirectCountKHR)getDeviceProcAddr(
device,
"vkCmdDrawIndirectCountKHR");
1063 pfn_vkCmdDrawIndexedIndirectCountKHR = (PFN_vkCmdDrawIndexedIndirectCountKHR)getDeviceProcAddr(
device,
"vkCmdDrawIndexedIndirectCountKHR");
1065 success = success && (pfn_vkCmdDrawIndirectCountKHR != 0);
1066 success = success && (pfn_vkCmdDrawIndexedIndirectCountKHR != 0);
1067 has_VK_KHR_draw_indirect_count = success;
1073#if VK_EXT_calibrated_timestamps
1074static PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT pfn_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = 0;
1075static PFN_vkGetCalibratedTimestampsEXT pfn_vkGetCalibratedTimestampsEXT = 0;
1077VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
1078 VkPhysicalDevice physicalDevice,
1079 uint32_t* pTimeDomainCount,
1080 VkTimeDomainEXT* pTimeDomains)
1082 assert(pfn_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT);
1083 return pfn_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains);
1085VKAPI_ATTR VkResult VKAPI_CALL vkGetCalibratedTimestampsEXT(
1087 uint32_t timestampCount,
1088 const VkCalibratedTimestampInfoEXT* pTimestampInfos,
1089 uint64_t* pTimestamps,
1090 uint64_t* pMaxDeviation)
1092 assert(pfn_vkGetCalibratedTimestampsEXT);
1093 return pfn_vkGetCalibratedTimestampsEXT(
device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation);
1096int has_VK_EXT_calibrated_timestamps = 0;
1097int load_VK_EXT_calibrated_timestamps(VkInstance
instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice
device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
1099 pfn_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = (PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)getDeviceProcAddr(
device,
"vkGetPhysicalDeviceCalibrateableTimeDomainsEXT");
1100 pfn_vkGetCalibratedTimestampsEXT = (PFN_vkGetCalibratedTimestampsEXT)getDeviceProcAddr(
device,
"vkGetCalibratedTimestampsEXT");
1102 success = success && (pfn_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT != 0);
1103 success = success && (pfn_vkGetCalibratedTimestampsEXT != 0);
1104 has_VK_EXT_calibrated_timestamps = success;
1110#if VK_NV_mesh_shader
1111static PFN_vkCmdDrawMeshTasksNV pfn_vkCmdDrawMeshTasksNV = 0;
1112static PFN_vkCmdDrawMeshTasksIndirectNV pfn_vkCmdDrawMeshTasksIndirectNV = 0;
1113static PFN_vkCmdDrawMeshTasksIndirectCountNV pfn_vkCmdDrawMeshTasksIndirectCountNV = 0;
1115VKAPI_ATTR
void VKAPI_CALL vkCmdDrawMeshTasksNV(
1116 VkCommandBuffer commandBuffer,
1120 assert(pfn_vkCmdDrawMeshTasksNV);
1121 pfn_vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask);
1123VKAPI_ATTR
void VKAPI_CALL vkCmdDrawMeshTasksIndirectNV(
1124 VkCommandBuffer commandBuffer,
1126 VkDeviceSize offset,
1130 assert(pfn_vkCmdDrawMeshTasksIndirectNV);
1131 pfn_vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride);
1133VKAPI_ATTR
void VKAPI_CALL vkCmdDrawMeshTasksIndirectCountNV(
1134 VkCommandBuffer commandBuffer,
1136 VkDeviceSize offset,
1137 VkBuffer countBuffer,
1138 VkDeviceSize countBufferOffset,
1139 uint32_t maxDrawCount,
1142 assert(pfn_vkCmdDrawMeshTasksIndirectCountNV);
1143 pfn_vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
1146int has_VK_NV_mesh_shader = 0;
1147int load_VK_NV_mesh_shader(VkInstance
instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice
device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
1149 pfn_vkCmdDrawMeshTasksNV = (PFN_vkCmdDrawMeshTasksNV)getDeviceProcAddr(
device,
"vkCmdDrawMeshTasksNV");
1150 pfn_vkCmdDrawMeshTasksIndirectNV = (PFN_vkCmdDrawMeshTasksIndirectNV)getDeviceProcAddr(
device,
"vkCmdDrawMeshTasksIndirectNV");
1151 pfn_vkCmdDrawMeshTasksIndirectCountNV = (PFN_vkCmdDrawMeshTasksIndirectCountNV)getDeviceProcAddr(
device,
"vkCmdDrawMeshTasksIndirectCountNV");
1153 success = success && (pfn_vkCmdDrawMeshTasksNV != 0);
1154 success = success && (pfn_vkCmdDrawMeshTasksIndirectNV != 0);
1155 success = success && (pfn_vkCmdDrawMeshTasksIndirectCountNV != 0);
1156 has_VK_NV_mesh_shader = success;
1162#if VK_NV_scissor_exclusive
1163static PFN_vkCmdSetExclusiveScissorNV pfn_vkCmdSetExclusiveScissorNV = 0;
1165VKAPI_ATTR
void VKAPI_CALL vkCmdSetExclusiveScissorNV(
1166 VkCommandBuffer commandBuffer,
1167 uint32_t firstExclusiveScissor,
1168 uint32_t exclusiveScissorCount,
1169 const VkRect2D* pExclusiveScissors)
1171 assert(pfn_vkCmdSetExclusiveScissorNV);
1172 pfn_vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors);
1175int has_VK_NV_scissor_exclusive = 0;
1176int load_VK_NV_scissor_exclusive(VkInstance
instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice
device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
1178 pfn_vkCmdSetExclusiveScissorNV = (PFN_vkCmdSetExclusiveScissorNV)getDeviceProcAddr(
device,
"vkCmdSetExclusiveScissorNV");
1180 success = success && (pfn_vkCmdSetExclusiveScissorNV != 0);
1181 has_VK_NV_scissor_exclusive = success;
1187#if VK_EXT_buffer_device_address
1188static PFN_vkGetBufferDeviceAddressEXT pfn_vkGetBufferDeviceAddressEXT = 0;
1190VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressEXT(
1192 const VkBufferDeviceAddressInfoEXT* pInfo)
1194 assert(pfn_vkGetBufferDeviceAddressEXT);
1195 return pfn_vkGetBufferDeviceAddressEXT(
device, pInfo);
1198int has_VK_EXT_buffer_device_address = 0;
1199int load_VK_EXT_buffer_device_address(VkInstance
instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice
device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
1201 pfn_vkGetBufferDeviceAddressEXT = (PFN_vkGetBufferDeviceAddressEXT)getDeviceProcAddr(
device,
"vkGetBufferDeviceAddressEXT");
1203 success = success && (pfn_vkGetBufferDeviceAddressEXT != 0);
1204 has_VK_EXT_buffer_device_address = success;
1210#if VK_NV_cooperative_matrix
1211static PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV pfn_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = 0;
1213VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
1214 VkPhysicalDevice physicalDevice,
1215 uint32_t* pPropertyCount,
1216 VkCooperativeMatrixPropertiesNV* pProperties)
1218 assert(pfn_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV);
1219 return pfn_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties);
1222int has_VK_NV_cooperative_matrix = 0;
1223int load_VK_NV_cooperative_matrix(VkInstance
instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice
device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
1225 pfn_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = (PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV)getDeviceProcAddr(
device,
"vkGetPhysicalDeviceCooperativeMatrixPropertiesNV");
1227 success = success && (pfn_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV != 0);
1228 has_VK_NV_cooperative_matrix = success;
1234#if VK_NV_coverage_reduction_mode
1235static PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV pfn_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = 0;
1237VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
1238 VkPhysicalDevice physicalDevice,
1239 uint32_t* pCombinationCount,
1240 VkFramebufferMixedSamplesCombinationNV* pCombinations)
1242 assert(pfn_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV);
1243 return pfn_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations);
1246int has_VK_NV_coverage_reduction_mode = 0;
1247int load_VK_NV_coverage_reduction_mode(VkInstance
instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice
device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
1249 pfn_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = (PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV)getDeviceProcAddr(
device,
"vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV");
1251 success = success && (pfn_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV != 0);
1252 has_VK_NV_coverage_reduction_mode = success;
1258#if VK_KHR_buffer_device_address
1259static PFN_vkGetBufferDeviceAddressKHR pfn_vkGetBufferDeviceAddressKHR = 0;
1260static PFN_vkGetBufferOpaqueCaptureAddressKHR pfn_vkGetBufferOpaqueCaptureAddressKHR = 0;
1261static PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR pfn_vkGetDeviceMemoryOpaqueCaptureAddressKHR = 0;
1263VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressKHR(
1265 const VkBufferDeviceAddressInfoKHR* pInfo)
1267 assert(pfn_vkGetBufferDeviceAddressKHR);
1268 return pfn_vkGetBufferDeviceAddressKHR(
device, pInfo);
1270VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddressKHR(
1272 const VkBufferDeviceAddressInfoKHR* pInfo)
1274 assert(pfn_vkGetBufferOpaqueCaptureAddressKHR);
1275 return pfn_vkGetBufferOpaqueCaptureAddressKHR(
device, pInfo);
1277VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddressKHR(
1279 const VkDeviceMemoryOpaqueCaptureAddressInfoKHR* pInfo)
1281 assert(pfn_vkGetDeviceMemoryOpaqueCaptureAddressKHR);
1282 return pfn_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
device, pInfo);
1285int has_VK_KHR_buffer_device_address = 0;
1286int load_VK_KHR_buffer_device_address(VkInstance
instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice
device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
1288 pfn_vkGetBufferDeviceAddressKHR = (PFN_vkGetBufferDeviceAddressKHR)getDeviceProcAddr(
device,
"vkGetBufferDeviceAddressKHR");
1289 pfn_vkGetBufferOpaqueCaptureAddressKHR = (PFN_vkGetBufferOpaqueCaptureAddressKHR)getDeviceProcAddr(
device,
"vkGetBufferOpaqueCaptureAddressKHR");
1290 pfn_vkGetDeviceMemoryOpaqueCaptureAddressKHR = (PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)getDeviceProcAddr(
device,
"vkGetDeviceMemoryOpaqueCaptureAddressKHR");
1292 success = success && (pfn_vkGetBufferDeviceAddressKHR != 0);
1293 success = success && (pfn_vkGetBufferOpaqueCaptureAddressKHR != 0);
1294 success = success && (pfn_vkGetDeviceMemoryOpaqueCaptureAddressKHR != 0);
1295 has_VK_KHR_buffer_device_address = success;
1301#if VK_EXT_host_query_reset
1302static PFN_vkResetQueryPoolEXT pfn_vkResetQueryPoolEXT = 0;
1304VKAPI_ATTR
void VKAPI_CALL vkResetQueryPoolEXT(
1306 VkQueryPool queryPool,
1307 uint32_t firstQuery,
1308 uint32_t queryCount)
1310 assert(pfn_vkResetQueryPoolEXT);
1311 pfn_vkResetQueryPoolEXT(
device, queryPool, firstQuery, queryCount);
1314int has_VK_EXT_host_query_reset = 0;
1315int load_VK_EXT_host_query_reset(VkInstance
instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice
device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
1317 pfn_vkResetQueryPoolEXT = (PFN_vkResetQueryPoolEXT)getDeviceProcAddr(
device,
"vkResetQueryPoolEXT");
1319 success = success && (pfn_vkResetQueryPoolEXT != 0);
1320 has_VK_EXT_host_query_reset = success;
1326#if VK_KHR_pipeline_executable_properties
1327static PFN_vkGetPipelineExecutablePropertiesKHR pfn_vkGetPipelineExecutablePropertiesKHR = 0;
1328static PFN_vkGetPipelineExecutableStatisticsKHR pfn_vkGetPipelineExecutableStatisticsKHR = 0;
1329static PFN_vkGetPipelineExecutableInternalRepresentationsKHR pfn_vkGetPipelineExecutableInternalRepresentationsKHR = 0;
1331VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutablePropertiesKHR(
1333 const VkPipelineInfoKHR* pPipelineInfo,
1334 uint32_t* pExecutableCount,
1335 VkPipelineExecutablePropertiesKHR* pProperties)
1337 assert(pfn_vkGetPipelineExecutablePropertiesKHR);
1338 return pfn_vkGetPipelineExecutablePropertiesKHR(
device, pPipelineInfo, pExecutableCount, pProperties);
1340VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableStatisticsKHR(
1342 const VkPipelineExecutableInfoKHR* pExecutableInfo,
1343 uint32_t* pStatisticCount,
1344 VkPipelineExecutableStatisticKHR* pStatistics)
1346 assert(pfn_vkGetPipelineExecutableStatisticsKHR);
1347 return pfn_vkGetPipelineExecutableStatisticsKHR(
device, pExecutableInfo, pStatisticCount, pStatistics);
1349VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableInternalRepresentationsKHR(
1351 const VkPipelineExecutableInfoKHR* pExecutableInfo,
1352 uint32_t* pInternalRepresentationCount,
1353 VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
1355 assert(pfn_vkGetPipelineExecutableInternalRepresentationsKHR);
1356 return pfn_vkGetPipelineExecutableInternalRepresentationsKHR(
device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations);
1359int has_VK_KHR_pipeline_executable_properties = 0;
1360int load_VK_KHR_pipeline_executable_properties(VkInstance
instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice
device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
1362 pfn_vkGetPipelineExecutablePropertiesKHR = (PFN_vkGetPipelineExecutablePropertiesKHR)getDeviceProcAddr(
device,
"vkGetPipelineExecutablePropertiesKHR");
1363 pfn_vkGetPipelineExecutableStatisticsKHR = (PFN_vkGetPipelineExecutableStatisticsKHR)getDeviceProcAddr(
device,
"vkGetPipelineExecutableStatisticsKHR");
1364 pfn_vkGetPipelineExecutableInternalRepresentationsKHR = (PFN_vkGetPipelineExecutableInternalRepresentationsKHR)getDeviceProcAddr(
device,
"vkGetPipelineExecutableInternalRepresentationsKHR");
1366 success = success && (pfn_vkGetPipelineExecutablePropertiesKHR != 0);
1367 success = success && (pfn_vkGetPipelineExecutableStatisticsKHR != 0);
1368 success = success && (pfn_vkGetPipelineExecutableInternalRepresentationsKHR != 0);
1369 has_VK_KHR_pipeline_executable_properties = success;
1375#if VK_NV_device_generated_commands
1376static PFN_vkGetGeneratedCommandsMemoryRequirementsNV pfn_vkGetGeneratedCommandsMemoryRequirementsNV = 0;
1377static PFN_vkCmdPreprocessGeneratedCommandsNV pfn_vkCmdPreprocessGeneratedCommandsNV = 0;
1378static PFN_vkCmdExecuteGeneratedCommandsNV pfn_vkCmdExecuteGeneratedCommandsNV = 0;
1379static PFN_vkCmdBindPipelineShaderGroupNV pfn_vkCmdBindPipelineShaderGroupNV = 0;
1380static PFN_vkCreateIndirectCommandsLayoutNV pfn_vkCreateIndirectCommandsLayoutNV = 0;
1381static PFN_vkDestroyIndirectCommandsLayoutNV pfn_vkDestroyIndirectCommandsLayoutNV = 0;
1383VKAPI_ATTR
void VKAPI_CALL vkGetGeneratedCommandsMemoryRequirementsNV(
1385 const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
1386 VkMemoryRequirements2* pMemoryRequirements)
1388 assert(pfn_vkGetGeneratedCommandsMemoryRequirementsNV);
1389 pfn_vkGetGeneratedCommandsMemoryRequirementsNV(
device, pInfo, pMemoryRequirements);
1391VKAPI_ATTR
void VKAPI_CALL vkCmdPreprocessGeneratedCommandsNV(
1392 VkCommandBuffer commandBuffer,
1393 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
1395 assert(pfn_vkCmdPreprocessGeneratedCommandsNV);
1396 pfn_vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo);
1398VKAPI_ATTR
void VKAPI_CALL vkCmdExecuteGeneratedCommandsNV(
1399 VkCommandBuffer commandBuffer,
1400 VkBool32 isPreprocessed,
1401 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
1403 assert(pfn_vkCmdExecuteGeneratedCommandsNV);
1404 pfn_vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo);
1406VKAPI_ATTR
void VKAPI_CALL vkCmdBindPipelineShaderGroupNV(
1407 VkCommandBuffer commandBuffer,
1408 VkPipelineBindPoint pipelineBindPoint,
1409 VkPipeline pipeline,
1410 uint32_t groupIndex)
1412 assert(pfn_vkCmdBindPipelineShaderGroupNV);
1413 pfn_vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex);
1415VKAPI_ATTR VkResult VKAPI_CALL vkCreateIndirectCommandsLayoutNV(
1417 const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
1418 const VkAllocationCallbacks* pAllocator,
1419 VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
1421 assert(pfn_vkCreateIndirectCommandsLayoutNV);
1422 return pfn_vkCreateIndirectCommandsLayoutNV(
device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
1424VKAPI_ATTR
void VKAPI_CALL vkDestroyIndirectCommandsLayoutNV(
1426 VkIndirectCommandsLayoutNV indirectCommandsLayout,
1427 const VkAllocationCallbacks* pAllocator)
1429 assert(pfn_vkDestroyIndirectCommandsLayoutNV);
1430 pfn_vkDestroyIndirectCommandsLayoutNV(
device, indirectCommandsLayout, pAllocator);
1433int has_VK_NV_device_generated_commands = 0;
1434int load_VK_NV_device_generated_commands(VkInstance
instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice
device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
1436 pfn_vkGetGeneratedCommandsMemoryRequirementsNV = (PFN_vkGetGeneratedCommandsMemoryRequirementsNV)getDeviceProcAddr(
device,
"vkGetGeneratedCommandsMemoryRequirementsNV");
1437 pfn_vkCmdPreprocessGeneratedCommandsNV = (PFN_vkCmdPreprocessGeneratedCommandsNV)getDeviceProcAddr(
device,
"vkCmdPreprocessGeneratedCommandsNV");
1438 pfn_vkCmdExecuteGeneratedCommandsNV = (PFN_vkCmdExecuteGeneratedCommandsNV)getDeviceProcAddr(
device,
"vkCmdExecuteGeneratedCommandsNV");
1439 pfn_vkCmdBindPipelineShaderGroupNV = (PFN_vkCmdBindPipelineShaderGroupNV)getDeviceProcAddr(
device,
"vkCmdBindPipelineShaderGroupNV");
1440 pfn_vkCreateIndirectCommandsLayoutNV = (PFN_vkCreateIndirectCommandsLayoutNV)getDeviceProcAddr(
device,
"vkCreateIndirectCommandsLayoutNV");
1441 pfn_vkDestroyIndirectCommandsLayoutNV = (PFN_vkDestroyIndirectCommandsLayoutNV)getDeviceProcAddr(
device,
"vkDestroyIndirectCommandsLayoutNV");
1443 success = success && (pfn_vkGetGeneratedCommandsMemoryRequirementsNV != 0);
1444 success = success && (pfn_vkCmdPreprocessGeneratedCommandsNV != 0);
1445 success = success && (pfn_vkCmdExecuteGeneratedCommandsNV != 0);
1446 success = success && (pfn_vkCmdBindPipelineShaderGroupNV != 0);
1447 success = success && (pfn_vkCreateIndirectCommandsLayoutNV != 0);
1448 success = success && (pfn_vkDestroyIndirectCommandsLayoutNV != 0);
1449 has_VK_NV_device_generated_commands = success;
1457#if VK_EXT_debug_marker
1458 load_VK_EXT_debug_marker(
instance, getInstanceProcAddr,
device, getDeviceProcAddr);
1460#if VK_KHR_external_memory_win32 && defined(VK_USE_PLATFORM_WIN32_KHR)
1461 load_VK_KHR_external_memory_win32(
instance, getInstanceProcAddr,
device, getDeviceProcAddr);
1463#if VK_KHR_external_memory_fd
1464 load_VK_KHR_external_memory_fd(
instance, getInstanceProcAddr,
device, getDeviceProcAddr);
1466#if VK_KHR_external_semaphore_win32 && defined(VK_USE_PLATFORM_WIN32_KHR)
1467 load_VK_KHR_external_semaphore_win32(
instance, getInstanceProcAddr,
device, getDeviceProcAddr);
1469#if VK_KHR_external_semaphore_fd
1470 load_VK_KHR_external_semaphore_fd(
instance, getInstanceProcAddr,
device, getDeviceProcAddr);
1472#if VK_KHR_push_descriptor
1473 load_VK_KHR_push_descriptor(
instance, getInstanceProcAddr,
device, getDeviceProcAddr);
1475#if VK_KHR_create_renderpass2
1476 load_VK_KHR_create_renderpass2(
instance, getInstanceProcAddr,
device, getDeviceProcAddr);
1478#if VK_KHR_external_fence_win32 && defined(VK_USE_PLATFORM_WIN32_KHR)
1479 load_VK_KHR_external_fence_win32(
instance, getInstanceProcAddr,
device, getDeviceProcAddr);
1481#if VK_EXT_debug_utils
1482 load_VK_EXT_debug_utils(
instance, getInstanceProcAddr,
device, getDeviceProcAddr);
1484#if VK_EXT_sample_locations
1485 load_VK_EXT_sample_locations(
instance, getInstanceProcAddr,
device, getDeviceProcAddr);
1487#if VK_KHR_ray_tracing
1488 load_VK_KHR_ray_tracing(
instance, getInstanceProcAddr,
device, getDeviceProcAddr);
1490#if VK_NV_shading_rate_image
1491 load_VK_NV_shading_rate_image(
instance, getInstanceProcAddr,
device, getDeviceProcAddr);
1493#if VK_NV_ray_tracing
1494 load_VK_NV_ray_tracing(
instance, getInstanceProcAddr,
device, getDeviceProcAddr);
1496#if VK_KHR_draw_indirect_count
1497 load_VK_KHR_draw_indirect_count(
instance, getInstanceProcAddr,
device, getDeviceProcAddr);
1499#if VK_EXT_calibrated_timestamps
1500 load_VK_EXT_calibrated_timestamps(
instance, getInstanceProcAddr,
device, getDeviceProcAddr);
1502#if VK_NV_mesh_shader
1503 load_VK_NV_mesh_shader(
instance, getInstanceProcAddr,
device, getDeviceProcAddr);
1505#if VK_NV_scissor_exclusive
1506 load_VK_NV_scissor_exclusive(
instance, getInstanceProcAddr,
device, getDeviceProcAddr);
1508#if VK_EXT_buffer_device_address
1509 load_VK_EXT_buffer_device_address(
instance, getInstanceProcAddr,
device, getDeviceProcAddr);
1511#if VK_NV_cooperative_matrix
1512 load_VK_NV_cooperative_matrix(
instance, getInstanceProcAddr,
device, getDeviceProcAddr);
1514#if VK_NV_coverage_reduction_mode
1515 load_VK_NV_coverage_reduction_mode(
instance, getInstanceProcAddr,
device, getDeviceProcAddr);
1517#if VK_KHR_buffer_device_address
1518 load_VK_KHR_buffer_device_address(
instance, getInstanceProcAddr,
device, getDeviceProcAddr);
1520#if VK_EXT_host_query_reset
1521 load_VK_EXT_host_query_reset(
instance, getInstanceProcAddr,
device, getDeviceProcAddr);
1523#if VK_KHR_pipeline_executable_properties
1524 load_VK_KHR_pipeline_executable_properties(
instance, getInstanceProcAddr,
device, getDeviceProcAddr);
1526#if VK_NV_device_generated_commands
1527 load_VK_NV_device_generated_commands(
instance, getInstanceProcAddr,
device, getDeviceProcAddr);
1535#if VK_EXT_debug_marker
1536 has_VK_EXT_debug_marker = 0;
1537 pfn_vkDebugMarkerSetObjectTagEXT = 0;
1538 pfn_vkDebugMarkerSetObjectNameEXT = 0;
1539 pfn_vkCmdDebugMarkerBeginEXT = 0;
1540 pfn_vkCmdDebugMarkerEndEXT = 0;
1541 pfn_vkCmdDebugMarkerInsertEXT = 0;
1544#if VK_KHR_external_memory_win32 && defined(VK_USE_PLATFORM_WIN32_KHR)
1545 has_VK_KHR_external_memory_win32 = 0;
1546 pfn_vkGetMemoryWin32HandleKHR = 0;
1547 pfn_vkGetMemoryWin32HandlePropertiesKHR = 0;
1550#if VK_KHR_external_memory_fd
1551 has_VK_KHR_external_memory_fd = 0;
1552 pfn_vkGetMemoryFdKHR = 0;
1553 pfn_vkGetMemoryFdPropertiesKHR = 0;
1556#if VK_KHR_external_semaphore_win32 && defined(VK_USE_PLATFORM_WIN32_KHR)
1557 has_VK_KHR_external_semaphore_win32 = 0;
1558 pfn_vkImportSemaphoreWin32HandleKHR = 0;
1559 pfn_vkGetSemaphoreWin32HandleKHR = 0;
1562#if VK_KHR_external_semaphore_fd
1563 has_VK_KHR_external_semaphore_fd = 0;
1564 pfn_vkImportSemaphoreFdKHR = 0;
1565 pfn_vkGetSemaphoreFdKHR = 0;
1568#if VK_KHR_push_descriptor
1569 has_VK_KHR_push_descriptor = 0;
1570 pfn_vkCmdPushDescriptorSetKHR = 0;
1571 pfn_vkCmdPushDescriptorSetWithTemplateKHR = 0;
1574#if VK_KHR_create_renderpass2
1575 has_VK_KHR_create_renderpass2 = 0;
1576 pfn_vkCreateRenderPass2KHR = 0;
1577 pfn_vkCmdBeginRenderPass2KHR = 0;
1578 pfn_vkCmdNextSubpass2KHR = 0;
1579 pfn_vkCmdEndRenderPass2KHR = 0;
1582#if VK_KHR_external_fence_win32 && defined(VK_USE_PLATFORM_WIN32_KHR)
1583 has_VK_KHR_external_fence_win32 = 0;
1584 pfn_vkImportFenceWin32HandleKHR = 0;
1585 pfn_vkGetFenceWin32HandleKHR = 0;
1588#if VK_EXT_debug_utils
1589 has_VK_EXT_debug_utils = 0;
1590 pfn_vkSetDebugUtilsObjectNameEXT = 0;
1591 pfn_vkSetDebugUtilsObjectTagEXT = 0;
1592 pfn_vkQueueBeginDebugUtilsLabelEXT = 0;
1593 pfn_vkQueueEndDebugUtilsLabelEXT = 0;
1594 pfn_vkQueueInsertDebugUtilsLabelEXT = 0;
1595 pfn_vkCmdBeginDebugUtilsLabelEXT = 0;
1596 pfn_vkCmdEndDebugUtilsLabelEXT = 0;
1597 pfn_vkCmdInsertDebugUtilsLabelEXT = 0;
1598 pfn_vkCreateDebugUtilsMessengerEXT = 0;
1599 pfn_vkDestroyDebugUtilsMessengerEXT = 0;
1600 pfn_vkSubmitDebugUtilsMessageEXT = 0;
1603#if VK_EXT_sample_locations
1604 has_VK_EXT_sample_locations = 0;
1605 pfn_vkCmdSetSampleLocationsEXT = 0;
1606 pfn_vkGetPhysicalDeviceMultisamplePropertiesEXT = 0;
1609#if VK_KHR_ray_tracing
1610 has_VK_KHR_ray_tracing = 0;
1611 PFN_vkCreateAccelerationStructureKHR pfn_vkCreateAccelerationStructureKHR = 0;
1612 PFN_vkDestroyAccelerationStructureKHR pfn_vkDestroyAccelerationStructureKHR = 0;
1613 PFN_vkGetAccelerationStructureMemoryRequirementsKHR pfn_vkGetAccelerationStructureMemoryRequirementsKHR = 0;
1614 PFN_vkBindAccelerationStructureMemoryKHR pfn_vkBindAccelerationStructureMemoryKHR = 0;
1615 PFN_vkCmdBuildAccelerationStructureKHR pfn_vkCmdBuildAccelerationStructureKHR = 0;
1616 PFN_vkCmdBuildAccelerationStructureIndirectKHR pfn_vkCmdBuildAccelerationStructureIndirectKHR = 0;
1617 PFN_vkBuildAccelerationStructureKHR pfn_vkBuildAccelerationStructureKHR = 0;
1618 PFN_vkCopyAccelerationStructureKHR pfn_vkCopyAccelerationStructureKHR = 0;
1619 PFN_vkCopyAccelerationStructureToMemoryKHR pfn_vkCopyAccelerationStructureToMemoryKHR = 0;
1620 PFN_vkCopyMemoryToAccelerationStructureKHR pfn_vkCopyMemoryToAccelerationStructureKHR = 0;
1621 PFN_vkWriteAccelerationStructuresPropertiesKHR pfn_vkWriteAccelerationStructuresPropertiesKHR = 0;
1622 PFN_vkCmdCopyAccelerationStructureKHR pfn_vkCmdCopyAccelerationStructureKHR = 0;
1623 PFN_vkCmdCopyAccelerationStructureToMemoryKHR pfn_vkCmdCopyAccelerationStructureToMemoryKHR = 0;
1624 PFN_vkCmdCopyMemoryToAccelerationStructureKHR pfn_vkCmdCopyMemoryToAccelerationStructureKHR = 0;
1625 PFN_vkCmdTraceRaysKHR pfn_vkCmdTraceRaysKHR = 0;
1626 PFN_vkCreateRayTracingPipelinesKHR pfn_vkCreateRayTracingPipelinesKHR = 0;
1627 PFN_vkGetRayTracingShaderGroupHandlesKHR pfn_vkGetRayTracingShaderGroupHandlesKHR = 0;
1628 PFN_vkGetAccelerationStructureDeviceAddressKHR pfn_vkGetAccelerationStructureDeviceAddressKHR = 0;
1629 PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR pfn_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = 0;
1630 PFN_vkCmdWriteAccelerationStructuresPropertiesKHR pfn_vkCmdWriteAccelerationStructuresPropertiesKHR = 0;
1631 PFN_vkCmdTraceRaysIndirectKHR pfn_vkCmdTraceRaysIndirectKHR = 0;
1632 PFN_vkGetDeviceAccelerationStructureCompatibilityKHR pfn_vkGetDeviceAccelerationStructureCompatibilityKHR = 0;
1635#if VK_NV_shading_rate_image
1636 has_VK_NV_shading_rate_image = 0;
1637 pfn_vkCmdBindShadingRateImageNV = 0;
1638 pfn_vkCmdSetViewportShadingRatePaletteNV = 0;
1639 pfn_vkCmdSetCoarseSampleOrderNV = 0;
1642#if VK_NV_ray_tracing
1643 has_VK_NV_ray_tracing = 0;
1644 pfn_vkCreateAccelerationStructureNV = 0;
1645 pfn_vkDestroyAccelerationStructureNV = 0;
1646 pfn_vkGetAccelerationStructureMemoryRequirementsNV = 0;
1647 pfn_vkBindAccelerationStructureMemoryNV = 0;
1648 pfn_vkCmdBuildAccelerationStructureNV = 0;
1649 pfn_vkCmdCopyAccelerationStructureNV = 0;
1650 pfn_vkCmdTraceRaysNV = 0;
1651 pfn_vkCreateRayTracingPipelinesNV = 0;
1652 pfn_vkGetRayTracingShaderGroupHandlesNV = 0;
1653 pfn_vkGetAccelerationStructureHandleNV = 0;
1654 pfn_vkCmdWriteAccelerationStructuresPropertiesNV = 0;
1655 pfn_vkCompileDeferredNV = 0;
1658#if VK_KHR_draw_indirect_count
1659 has_VK_KHR_draw_indirect_count = 0;
1660 pfn_vkCmdDrawIndirectCountKHR = 0;
1661 pfn_vkCmdDrawIndexedIndirectCountKHR = 0;
1664#if VK_EXT_calibrated_timestamps
1665 has_VK_EXT_calibrated_timestamps = 0;
1666 pfn_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = 0;
1667 pfn_vkGetCalibratedTimestampsEXT = 0;
1670#if VK_NV_mesh_shader
1671 has_VK_NV_mesh_shader = 0;
1672 pfn_vkCmdDrawMeshTasksNV = 0;
1673 pfn_vkCmdDrawMeshTasksIndirectNV = 0;
1674 pfn_vkCmdDrawMeshTasksIndirectCountNV = 0;
1677#if VK_NV_scissor_exclusive
1678 has_VK_NV_scissor_exclusive = 0;
1679 pfn_vkCmdSetExclusiveScissorNV = 0;
1682#if VK_EXT_buffer_device_address
1683 has_VK_EXT_buffer_device_address = 0;
1684 pfn_vkGetBufferDeviceAddressEXT = 0;
1687#if VK_NV_cooperative_matrix
1688 has_VK_NV_cooperative_matrix = 0;
1689 pfn_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = 0;
1692#if VK_NV_coverage_reduction_mode
1693 has_VK_NV_coverage_reduction_mode = 0;
1694 pfn_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = 0;
1697#if VK_KHR_buffer_device_address
1698 has_VK_KHR_buffer_device_address = 0;
1699 pfn_vkGetBufferDeviceAddressKHR = 0;
1700 pfn_vkGetBufferOpaqueCaptureAddressKHR = 0;
1701 pfn_vkGetDeviceMemoryOpaqueCaptureAddressKHR = 0;
1704#if VK_EXT_host_query_reset
1705 has_VK_EXT_host_query_reset = 0;
1706 pfn_vkResetQueryPoolEXT = 0;
1709#if VK_KHR_pipeline_executable_properties
1710 has_VK_KHR_pipeline_executable_properties = 0;
1711 pfn_vkGetPipelineExecutablePropertiesKHR = 0;
1712 pfn_vkGetPipelineExecutableStatisticsKHR = 0;
1713 pfn_vkGetPipelineExecutableInternalRepresentationsKHR = 0;
1716#if VK_NV_device_generated_commands
1717 has_VK_NV_device_generated_commands = 0;
1718 pfn_vkGetGeneratedCommandsMemoryRequirementsNV = 0;
1719 pfn_vkCmdPreprocessGeneratedCommandsNV = 0;
1720 pfn_vkCmdExecuteGeneratedCommandsNV = 0;
1721 pfn_vkCmdBindPipelineShaderGroupNV = 0;
1722 pfn_vkCreateIndirectCommandsLayoutNV = 0;
1723 pfn_vkDestroyIndirectCommandsLayoutNV = 0;
void reset_VK_EXTENSION_SUBSET()
void load_VK_EXTENSION_SUBSET(VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)