VulkanRaytracingCycles 0.0.0
Cycles Render Engine With VulkanRaytracingShaderModules. ( Experiment , in progress)
extensions_vk.cpp
Go to the documentation of this file.
1/* based on VK_HEADER_VERSION 135 */
2/* auto generated by extensions_vk.lua */
3
4/* Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * * Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * * Neither the name of NVIDIA CORPORATION nor the names of its
15 * contributors may be used to endorse or promote products derived
16 * from this software without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
19 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
22 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
25 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
26 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31#include "pch_mm.h"
32#include <assert.h>
33#include "extensions_vk.hpp"
34
35 /* loaders */
36 /* /////////////////////////////////// */
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;
43
44VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectTagEXT(
45 VkDevice device,
46 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
47{
48 assert(pfn_vkDebugMarkerSetObjectTagEXT);
49 return pfn_vkDebugMarkerSetObjectTagEXT(device, pTagInfo);
50}
51VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectNameEXT(
52 VkDevice device,
53 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
54{
55 assert(pfn_vkDebugMarkerSetObjectNameEXT);
56 return pfn_vkDebugMarkerSetObjectNameEXT(device, pNameInfo);
57}
58VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerBeginEXT(
59 VkCommandBuffer commandBuffer,
60 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
61{
62 assert(pfn_vkCmdDebugMarkerBeginEXT);
63 pfn_vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo);
64}
65VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerEndEXT(
66 VkCommandBuffer commandBuffer)
67{
68 assert(pfn_vkCmdDebugMarkerEndEXT);
69 pfn_vkCmdDebugMarkerEndEXT(commandBuffer);
70}
71VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerInsertEXT(
72 VkCommandBuffer commandBuffer,
73 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
74{
75 assert(pfn_vkCmdDebugMarkerInsertEXT);
76 pfn_vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo);
77}
78
79int has_VK_EXT_debug_marker = 0;
80int load_VK_EXT_debug_marker(VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
81{
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");
87 int success = 1;
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;
94 return success;
95}
96#endif
97
98/* /////////////////////////////////// */
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;
102
103VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleKHR(
104 VkDevice device,
105 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
106 HANDLE* pHandle)
107{
108 assert(pfn_vkGetMemoryWin32HandleKHR);
109 return pfn_vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
110}
111VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandlePropertiesKHR(
112 VkDevice device,
113 VkExternalMemoryHandleTypeFlagBits handleType,
114 HANDLE handle,
115 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
116{
117 assert(pfn_vkGetMemoryWin32HandlePropertiesKHR);
118 return pfn_vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties);
119}
120
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)
123{
124 pfn_vkGetMemoryWin32HandleKHR = (PFN_vkGetMemoryWin32HandleKHR)getDeviceProcAddr(device, "vkGetMemoryWin32HandleKHR");
125 pfn_vkGetMemoryWin32HandlePropertiesKHR = (PFN_vkGetMemoryWin32HandlePropertiesKHR)getDeviceProcAddr(device, "vkGetMemoryWin32HandlePropertiesKHR");
126 int success = 1;
127 success = success && (pfn_vkGetMemoryWin32HandleKHR != 0);
128 success = success && (pfn_vkGetMemoryWin32HandlePropertiesKHR != 0);
129 has_VK_KHR_external_memory_win32 = success;
130 return success;
131}
132#endif
133
134/* /////////////////////////////////// */
135#if VK_KHR_external_memory_fd
136static PFN_vkGetMemoryFdKHR pfn_vkGetMemoryFdKHR = 0;
137static PFN_vkGetMemoryFdPropertiesKHR pfn_vkGetMemoryFdPropertiesKHR = 0;
138
139VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdKHR(
140 VkDevice device,
141 const VkMemoryGetFdInfoKHR* pGetFdInfo,
142 int* pFd)
143{
144 assert(pfn_vkGetMemoryFdKHR);
145 return pfn_vkGetMemoryFdKHR(device, pGetFdInfo, pFd);
146}
147VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdPropertiesKHR(
148 VkDevice device,
149 VkExternalMemoryHandleTypeFlagBits handleType,
150 int fd,
151 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
152{
153 assert(pfn_vkGetMemoryFdPropertiesKHR);
154 return pfn_vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties);
155}
156
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)
159{
160 pfn_vkGetMemoryFdKHR = (PFN_vkGetMemoryFdKHR)getDeviceProcAddr(device, "vkGetMemoryFdKHR");
161 pfn_vkGetMemoryFdPropertiesKHR = (PFN_vkGetMemoryFdPropertiesKHR)getDeviceProcAddr(device, "vkGetMemoryFdPropertiesKHR");
162 int success = 1;
163 success = success && (pfn_vkGetMemoryFdKHR != 0);
164 success = success && (pfn_vkGetMemoryFdPropertiesKHR != 0);
165 has_VK_KHR_external_memory_fd = success;
166 return success;
167}
168#endif
169
170/* /////////////////////////////////// */
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;
174
175VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreWin32HandleKHR(
176 VkDevice device,
177 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
178{
179 assert(pfn_vkImportSemaphoreWin32HandleKHR);
180 return pfn_vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo);
181}
182VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreWin32HandleKHR(
183 VkDevice device,
184 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
185 HANDLE* pHandle)
186{
187 assert(pfn_vkGetSemaphoreWin32HandleKHR);
188 return pfn_vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
189}
190
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)
193{
194 pfn_vkImportSemaphoreWin32HandleKHR = (PFN_vkImportSemaphoreWin32HandleKHR)getDeviceProcAddr(device, "vkImportSemaphoreWin32HandleKHR");
195 pfn_vkGetSemaphoreWin32HandleKHR = (PFN_vkGetSemaphoreWin32HandleKHR)getDeviceProcAddr(device, "vkGetSemaphoreWin32HandleKHR");
196 int success = 1;
197 success = success && (pfn_vkImportSemaphoreWin32HandleKHR != 0);
198 success = success && (pfn_vkGetSemaphoreWin32HandleKHR != 0);
199 has_VK_KHR_external_semaphore_win32 = success;
200 return success;
201}
202#endif
203
204/* /////////////////////////////////// */
205#if VK_KHR_external_semaphore_fd
206static PFN_vkImportSemaphoreFdKHR pfn_vkImportSemaphoreFdKHR = 0;
207static PFN_vkGetSemaphoreFdKHR pfn_vkGetSemaphoreFdKHR = 0;
208
209VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreFdKHR(
210 VkDevice device,
211 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
212{
213 assert(pfn_vkImportSemaphoreFdKHR);
214 return pfn_vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo);
215}
216VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreFdKHR(
217 VkDevice device,
218 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
219 int* pFd)
220{
221 assert(pfn_vkGetSemaphoreFdKHR);
222 return pfn_vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd);
223}
224
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)
227{
228 pfn_vkImportSemaphoreFdKHR = (PFN_vkImportSemaphoreFdKHR)getDeviceProcAddr(device, "vkImportSemaphoreFdKHR");
229 pfn_vkGetSemaphoreFdKHR = (PFN_vkGetSemaphoreFdKHR)getDeviceProcAddr(device, "vkGetSemaphoreFdKHR");
230 int success = 1;
231 success = success && (pfn_vkImportSemaphoreFdKHR != 0);
232 success = success && (pfn_vkGetSemaphoreFdKHR != 0);
233 has_VK_KHR_external_semaphore_fd = success;
234 return success;
235}
236#endif
237
238/* /////////////////////////////////// */
239#if VK_KHR_push_descriptor
240static PFN_vkCmdPushDescriptorSetKHR pfn_vkCmdPushDescriptorSetKHR = 0;
241static PFN_vkCmdPushDescriptorSetWithTemplateKHR pfn_vkCmdPushDescriptorSetWithTemplateKHR = 0;
242
243VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetKHR(
244 VkCommandBuffer commandBuffer,
245 VkPipelineBindPoint pipelineBindPoint,
246 VkPipelineLayout layout,
247 uint32_t set,
248 uint32_t descriptorWriteCount,
249 const VkWriteDescriptorSet* pDescriptorWrites)
250{
251 assert(pfn_vkCmdPushDescriptorSetKHR);
252 pfn_vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites);
253}
254VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplateKHR(
255 VkCommandBuffer commandBuffer,
256 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
257 VkPipelineLayout layout,
258 uint32_t set,
259 const void* pData)
260{
261 assert(pfn_vkCmdPushDescriptorSetWithTemplateKHR);
262 pfn_vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData);
263}
264
265int has_VK_KHR_push_descriptor = 0;
266int load_VK_KHR_push_descriptor(VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
267{
268 pfn_vkCmdPushDescriptorSetKHR = (PFN_vkCmdPushDescriptorSetKHR)getDeviceProcAddr(device, "vkCmdPushDescriptorSetKHR");
269 pfn_vkCmdPushDescriptorSetWithTemplateKHR = (PFN_vkCmdPushDescriptorSetWithTemplateKHR)getDeviceProcAddr(device, "vkCmdPushDescriptorSetWithTemplateKHR");
270 int success = 1;
271 success = success && (pfn_vkCmdPushDescriptorSetKHR != 0);
272 success = success && (pfn_vkCmdPushDescriptorSetWithTemplateKHR != 0);
273 has_VK_KHR_push_descriptor = success;
274 return success;
275}
276#endif
277
278/* /////////////////////////////////// */
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;
284
285VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2KHR(
286 VkDevice device,
287 const VkRenderPassCreateInfo2KHR* pCreateInfo,
288 const VkAllocationCallbacks* pAllocator,
289 VkRenderPass* pRenderPass)
290{
291 assert(pfn_vkCreateRenderPass2KHR);
292 return pfn_vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass);
293}
294VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2KHR(
295 VkCommandBuffer commandBuffer,
296 const VkRenderPassBeginInfo* pRenderPassBegin,
297 const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
298{
299 assert(pfn_vkCmdBeginRenderPass2KHR);
300 pfn_vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo);
301}
302VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2KHR(
303 VkCommandBuffer commandBuffer,
304 const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
305 const VkSubpassEndInfoKHR* pSubpassEndInfo)
306{
307 assert(pfn_vkCmdNextSubpass2KHR);
308 pfn_vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
309}
310VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2KHR(
311 VkCommandBuffer commandBuffer,
312 const VkSubpassEndInfoKHR* pSubpassEndInfo)
313{
314 assert(pfn_vkCmdEndRenderPass2KHR);
315 pfn_vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo);
316}
317
318int has_VK_KHR_create_renderpass2 = 0;
319int load_VK_KHR_create_renderpass2(VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
320{
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");
325 int success = 1;
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;
331 return success;
332}
333#endif
334
335/* /////////////////////////////////// */
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;
339
340VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceWin32HandleKHR(
341 VkDevice device,
342 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
343{
344 assert(pfn_vkImportFenceWin32HandleKHR);
345 return pfn_vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo);
346}
347VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceWin32HandleKHR(
348 VkDevice device,
349 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
350 HANDLE* pHandle)
351{
352 assert(pfn_vkGetFenceWin32HandleKHR);
353 return pfn_vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
354}
355
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)
358{
359 pfn_vkImportFenceWin32HandleKHR = (PFN_vkImportFenceWin32HandleKHR)getDeviceProcAddr(device, "vkImportFenceWin32HandleKHR");
360 pfn_vkGetFenceWin32HandleKHR = (PFN_vkGetFenceWin32HandleKHR)getDeviceProcAddr(device, "vkGetFenceWin32HandleKHR");
361 int success = 1;
362 success = success && (pfn_vkImportFenceWin32HandleKHR != 0);
363 success = success && (pfn_vkGetFenceWin32HandleKHR != 0);
364 has_VK_KHR_external_fence_win32 = success;
365 return success;
366}
367#endif
368
369/* /////////////////////////////////// */
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;
382
383VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectNameEXT(
384 VkDevice device,
385 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
386{
387 assert(pfn_vkSetDebugUtilsObjectNameEXT);
388 return pfn_vkSetDebugUtilsObjectNameEXT(device, pNameInfo);
389}
390VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectTagEXT(
391 VkDevice device,
392 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
393{
394 assert(pfn_vkSetDebugUtilsObjectTagEXT);
395 return pfn_vkSetDebugUtilsObjectTagEXT(device, pTagInfo);
396}
397VKAPI_ATTR void VKAPI_CALL vkQueueBeginDebugUtilsLabelEXT(
398 VkQueue queue,
399 const VkDebugUtilsLabelEXT* pLabelInfo)
400{
401 assert(pfn_vkQueueBeginDebugUtilsLabelEXT);
402 pfn_vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo);
403}
404VKAPI_ATTR void VKAPI_CALL vkQueueEndDebugUtilsLabelEXT(
405 VkQueue queue)
406{
407 assert(pfn_vkQueueEndDebugUtilsLabelEXT);
408 pfn_vkQueueEndDebugUtilsLabelEXT(queue);
409}
410VKAPI_ATTR void VKAPI_CALL vkQueueInsertDebugUtilsLabelEXT(
411 VkQueue queue,
412 const VkDebugUtilsLabelEXT* pLabelInfo)
413{
414 assert(pfn_vkQueueInsertDebugUtilsLabelEXT);
415 pfn_vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo);
416}
417VKAPI_ATTR void VKAPI_CALL vkCmdBeginDebugUtilsLabelEXT(
418 VkCommandBuffer commandBuffer,
419 const VkDebugUtilsLabelEXT* pLabelInfo)
420{
421 assert(pfn_vkCmdBeginDebugUtilsLabelEXT);
422 pfn_vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
423}
424VKAPI_ATTR void VKAPI_CALL vkCmdEndDebugUtilsLabelEXT(
425 VkCommandBuffer commandBuffer)
426{
427 assert(pfn_vkCmdEndDebugUtilsLabelEXT);
428 pfn_vkCmdEndDebugUtilsLabelEXT(commandBuffer);
429}
430VKAPI_ATTR void VKAPI_CALL vkCmdInsertDebugUtilsLabelEXT(
431 VkCommandBuffer commandBuffer,
432 const VkDebugUtilsLabelEXT* pLabelInfo)
433{
434 assert(pfn_vkCmdInsertDebugUtilsLabelEXT);
435 pfn_vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
436}
437VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugUtilsMessengerEXT(
438 VkInstance instance,
439 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
440 const VkAllocationCallbacks* pAllocator,
441 VkDebugUtilsMessengerEXT* pMessenger)
442{
443 assert(pfn_vkCreateDebugUtilsMessengerEXT);
444 return pfn_vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger);
445}
446VKAPI_ATTR void VKAPI_CALL vkDestroyDebugUtilsMessengerEXT(
447 VkInstance instance,
448 VkDebugUtilsMessengerEXT messenger,
449 const VkAllocationCallbacks* pAllocator)
450{
451 assert(pfn_vkDestroyDebugUtilsMessengerEXT);
452 pfn_vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator);
453}
454VKAPI_ATTR void VKAPI_CALL vkSubmitDebugUtilsMessageEXT(
455 VkInstance instance,
456 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
457 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
458 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
459{
460 assert(pfn_vkSubmitDebugUtilsMessageEXT);
461 pfn_vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData);
462}
463
464int has_VK_EXT_debug_utils = 0;
465int load_VK_EXT_debug_utils(VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
466{
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");
478 int success = 1;
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;
491 return success;
492}
493#endif
494
495/* /////////////////////////////////// */
496#if VK_EXT_sample_locations
497static PFN_vkCmdSetSampleLocationsEXT pfn_vkCmdSetSampleLocationsEXT = 0;
498static PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT pfn_vkGetPhysicalDeviceMultisamplePropertiesEXT = 0;
499
500VKAPI_ATTR void VKAPI_CALL vkCmdSetSampleLocationsEXT(
501 VkCommandBuffer commandBuffer,
502 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
503{
504 assert(pfn_vkCmdSetSampleLocationsEXT);
505 pfn_vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo);
506}
507VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMultisamplePropertiesEXT(
508 VkPhysicalDevice physicalDevice,
509 VkSampleCountFlagBits samples,
510 VkMultisamplePropertiesEXT* pMultisampleProperties)
511{
512 assert(pfn_vkGetPhysicalDeviceMultisamplePropertiesEXT);
513 pfn_vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties);
514}
515
516int has_VK_EXT_sample_locations = 0;
517int load_VK_EXT_sample_locations(VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
518{
519 pfn_vkCmdSetSampleLocationsEXT = (PFN_vkCmdSetSampleLocationsEXT)getDeviceProcAddr(device, "vkCmdSetSampleLocationsEXT");
520 pfn_vkGetPhysicalDeviceMultisamplePropertiesEXT = (PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)getDeviceProcAddr(device, "vkGetPhysicalDeviceMultisamplePropertiesEXT");
521 int success = 1;
522 success = success && (pfn_vkCmdSetSampleLocationsEXT != 0);
523 success = success && (pfn_vkGetPhysicalDeviceMultisamplePropertiesEXT != 0);
524 has_VK_EXT_sample_locations = success;
525 return success;
526}
527#endif
528
529/* /////////////////////////////////// */
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;
553
554VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureKHR(
555 VkDevice device,
556 const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
557 const VkAllocationCallbacks* pAllocator,
558 VkAccelerationStructureKHR* pAccelerationStructure)
559{
560 assert(pfn_vkCreateAccelerationStructureKHR);
561 return pfn_vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure);
562}
563VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureKHR(
564 VkDevice device,
565 VkAccelerationStructureKHR accelerationStructure,
566 const VkAllocationCallbacks* pAllocator)
567{
568 assert(pfn_vkDestroyAccelerationStructureKHR);
569 pfn_vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator);
570}
571VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureMemoryRequirementsKHR(
572 VkDevice device,
573 const VkAccelerationStructureMemoryRequirementsInfoKHR* pInfo,
574 VkMemoryRequirements2* pMemoryRequirements)
575{
576 assert(pfn_vkGetAccelerationStructureMemoryRequirementsKHR);
577 pfn_vkGetAccelerationStructureMemoryRequirementsKHR(device, pInfo, pMemoryRequirements);
578}
579VKAPI_ATTR VkResult VKAPI_CALL vkBindAccelerationStructureMemoryKHR(
580 VkDevice device,
581 uint32_t bindInfoCount,
582 const VkBindAccelerationStructureMemoryInfoKHR* pBindInfos)
583{
584 assert(pfn_vkBindAccelerationStructureMemoryKHR);
585 return pfn_vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos);
586}
587VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructureKHR(
588 VkCommandBuffer commandBuffer,
589 uint32_t infoCount,
590 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
591 const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos)
592{
593 assert(pfn_vkCmdBuildAccelerationStructureKHR);
594 pfn_vkCmdBuildAccelerationStructureKHR(commandBuffer, infoCount, pInfos, ppOffsetInfos);
595}
596VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructureIndirectKHR(
597 VkCommandBuffer commandBuffer,
598 const VkAccelerationStructureBuildGeometryInfoKHR* pInfo,
599 VkBuffer indirectBuffer,
600 VkDeviceSize indirectOffset,
601 uint32_t indirectStride)
602{
603 assert(pfn_vkCmdBuildAccelerationStructureIndirectKHR);
604 pfn_vkCmdBuildAccelerationStructureIndirectKHR(commandBuffer, pInfo, indirectBuffer, indirectOffset, indirectStride);
605}
606VKAPI_ATTR VkResult VKAPI_CALL vkBuildAccelerationStructureKHR(
607 VkDevice device,
608 uint32_t infoCount,
609 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
610 const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos)
611{
612 assert(pfn_vkBuildAccelerationStructureKHR);
613 return pfn_vkBuildAccelerationStructureKHR(device, infoCount, pInfos, ppOffsetInfos);
614}
615VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureKHR(
616 VkDevice device,
617 const VkCopyAccelerationStructureInfoKHR* pInfo)
618{
619 assert(pfn_vkCopyAccelerationStructureKHR);
620 return pfn_vkCopyAccelerationStructureKHR(device, pInfo);
621}
622VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureToMemoryKHR(
623 VkDevice device,
624 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
625{
626 assert(pfn_vkCopyAccelerationStructureToMemoryKHR);
627 return pfn_vkCopyAccelerationStructureToMemoryKHR(device, pInfo);
628}
629VKAPI_ATTR VkResult VKAPI_CALL vkCopyMemoryToAccelerationStructureKHR(
630 VkDevice device,
631 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
632{
633 assert(pfn_vkCopyMemoryToAccelerationStructureKHR);
634 return pfn_vkCopyMemoryToAccelerationStructureKHR(device, pInfo);
635}
636VKAPI_ATTR VkResult VKAPI_CALL vkWriteAccelerationStructuresPropertiesKHR(
637 VkDevice device,
638 uint32_t accelerationStructureCount,
639 const VkAccelerationStructureKHR* pAccelerationStructures,
640 VkQueryType queryType,
641 size_t dataSize,
642 void* pData,
643 size_t stride)
644{
645 assert(pfn_vkWriteAccelerationStructuresPropertiesKHR);
646 return pfn_vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride);
647}
648VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureKHR(
649 VkCommandBuffer commandBuffer,
650 const VkCopyAccelerationStructureInfoKHR* pInfo)
651{
652 assert(pfn_vkCmdCopyAccelerationStructureKHR);
653 pfn_vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo);
654}
655VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureToMemoryKHR(
656 VkCommandBuffer commandBuffer,
657 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
658{
659 assert(pfn_vkCmdCopyAccelerationStructureToMemoryKHR);
660 pfn_vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo);
661}
662VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryToAccelerationStructureKHR(
663 VkCommandBuffer commandBuffer,
664 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
665{
666 assert(pfn_vkCmdCopyMemoryToAccelerationStructureKHR);
667 pfn_vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo);
668}
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,
675 uint32_t width,
676 uint32_t height,
677 uint32_t depth)
678{
679 assert(pfn_vkCmdTraceRaysKHR);
680 pfn_vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth);
681}
682VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesKHR(
683 VkDevice device,
684 VkPipelineCache pipelineCache,
685 uint32_t createInfoCount,
686 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
687 const VkAllocationCallbacks* pAllocator,
688 VkPipeline* pPipelines)
689{
690 assert(pfn_vkCreateRayTracingPipelinesKHR);
691 return pfn_vkCreateRayTracingPipelinesKHR(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
692}
693VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingShaderGroupHandlesKHR(
694 VkDevice device,
695 VkPipeline pipeline,
696 uint32_t firstGroup,
697 uint32_t groupCount,
698 size_t dataSize,
699 void* pData)
700{
701 assert(pfn_vkGetRayTracingShaderGroupHandlesKHR);
702 return pfn_vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData);
703}
704VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetAccelerationStructureDeviceAddressKHR(
705 VkDevice device,
706 const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
707{
708 assert(pfn_vkGetAccelerationStructureDeviceAddressKHR);
709 return pfn_vkGetAccelerationStructureDeviceAddressKHR(device, pInfo);
710}
711VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
712 VkDevice device,
713 VkPipeline pipeline,
714 uint32_t firstGroup,
715 uint32_t groupCount,
716 size_t dataSize,
717 void* pData)
718{
719 assert(pfn_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR);
720 return pfn_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData);
721}
722VKAPI_ATTR void VKAPI_CALL vkCmdWriteAccelerationStructuresPropertiesKHR(
723 VkCommandBuffer commandBuffer,
724 uint32_t accelerationStructureCount,
725 const VkAccelerationStructureKHR* pAccelerationStructures,
726 VkQueryType queryType,
727 VkQueryPool queryPool,
728 uint32_t firstQuery)
729{
730 assert(pfn_vkCmdWriteAccelerationStructuresPropertiesKHR);
731 pfn_vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery);
732}
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,
739 VkBuffer buffer,
740 VkDeviceSize offset)
741{
742 assert(pfn_vkCmdTraceRaysIndirectKHR);
743 pfn_vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, buffer, offset);
744}
745VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceAccelerationStructureCompatibilityKHR(
746 VkDevice device,
747 const VkAccelerationStructureVersionKHR* version)
748{
749 assert(pfn_vkGetDeviceAccelerationStructureCompatibilityKHR);
750 return pfn_vkGetDeviceAccelerationStructureCompatibilityKHR(device, version);
751}
752
753int has_VK_KHR_ray_tracing = 0;
754int load_VK_KHR_ray_tracing(VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
755{
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");
778 int success = 1;
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;
802 return success;
803}
804#endif
805
806/* /////////////////////////////////// */
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;
811
812VKAPI_ATTR void VKAPI_CALL vkCmdBindShadingRateImageNV(
813 VkCommandBuffer commandBuffer,
814 VkImageView imageView,
815 VkImageLayout imageLayout)
816{
817 assert(pfn_vkCmdBindShadingRateImageNV);
818 pfn_vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout);
819}
820VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportShadingRatePaletteNV(
821 VkCommandBuffer commandBuffer,
822 uint32_t firstViewport,
823 uint32_t viewportCount,
824 const VkShadingRatePaletteNV* pShadingRatePalettes)
825{
826 assert(pfn_vkCmdSetViewportShadingRatePaletteNV);
827 pfn_vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes);
828}
829VKAPI_ATTR void VKAPI_CALL vkCmdSetCoarseSampleOrderNV(
830 VkCommandBuffer commandBuffer,
831 VkCoarseSampleOrderTypeNV sampleOrderType,
832 uint32_t customSampleOrderCount,
833 const VkCoarseSampleOrderCustomNV* pCustomSampleOrders)
834{
835 assert(pfn_vkCmdSetCoarseSampleOrderNV);
836 pfn_vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders);
837}
838
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)
841{
842 pfn_vkCmdBindShadingRateImageNV = (PFN_vkCmdBindShadingRateImageNV)getDeviceProcAddr(device, "vkCmdBindShadingRateImageNV");
843 pfn_vkCmdSetViewportShadingRatePaletteNV = (PFN_vkCmdSetViewportShadingRatePaletteNV)getDeviceProcAddr(device, "vkCmdSetViewportShadingRatePaletteNV");
844 pfn_vkCmdSetCoarseSampleOrderNV = (PFN_vkCmdSetCoarseSampleOrderNV)getDeviceProcAddr(device, "vkCmdSetCoarseSampleOrderNV");
845 int success = 1;
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;
850 return success;
851}
852#endif
853
854/* /////////////////////////////////// */
855#if VK_NV_ray_tracing
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;
868
869VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureNV(
870 VkDevice device,
871 const VkAccelerationStructureCreateInfoNV* pCreateInfo,
872 const VkAllocationCallbacks* pAllocator,
873 VkAccelerationStructureNV* pAccelerationStructure)
874{
875 assert(pfn_vkCreateAccelerationStructureNV);
876 return pfn_vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure);
877}
878VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureNV(
879 VkDevice device,
880 VkAccelerationStructureNV accelerationStructure,
881 const VkAllocationCallbacks* pAllocator)
882{
883 assert(pfn_vkDestroyAccelerationStructureNV);
884 pfn_vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator);
885}
886VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureMemoryRequirementsNV(
887 VkDevice device,
888 const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
889 VkMemoryRequirements2KHR* pMemoryRequirements)
890{
891 assert(pfn_vkGetAccelerationStructureMemoryRequirementsNV);
892 pfn_vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements);
893}
894VKAPI_ATTR VkResult VKAPI_CALL vkBindAccelerationStructureMemoryNV(
895 VkDevice device,
896 uint32_t bindInfoCount,
897 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
898{
899 assert(pfn_vkBindAccelerationStructureMemoryNV);
900 return pfn_vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos);
901}
902VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructureNV(
903 VkCommandBuffer commandBuffer,
904 const VkAccelerationStructureInfoNV* pInfo,
905 VkBuffer instanceData,
906 VkDeviceSize instanceOffset,
907 VkBool32 update,
908 VkAccelerationStructureNV dst,
909 VkAccelerationStructureNV src,
910 VkBuffer scratch,
911 VkDeviceSize scratchOffset)
912{
913 assert(pfn_vkCmdBuildAccelerationStructureNV);
914 pfn_vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset);
915}
916VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureNV(
917 VkCommandBuffer commandBuffer,
918 VkAccelerationStructureNV dst,
919 VkAccelerationStructureNV src,
920 VkCopyAccelerationStructureModeNV mode)
921{
922 assert(pfn_vkCmdCopyAccelerationStructureNV);
923 pfn_vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode);
924}
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,
938 uint32_t width,
939 uint32_t height,
940 uint32_t depth)
941{
942 assert(pfn_vkCmdTraceRaysNV);
943 pfn_vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth);
944}
945VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesNV(
946 VkDevice device,
947 VkPipelineCache pipelineCache,
948 uint32_t createInfoCount,
949 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
950 const VkAllocationCallbacks* pAllocator,
951 VkPipeline* pPipelines)
952{
953 assert(pfn_vkCreateRayTracingPipelinesNV);
954 return pfn_vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
955}
956VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingShaderGroupHandlesNV(
957 VkDevice device,
958 VkPipeline pipeline,
959 uint32_t firstGroup,
960 uint32_t groupCount,
961 size_t dataSize,
962 void* pData)
963{
964 assert(pfn_vkGetRayTracingShaderGroupHandlesNV);
965 return pfn_vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData);
966}
967VKAPI_ATTR VkResult VKAPI_CALL vkGetAccelerationStructureHandleNV(
968 VkDevice device,
969 VkAccelerationStructureNV accelerationStructure,
970 size_t dataSize,
971 void* pData)
972{
973 assert(pfn_vkGetAccelerationStructureHandleNV);
974 return pfn_vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData);
975}
976VKAPI_ATTR void VKAPI_CALL vkCmdWriteAccelerationStructuresPropertiesNV(
977 VkCommandBuffer commandBuffer,
978 uint32_t accelerationStructureCount,
979 const VkAccelerationStructureNV* pAccelerationStructures,
980 VkQueryType queryType,
981 VkQueryPool queryPool,
982 uint32_t firstQuery)
983{
984 assert(pfn_vkCmdWriteAccelerationStructuresPropertiesNV);
985 pfn_vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery);
986}
987VKAPI_ATTR VkResult VKAPI_CALL vkCompileDeferredNV(
988 VkDevice device,
989 VkPipeline pipeline,
990 uint32_t shader)
991{
992 assert(pfn_vkCompileDeferredNV);
993 return pfn_vkCompileDeferredNV(device, pipeline, shader);
994}
995
996int has_VK_NV_ray_tracing = 0;
997int load_VK_NV_ray_tracing(VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
998{
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");
1011 int success = 1;
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;
1025 return success;
1026}
1027#endif
1028
1029/* /////////////////////////////////// */
1030#if VK_KHR_draw_indirect_count
1031static PFN_vkCmdDrawIndirectCountKHR pfn_vkCmdDrawIndirectCountKHR = 0;
1032static PFN_vkCmdDrawIndexedIndirectCountKHR pfn_vkCmdDrawIndexedIndirectCountKHR = 0;
1033
1034VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountKHR(
1035 VkCommandBuffer commandBuffer,
1036 VkBuffer buffer,
1037 VkDeviceSize offset,
1038 VkBuffer countBuffer,
1039 VkDeviceSize countBufferOffset,
1040 uint32_t maxDrawCount,
1041 uint32_t stride)
1042{
1043 assert(pfn_vkCmdDrawIndirectCountKHR);
1044 pfn_vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
1045}
1046VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountKHR(
1047 VkCommandBuffer commandBuffer,
1048 VkBuffer buffer,
1049 VkDeviceSize offset,
1050 VkBuffer countBuffer,
1051 VkDeviceSize countBufferOffset,
1052 uint32_t maxDrawCount,
1053 uint32_t stride)
1054{
1055 assert(pfn_vkCmdDrawIndexedIndirectCountKHR);
1056 pfn_vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
1057}
1058
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)
1061{
1062 pfn_vkCmdDrawIndirectCountKHR = (PFN_vkCmdDrawIndirectCountKHR)getDeviceProcAddr(device, "vkCmdDrawIndirectCountKHR");
1063 pfn_vkCmdDrawIndexedIndirectCountKHR = (PFN_vkCmdDrawIndexedIndirectCountKHR)getDeviceProcAddr(device, "vkCmdDrawIndexedIndirectCountKHR");
1064 int success = 1;
1065 success = success && (pfn_vkCmdDrawIndirectCountKHR != 0);
1066 success = success && (pfn_vkCmdDrawIndexedIndirectCountKHR != 0);
1067 has_VK_KHR_draw_indirect_count = success;
1068 return success;
1069}
1070#endif
1071
1072/* /////////////////////////////////// */
1073#if VK_EXT_calibrated_timestamps
1074static PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT pfn_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = 0;
1075static PFN_vkGetCalibratedTimestampsEXT pfn_vkGetCalibratedTimestampsEXT = 0;
1076
1077VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
1078 VkPhysicalDevice physicalDevice,
1079 uint32_t* pTimeDomainCount,
1080 VkTimeDomainEXT* pTimeDomains)
1081{
1082 assert(pfn_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT);
1083 return pfn_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains);
1084}
1085VKAPI_ATTR VkResult VKAPI_CALL vkGetCalibratedTimestampsEXT(
1086 VkDevice device,
1087 uint32_t timestampCount,
1088 const VkCalibratedTimestampInfoEXT* pTimestampInfos,
1089 uint64_t* pTimestamps,
1090 uint64_t* pMaxDeviation)
1091{
1092 assert(pfn_vkGetCalibratedTimestampsEXT);
1093 return pfn_vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation);
1094}
1095
1096int has_VK_EXT_calibrated_timestamps = 0;
1097int load_VK_EXT_calibrated_timestamps(VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
1098{
1099 pfn_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = (PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)getDeviceProcAddr(device, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT");
1100 pfn_vkGetCalibratedTimestampsEXT = (PFN_vkGetCalibratedTimestampsEXT)getDeviceProcAddr(device, "vkGetCalibratedTimestampsEXT");
1101 int success = 1;
1102 success = success && (pfn_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT != 0);
1103 success = success && (pfn_vkGetCalibratedTimestampsEXT != 0);
1104 has_VK_EXT_calibrated_timestamps = success;
1105 return success;
1106}
1107#endif
1108
1109/* /////////////////////////////////// */
1110#if VK_NV_mesh_shader
1111static PFN_vkCmdDrawMeshTasksNV pfn_vkCmdDrawMeshTasksNV = 0;
1112static PFN_vkCmdDrawMeshTasksIndirectNV pfn_vkCmdDrawMeshTasksIndirectNV = 0;
1113static PFN_vkCmdDrawMeshTasksIndirectCountNV pfn_vkCmdDrawMeshTasksIndirectCountNV = 0;
1114
1115VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksNV(
1116 VkCommandBuffer commandBuffer,
1117 uint32_t taskCount,
1118 uint32_t firstTask)
1119{
1120 assert(pfn_vkCmdDrawMeshTasksNV);
1121 pfn_vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask);
1122}
1123VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectNV(
1124 VkCommandBuffer commandBuffer,
1125 VkBuffer buffer,
1126 VkDeviceSize offset,
1127 uint32_t drawCount,
1128 uint32_t stride)
1129{
1130 assert(pfn_vkCmdDrawMeshTasksIndirectNV);
1131 pfn_vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride);
1132}
1133VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectCountNV(
1134 VkCommandBuffer commandBuffer,
1135 VkBuffer buffer,
1136 VkDeviceSize offset,
1137 VkBuffer countBuffer,
1138 VkDeviceSize countBufferOffset,
1139 uint32_t maxDrawCount,
1140 uint32_t stride)
1141{
1142 assert(pfn_vkCmdDrawMeshTasksIndirectCountNV);
1143 pfn_vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
1144}
1145
1146int has_VK_NV_mesh_shader = 0;
1147int load_VK_NV_mesh_shader(VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
1148{
1149 pfn_vkCmdDrawMeshTasksNV = (PFN_vkCmdDrawMeshTasksNV)getDeviceProcAddr(device, "vkCmdDrawMeshTasksNV");
1150 pfn_vkCmdDrawMeshTasksIndirectNV = (PFN_vkCmdDrawMeshTasksIndirectNV)getDeviceProcAddr(device, "vkCmdDrawMeshTasksIndirectNV");
1151 pfn_vkCmdDrawMeshTasksIndirectCountNV = (PFN_vkCmdDrawMeshTasksIndirectCountNV)getDeviceProcAddr(device, "vkCmdDrawMeshTasksIndirectCountNV");
1152 int success = 1;
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;
1157 return success;
1158}
1159#endif
1160
1161/* /////////////////////////////////// */
1162#if VK_NV_scissor_exclusive
1163static PFN_vkCmdSetExclusiveScissorNV pfn_vkCmdSetExclusiveScissorNV = 0;
1164
1165VKAPI_ATTR void VKAPI_CALL vkCmdSetExclusiveScissorNV(
1166 VkCommandBuffer commandBuffer,
1167 uint32_t firstExclusiveScissor,
1168 uint32_t exclusiveScissorCount,
1169 const VkRect2D* pExclusiveScissors)
1170{
1171 assert(pfn_vkCmdSetExclusiveScissorNV);
1172 pfn_vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors);
1173}
1174
1175int has_VK_NV_scissor_exclusive = 0;
1176int load_VK_NV_scissor_exclusive(VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
1177{
1178 pfn_vkCmdSetExclusiveScissorNV = (PFN_vkCmdSetExclusiveScissorNV)getDeviceProcAddr(device, "vkCmdSetExclusiveScissorNV");
1179 int success = 1;
1180 success = success && (pfn_vkCmdSetExclusiveScissorNV != 0);
1181 has_VK_NV_scissor_exclusive = success;
1182 return success;
1183}
1184#endif
1185
1186/* /////////////////////////////////// */
1187#if VK_EXT_buffer_device_address
1188static PFN_vkGetBufferDeviceAddressEXT pfn_vkGetBufferDeviceAddressEXT = 0;
1189
1190VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressEXT(
1191 VkDevice device,
1192 const VkBufferDeviceAddressInfoEXT* pInfo)
1193{
1194 assert(pfn_vkGetBufferDeviceAddressEXT);
1195 return pfn_vkGetBufferDeviceAddressEXT(device, pInfo);
1196}
1197
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)
1200{
1201 pfn_vkGetBufferDeviceAddressEXT = (PFN_vkGetBufferDeviceAddressEXT)getDeviceProcAddr(device, "vkGetBufferDeviceAddressEXT");
1202 int success = 1;
1203 success = success && (pfn_vkGetBufferDeviceAddressEXT != 0);
1204 has_VK_EXT_buffer_device_address = success;
1205 return success;
1206}
1207#endif
1208
1209/* /////////////////////////////////// */
1210#if VK_NV_cooperative_matrix
1211static PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV pfn_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = 0;
1212
1213VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
1214 VkPhysicalDevice physicalDevice,
1215 uint32_t* pPropertyCount,
1216 VkCooperativeMatrixPropertiesNV* pProperties)
1217{
1218 assert(pfn_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV);
1219 return pfn_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties);
1220}
1221
1222int has_VK_NV_cooperative_matrix = 0;
1223int load_VK_NV_cooperative_matrix(VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
1224{
1225 pfn_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = (PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV)getDeviceProcAddr(device, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV");
1226 int success = 1;
1227 success = success && (pfn_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV != 0);
1228 has_VK_NV_cooperative_matrix = success;
1229 return success;
1230}
1231#endif
1232
1233/* /////////////////////////////////// */
1234#if VK_NV_coverage_reduction_mode
1235static PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV pfn_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = 0;
1236
1237VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
1238 VkPhysicalDevice physicalDevice,
1239 uint32_t* pCombinationCount,
1240 VkFramebufferMixedSamplesCombinationNV* pCombinations)
1241{
1242 assert(pfn_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV);
1243 return pfn_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations);
1244}
1245
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)
1248{
1249 pfn_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = (PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV)getDeviceProcAddr(device, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV");
1250 int success = 1;
1251 success = success && (pfn_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV != 0);
1252 has_VK_NV_coverage_reduction_mode = success;
1253 return success;
1254}
1255#endif
1256
1257/* /////////////////////////////////// */
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;
1262
1263VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressKHR(
1264 VkDevice device,
1265 const VkBufferDeviceAddressInfoKHR* pInfo)
1266{
1267 assert(pfn_vkGetBufferDeviceAddressKHR);
1268 return pfn_vkGetBufferDeviceAddressKHR(device, pInfo);
1269}
1270VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddressKHR(
1271 VkDevice device,
1272 const VkBufferDeviceAddressInfoKHR* pInfo)
1273{
1274 assert(pfn_vkGetBufferOpaqueCaptureAddressKHR);
1275 return pfn_vkGetBufferOpaqueCaptureAddressKHR(device, pInfo);
1276}
1277VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddressKHR(
1278 VkDevice device,
1279 const VkDeviceMemoryOpaqueCaptureAddressInfoKHR* pInfo)
1280{
1281 assert(pfn_vkGetDeviceMemoryOpaqueCaptureAddressKHR);
1282 return pfn_vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo);
1283}
1284
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)
1287{
1288 pfn_vkGetBufferDeviceAddressKHR = (PFN_vkGetBufferDeviceAddressKHR)getDeviceProcAddr(device, "vkGetBufferDeviceAddressKHR");
1289 pfn_vkGetBufferOpaqueCaptureAddressKHR = (PFN_vkGetBufferOpaqueCaptureAddressKHR)getDeviceProcAddr(device, "vkGetBufferOpaqueCaptureAddressKHR");
1290 pfn_vkGetDeviceMemoryOpaqueCaptureAddressKHR = (PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)getDeviceProcAddr(device, "vkGetDeviceMemoryOpaqueCaptureAddressKHR");
1291 int success = 1;
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;
1296 return success;
1297}
1298#endif
1299
1300/* /////////////////////////////////// */
1301#if VK_EXT_host_query_reset
1302static PFN_vkResetQueryPoolEXT pfn_vkResetQueryPoolEXT = 0;
1303
1304VKAPI_ATTR void VKAPI_CALL vkResetQueryPoolEXT(
1305 VkDevice device,
1306 VkQueryPool queryPool,
1307 uint32_t firstQuery,
1308 uint32_t queryCount)
1309{
1310 assert(pfn_vkResetQueryPoolEXT);
1311 pfn_vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount);
1312}
1313
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)
1316{
1317 pfn_vkResetQueryPoolEXT = (PFN_vkResetQueryPoolEXT)getDeviceProcAddr(device, "vkResetQueryPoolEXT");
1318 int success = 1;
1319 success = success && (pfn_vkResetQueryPoolEXT != 0);
1320 has_VK_EXT_host_query_reset = success;
1321 return success;
1322}
1323#endif
1324
1325/* /////////////////////////////////// */
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;
1330
1331VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutablePropertiesKHR(
1332 VkDevice device,
1333 const VkPipelineInfoKHR* pPipelineInfo,
1334 uint32_t* pExecutableCount,
1335 VkPipelineExecutablePropertiesKHR* pProperties)
1336{
1337 assert(pfn_vkGetPipelineExecutablePropertiesKHR);
1338 return pfn_vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties);
1339}
1340VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableStatisticsKHR(
1341 VkDevice device,
1342 const VkPipelineExecutableInfoKHR* pExecutableInfo,
1343 uint32_t* pStatisticCount,
1344 VkPipelineExecutableStatisticKHR* pStatistics)
1345{
1346 assert(pfn_vkGetPipelineExecutableStatisticsKHR);
1347 return pfn_vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics);
1348}
1349VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableInternalRepresentationsKHR(
1350 VkDevice device,
1351 const VkPipelineExecutableInfoKHR* pExecutableInfo,
1352 uint32_t* pInternalRepresentationCount,
1353 VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
1354{
1355 assert(pfn_vkGetPipelineExecutableInternalRepresentationsKHR);
1356 return pfn_vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations);
1357}
1358
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)
1361{
1362 pfn_vkGetPipelineExecutablePropertiesKHR = (PFN_vkGetPipelineExecutablePropertiesKHR)getDeviceProcAddr(device, "vkGetPipelineExecutablePropertiesKHR");
1363 pfn_vkGetPipelineExecutableStatisticsKHR = (PFN_vkGetPipelineExecutableStatisticsKHR)getDeviceProcAddr(device, "vkGetPipelineExecutableStatisticsKHR");
1364 pfn_vkGetPipelineExecutableInternalRepresentationsKHR = (PFN_vkGetPipelineExecutableInternalRepresentationsKHR)getDeviceProcAddr(device, "vkGetPipelineExecutableInternalRepresentationsKHR");
1365 int success = 1;
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;
1370 return success;
1371}
1372#endif
1373
1374/* /////////////////////////////////// */
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;
1382
1383VKAPI_ATTR void VKAPI_CALL vkGetGeneratedCommandsMemoryRequirementsNV(
1384 VkDevice device,
1385 const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
1386 VkMemoryRequirements2* pMemoryRequirements)
1387{
1388 assert(pfn_vkGetGeneratedCommandsMemoryRequirementsNV);
1389 pfn_vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements);
1390}
1391VKAPI_ATTR void VKAPI_CALL vkCmdPreprocessGeneratedCommandsNV(
1392 VkCommandBuffer commandBuffer,
1393 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
1394{
1395 assert(pfn_vkCmdPreprocessGeneratedCommandsNV);
1396 pfn_vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo);
1397}
1398VKAPI_ATTR void VKAPI_CALL vkCmdExecuteGeneratedCommandsNV(
1399 VkCommandBuffer commandBuffer,
1400 VkBool32 isPreprocessed,
1401 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
1402{
1403 assert(pfn_vkCmdExecuteGeneratedCommandsNV);
1404 pfn_vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo);
1405}
1406VKAPI_ATTR void VKAPI_CALL vkCmdBindPipelineShaderGroupNV(
1407 VkCommandBuffer commandBuffer,
1408 VkPipelineBindPoint pipelineBindPoint,
1409 VkPipeline pipeline,
1410 uint32_t groupIndex)
1411{
1412 assert(pfn_vkCmdBindPipelineShaderGroupNV);
1413 pfn_vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex);
1414}
1415VKAPI_ATTR VkResult VKAPI_CALL vkCreateIndirectCommandsLayoutNV(
1416 VkDevice device,
1417 const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
1418 const VkAllocationCallbacks* pAllocator,
1419 VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
1420{
1421 assert(pfn_vkCreateIndirectCommandsLayoutNV);
1422 return pfn_vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
1423}
1424VKAPI_ATTR void VKAPI_CALL vkDestroyIndirectCommandsLayoutNV(
1425 VkDevice device,
1426 VkIndirectCommandsLayoutNV indirectCommandsLayout,
1427 const VkAllocationCallbacks* pAllocator)
1428{
1429 assert(pfn_vkDestroyIndirectCommandsLayoutNV);
1430 pfn_vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator);
1431}
1432
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)
1435{
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");
1442 int success = 1;
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;
1450 return success;
1451}
1452#endif
1453
1454
1455/* super load/reset */
1456void load_VK_EXTENSION_SUBSET(VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device, PFN_vkGetDeviceProcAddr getDeviceProcAddr) {
1457#if VK_EXT_debug_marker
1458 load_VK_EXT_debug_marker(instance, getInstanceProcAddr, device, getDeviceProcAddr);
1459#endif
1460#if VK_KHR_external_memory_win32 && defined(VK_USE_PLATFORM_WIN32_KHR)
1461 load_VK_KHR_external_memory_win32(instance, getInstanceProcAddr, device, getDeviceProcAddr);
1462#endif
1463#if VK_KHR_external_memory_fd
1464 load_VK_KHR_external_memory_fd(instance, getInstanceProcAddr, device, getDeviceProcAddr);
1465#endif
1466#if VK_KHR_external_semaphore_win32 && defined(VK_USE_PLATFORM_WIN32_KHR)
1467 load_VK_KHR_external_semaphore_win32(instance, getInstanceProcAddr, device, getDeviceProcAddr);
1468#endif
1469#if VK_KHR_external_semaphore_fd
1470 load_VK_KHR_external_semaphore_fd(instance, getInstanceProcAddr, device, getDeviceProcAddr);
1471#endif
1472#if VK_KHR_push_descriptor
1473 load_VK_KHR_push_descriptor(instance, getInstanceProcAddr, device, getDeviceProcAddr);
1474#endif
1475#if VK_KHR_create_renderpass2
1476 load_VK_KHR_create_renderpass2(instance, getInstanceProcAddr, device, getDeviceProcAddr);
1477#endif
1478#if VK_KHR_external_fence_win32 && defined(VK_USE_PLATFORM_WIN32_KHR)
1479 load_VK_KHR_external_fence_win32(instance, getInstanceProcAddr, device, getDeviceProcAddr);
1480#endif
1481#if VK_EXT_debug_utils
1482 load_VK_EXT_debug_utils(instance, getInstanceProcAddr, device, getDeviceProcAddr);
1483#endif
1484#if VK_EXT_sample_locations
1485 load_VK_EXT_sample_locations(instance, getInstanceProcAddr, device, getDeviceProcAddr);
1486#endif
1487#if VK_KHR_ray_tracing
1488 load_VK_KHR_ray_tracing(instance, getInstanceProcAddr, device, getDeviceProcAddr);
1489#endif
1490#if VK_NV_shading_rate_image
1491 load_VK_NV_shading_rate_image(instance, getInstanceProcAddr, device, getDeviceProcAddr);
1492#endif
1493#if VK_NV_ray_tracing
1494 load_VK_NV_ray_tracing(instance, getInstanceProcAddr, device, getDeviceProcAddr);
1495#endif
1496#if VK_KHR_draw_indirect_count
1497 load_VK_KHR_draw_indirect_count(instance, getInstanceProcAddr, device, getDeviceProcAddr);
1498#endif
1499#if VK_EXT_calibrated_timestamps
1500 load_VK_EXT_calibrated_timestamps(instance, getInstanceProcAddr, device, getDeviceProcAddr);
1501#endif
1502#if VK_NV_mesh_shader
1503 load_VK_NV_mesh_shader(instance, getInstanceProcAddr, device, getDeviceProcAddr);
1504#endif
1505#if VK_NV_scissor_exclusive
1506 load_VK_NV_scissor_exclusive(instance, getInstanceProcAddr, device, getDeviceProcAddr);
1507#endif
1508#if VK_EXT_buffer_device_address
1509 load_VK_EXT_buffer_device_address(instance, getInstanceProcAddr, device, getDeviceProcAddr);
1510#endif
1511#if VK_NV_cooperative_matrix
1512 load_VK_NV_cooperative_matrix(instance, getInstanceProcAddr, device, getDeviceProcAddr);
1513#endif
1514#if VK_NV_coverage_reduction_mode
1515 load_VK_NV_coverage_reduction_mode(instance, getInstanceProcAddr, device, getDeviceProcAddr);
1516#endif
1517#if VK_KHR_buffer_device_address
1518 load_VK_KHR_buffer_device_address(instance, getInstanceProcAddr, device, getDeviceProcAddr);
1519#endif
1520#if VK_EXT_host_query_reset
1521 load_VK_EXT_host_query_reset(instance, getInstanceProcAddr, device, getDeviceProcAddr);
1522#endif
1523#if VK_KHR_pipeline_executable_properties
1524 load_VK_KHR_pipeline_executable_properties(instance, getInstanceProcAddr, device, getDeviceProcAddr);
1525#endif
1526#if VK_NV_device_generated_commands
1527 load_VK_NV_device_generated_commands(instance, getInstanceProcAddr, device, getDeviceProcAddr);
1528#endif
1529
1530
1531
1532
1533}
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;
1542#endif
1543
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;
1548#endif
1549
1550#if VK_KHR_external_memory_fd
1551 has_VK_KHR_external_memory_fd = 0;
1552 pfn_vkGetMemoryFdKHR = 0;
1553 pfn_vkGetMemoryFdPropertiesKHR = 0;
1554#endif
1555
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;
1560#endif
1561
1562#if VK_KHR_external_semaphore_fd
1563 has_VK_KHR_external_semaphore_fd = 0;
1564 pfn_vkImportSemaphoreFdKHR = 0;
1565 pfn_vkGetSemaphoreFdKHR = 0;
1566#endif
1567
1568#if VK_KHR_push_descriptor
1569 has_VK_KHR_push_descriptor = 0;
1570 pfn_vkCmdPushDescriptorSetKHR = 0;
1571 pfn_vkCmdPushDescriptorSetWithTemplateKHR = 0;
1572#endif
1573
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;
1580#endif
1581
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;
1586#endif
1587
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;
1601#endif
1602
1603#if VK_EXT_sample_locations
1604 has_VK_EXT_sample_locations = 0;
1605 pfn_vkCmdSetSampleLocationsEXT = 0;
1606 pfn_vkGetPhysicalDeviceMultisamplePropertiesEXT = 0;
1607#endif
1608
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;
1633#endif
1634
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;
1640#endif
1641
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;
1656#endif
1657
1658#if VK_KHR_draw_indirect_count
1659 has_VK_KHR_draw_indirect_count = 0;
1660 pfn_vkCmdDrawIndirectCountKHR = 0;
1661 pfn_vkCmdDrawIndexedIndirectCountKHR = 0;
1662#endif
1663
1664#if VK_EXT_calibrated_timestamps
1665 has_VK_EXT_calibrated_timestamps = 0;
1666 pfn_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = 0;
1667 pfn_vkGetCalibratedTimestampsEXT = 0;
1668#endif
1669
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;
1675#endif
1676
1677#if VK_NV_scissor_exclusive
1678 has_VK_NV_scissor_exclusive = 0;
1679 pfn_vkCmdSetExclusiveScissorNV = 0;
1680#endif
1681
1682#if VK_EXT_buffer_device_address
1683 has_VK_EXT_buffer_device_address = 0;
1684 pfn_vkGetBufferDeviceAddressEXT = 0;
1685#endif
1686
1687#if VK_NV_cooperative_matrix
1688 has_VK_NV_cooperative_matrix = 0;
1689 pfn_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = 0;
1690#endif
1691
1692#if VK_NV_coverage_reduction_mode
1693 has_VK_NV_coverage_reduction_mode = 0;
1694 pfn_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = 0;
1695#endif
1696
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;
1702#endif
1703
1704#if VK_EXT_host_query_reset
1705 has_VK_EXT_host_query_reset = 0;
1706 pfn_vkResetQueryPoolEXT = 0;
1707#endif
1708
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;
1714#endif
1715
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;
1724#endif
1725
1726}
1727
void reset_VK_EXTENSION_SUBSET()
void load_VK_EXTENSION_SUBSET(VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device, PFN_vkGetDeviceProcAddr getDeviceProcAddr)
#define instance
#define queue
#define device