• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * volk
3  *
4  * Copyright (C) 2018-2019, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
5  * Report bugs and download new versions at https://github.com/zeux/volk
6  *
7  * This library is distributed under the MIT License. See notice at the end of this file.
8  */
9 /* clang-format off */
10 #ifndef VOLK_H_
11 #define VOLK_H_
12 
13 #if defined(VULKAN_H_) && !defined(VK_NO_PROTOTYPES)
14 #   error To use volk, you need to define VK_NO_PROTOTYPES before including vulkan.h
15 #endif
16 
17 /* VOLK_GENERATE_VERSION_DEFINE */
18 #define VOLK_HEADER_VERSION 130
19 /* VOLK_GENERATE_VERSION_DEFINE */
20 
21 #ifndef VK_NO_PROTOTYPES
22 #   define VK_NO_PROTOTYPES
23 #endif
24 
25 #ifndef VULKAN_H_
26 #       ifdef VOLK_VULKAN_H_PATH
27 #               include VOLK_VULKAN_H_PATH
28 #   elif defined(VK_USE_PLATFORM_WIN32_KHR)
29 #       include <vulkan/vk_platform.h>
30 #       include <vulkan/vulkan_core.h>
31 
32         /* When VK_USE_PLATFORM_WIN32_KHR is defined, instead of including vulkan.h directly, we include individual parts of the SDK
33          * This is necessary to avoid including <windows.h> which is very heavy - it takes 200ms to parse without WIN32_LEAN_AND_MEAN
34          * and 100ms to parse with it. vulkan_win32.h only needs a few symbols that are easy to redefine ourselves.
35          */
36         typedef unsigned long DWORD;
37         typedef const wchar_t* LPCWSTR;
38         typedef void* HANDLE;
39         typedef struct HINSTANCE__* HINSTANCE;
40         typedef struct HWND__* HWND;
41         typedef struct HMONITOR__* HMONITOR;
42         typedef struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES;
43 
44 #       include <vulkan/vulkan_win32.h>
45 #   else
46 #       include <vulkan/vulkan.h>
47 #   endif
48 #endif
49 
50 #ifdef __cplusplus
51 extern "C" {
52 #endif
53 
54 struct VolkDeviceTable;
55 
56 /**
57  * Initialize library by loading Vulkan loader; call this function before creating the Vulkan instance.
58  *
59  * Returns VK_SUCCESS on success and VK_ERROR_INITIALIZATION_FAILED otherwise.
60  */
61 VkResult volkInitialize(void);
62 
63 /**
64  * Initialize library by providing a custom handler to load global symbols.
65  *
66  * This function can be used instead of volkInitialize.
67  * The handler function pointer will be asked to load global Vulkan symbols which require no instance
68  * (such as vkCreateInstance, vkEnumerateInstance* and vkEnumerateInstanceVersion if available).
69  */
70 void volkInitializeCustom(PFN_vkGetInstanceProcAddr handler);
71 
72 /**
73  * Get Vulkan instance version supported by the Vulkan loader, or 0 if Vulkan isn't supported
74  *
75  * Returns 0 if volkInitialize wasn't called or failed.
76  */
77 uint32_t volkGetInstanceVersion(void);
78 
79 /**
80  * Load global function pointers using application-created VkInstance; call this function after creating the Vulkan instance.
81  */
82 void volkLoadInstance(VkInstance instance);
83 
84 /**
85  * Load global function pointers using application-created VkDevice; call this function after creating the Vulkan device.
86  *
87  * Note: this is not suitable for applications that want to use multiple VkDevice objects concurrently.
88  */
89 void volkLoadDevice(VkDevice device);
90 
91 /**
92  * Return last VkInstance for which global function pointers have been loaded via volkLoadInstance(),
93  * or VK_NULL_HANDLE if volkLoadInstance() has not been called.
94  */
95 VkInstance volkGetLoadedInstance();
96 
97 /**
98  * Return last VkDevice for which global function pointers have been loaded via volkLoadDevice(),
99  * or VK_NULL_HANDLE if volkLoadDevice() has not been called.
100  */
101 VkDevice volkGetLoadedDevice();
102 
103 /**
104  * Load function pointers using application-created VkDevice into a table.
105  * Application should use function pointers from that table instead of using global function pointers.
106  */
107 void volkLoadDeviceTable(struct VolkDeviceTable* table, VkDevice device);
108 
109 /**
110  * Device-specific function pointer table
111  */
112 struct VolkDeviceTable
113 {
114     /* VOLK_GENERATE_DEVICE_TABLE */
115 #if defined(VK_VERSION_1_0)
116     PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers;
117     PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets;
118     PFN_vkAllocateMemory vkAllocateMemory;
119     PFN_vkBeginCommandBuffer vkBeginCommandBuffer;
120     PFN_vkBindBufferMemory vkBindBufferMemory;
121     PFN_vkBindImageMemory vkBindImageMemory;
122     PFN_vkCmdBeginQuery vkCmdBeginQuery;
123     PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass;
124     PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets;
125     PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer;
126     PFN_vkCmdBindPipeline vkCmdBindPipeline;
127     PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers;
128     PFN_vkCmdBlitImage vkCmdBlitImage;
129     PFN_vkCmdClearAttachments vkCmdClearAttachments;
130     PFN_vkCmdClearColorImage vkCmdClearColorImage;
131     PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage;
132     PFN_vkCmdCopyBuffer vkCmdCopyBuffer;
133     PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage;
134     PFN_vkCmdCopyImage vkCmdCopyImage;
135     PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer;
136     PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults;
137     PFN_vkCmdDispatch vkCmdDispatch;
138     PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect;
139     PFN_vkCmdDraw vkCmdDraw;
140     PFN_vkCmdDrawIndexed vkCmdDrawIndexed;
141     PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect;
142     PFN_vkCmdDrawIndirect vkCmdDrawIndirect;
143     PFN_vkCmdEndQuery vkCmdEndQuery;
144     PFN_vkCmdEndRenderPass vkCmdEndRenderPass;
145     PFN_vkCmdExecuteCommands vkCmdExecuteCommands;
146     PFN_vkCmdFillBuffer vkCmdFillBuffer;
147     PFN_vkCmdNextSubpass vkCmdNextSubpass;
148     PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier;
149     PFN_vkCmdPushConstants vkCmdPushConstants;
150     PFN_vkCmdResetEvent vkCmdResetEvent;
151     PFN_vkCmdResetQueryPool vkCmdResetQueryPool;
152     PFN_vkCmdResolveImage vkCmdResolveImage;
153     PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants;
154     PFN_vkCmdSetDepthBias vkCmdSetDepthBias;
155     PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds;
156     PFN_vkCmdSetEvent vkCmdSetEvent;
157     PFN_vkCmdSetLineWidth vkCmdSetLineWidth;
158     PFN_vkCmdSetScissor vkCmdSetScissor;
159     PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask;
160     PFN_vkCmdSetStencilReference vkCmdSetStencilReference;
161     PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask;
162     PFN_vkCmdSetViewport vkCmdSetViewport;
163     PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer;
164     PFN_vkCmdWaitEvents vkCmdWaitEvents;
165     PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp;
166     PFN_vkCreateBuffer vkCreateBuffer;
167     PFN_vkCreateBufferView vkCreateBufferView;
168     PFN_vkCreateCommandPool vkCreateCommandPool;
169     PFN_vkCreateComputePipelines vkCreateComputePipelines;
170     PFN_vkCreateDescriptorPool vkCreateDescriptorPool;
171     PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout;
172     PFN_vkCreateEvent vkCreateEvent;
173     PFN_vkCreateFence vkCreateFence;
174     PFN_vkCreateFramebuffer vkCreateFramebuffer;
175     PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines;
176     PFN_vkCreateImage vkCreateImage;
177     PFN_vkCreateImageView vkCreateImageView;
178     PFN_vkCreatePipelineCache vkCreatePipelineCache;
179     PFN_vkCreatePipelineLayout vkCreatePipelineLayout;
180     PFN_vkCreateQueryPool vkCreateQueryPool;
181     PFN_vkCreateRenderPass vkCreateRenderPass;
182     PFN_vkCreateSampler vkCreateSampler;
183     PFN_vkCreateSemaphore vkCreateSemaphore;
184     PFN_vkCreateShaderModule vkCreateShaderModule;
185     PFN_vkDestroyBuffer vkDestroyBuffer;
186     PFN_vkDestroyBufferView vkDestroyBufferView;
187     PFN_vkDestroyCommandPool vkDestroyCommandPool;
188     PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool;
189     PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout;
190     PFN_vkDestroyDevice vkDestroyDevice;
191     PFN_vkDestroyEvent vkDestroyEvent;
192     PFN_vkDestroyFence vkDestroyFence;
193     PFN_vkDestroyFramebuffer vkDestroyFramebuffer;
194     PFN_vkDestroyImage vkDestroyImage;
195     PFN_vkDestroyImageView vkDestroyImageView;
196     PFN_vkDestroyPipeline vkDestroyPipeline;
197     PFN_vkDestroyPipelineCache vkDestroyPipelineCache;
198     PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout;
199     PFN_vkDestroyQueryPool vkDestroyQueryPool;
200     PFN_vkDestroyRenderPass vkDestroyRenderPass;
201     PFN_vkDestroySampler vkDestroySampler;
202     PFN_vkDestroySemaphore vkDestroySemaphore;
203     PFN_vkDestroyShaderModule vkDestroyShaderModule;
204     PFN_vkDeviceWaitIdle vkDeviceWaitIdle;
205     PFN_vkEndCommandBuffer vkEndCommandBuffer;
206     PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges;
207     PFN_vkFreeCommandBuffers vkFreeCommandBuffers;
208     PFN_vkFreeDescriptorSets vkFreeDescriptorSets;
209     PFN_vkFreeMemory vkFreeMemory;
210     PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements;
211     PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment;
212     PFN_vkGetDeviceQueue vkGetDeviceQueue;
213     PFN_vkGetEventStatus vkGetEventStatus;
214     PFN_vkGetFenceStatus vkGetFenceStatus;
215     PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements;
216     PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements;
217     PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout;
218     PFN_vkGetPipelineCacheData vkGetPipelineCacheData;
219     PFN_vkGetQueryPoolResults vkGetQueryPoolResults;
220     PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity;
221     PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges;
222     PFN_vkMapMemory vkMapMemory;
223     PFN_vkMergePipelineCaches vkMergePipelineCaches;
224     PFN_vkQueueBindSparse vkQueueBindSparse;
225     PFN_vkQueueSubmit vkQueueSubmit;
226     PFN_vkQueueWaitIdle vkQueueWaitIdle;
227     PFN_vkResetCommandBuffer vkResetCommandBuffer;
228     PFN_vkResetCommandPool vkResetCommandPool;
229     PFN_vkResetDescriptorPool vkResetDescriptorPool;
230     PFN_vkResetEvent vkResetEvent;
231     PFN_vkResetFences vkResetFences;
232     PFN_vkSetEvent vkSetEvent;
233     PFN_vkUnmapMemory vkUnmapMemory;
234     PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets;
235     PFN_vkWaitForFences vkWaitForFences;
236 #endif /* defined(VK_VERSION_1_0) */
237 #if defined(VK_VERSION_1_1)
238     PFN_vkBindBufferMemory2 vkBindBufferMemory2;
239     PFN_vkBindImageMemory2 vkBindImageMemory2;
240     PFN_vkCmdDispatchBase vkCmdDispatchBase;
241     PFN_vkCmdSetDeviceMask vkCmdSetDeviceMask;
242     PFN_vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate;
243     PFN_vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion;
244     PFN_vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate;
245     PFN_vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion;
246     PFN_vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2;
247     PFN_vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport;
248     PFN_vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures;
249     PFN_vkGetDeviceQueue2 vkGetDeviceQueue2;
250     PFN_vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2;
251     PFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2;
252     PFN_vkTrimCommandPool vkTrimCommandPool;
253     PFN_vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate;
254 #endif /* defined(VK_VERSION_1_1) */
255 #if defined(VK_AMD_buffer_marker)
256     PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD;
257 #endif /* defined(VK_AMD_buffer_marker) */
258 #if defined(VK_AMD_display_native_hdr)
259     PFN_vkSetLocalDimmingAMD vkSetLocalDimmingAMD;
260 #endif /* defined(VK_AMD_display_native_hdr) */
261 #if defined(VK_AMD_draw_indirect_count)
262     PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD;
263     PFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD;
264 #endif /* defined(VK_AMD_draw_indirect_count) */
265 #if defined(VK_AMD_shader_info)
266     PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD;
267 #endif /* defined(VK_AMD_shader_info) */
268 #if defined(VK_ANDROID_external_memory_android_hardware_buffer)
269     PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID;
270     PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID;
271 #endif /* defined(VK_ANDROID_external_memory_android_hardware_buffer) */
272 #if defined(VK_EXT_buffer_device_address)
273     PFN_vkGetBufferDeviceAddressEXT vkGetBufferDeviceAddressEXT;
274 #endif /* defined(VK_EXT_buffer_device_address) */
275 #if defined(VK_EXT_calibrated_timestamps)
276     PFN_vkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXT;
277 #endif /* defined(VK_EXT_calibrated_timestamps) */
278 #if defined(VK_EXT_conditional_rendering)
279     PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT;
280     PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT;
281 #endif /* defined(VK_EXT_conditional_rendering) */
282 #if defined(VK_EXT_debug_marker)
283     PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT;
284     PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT;
285     PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT;
286     PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT;
287     PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT;
288 #endif /* defined(VK_EXT_debug_marker) */
289 #if defined(VK_EXT_discard_rectangles)
290     PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT;
291 #endif /* defined(VK_EXT_discard_rectangles) */
292 #if defined(VK_EXT_display_control)
293     PFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT;
294     PFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT;
295     PFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT;
296     PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT;
297 #endif /* defined(VK_EXT_display_control) */
298 #if defined(VK_EXT_external_memory_host)
299     PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT;
300 #endif /* defined(VK_EXT_external_memory_host) */
301 #if defined(VK_EXT_full_screen_exclusive)
302     PFN_vkAcquireFullScreenExclusiveModeEXT vkAcquireFullScreenExclusiveModeEXT;
303     PFN_vkReleaseFullScreenExclusiveModeEXT vkReleaseFullScreenExclusiveModeEXT;
304 #endif /* defined(VK_EXT_full_screen_exclusive) */
305 #if defined(VK_EXT_hdr_metadata)
306     PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT;
307 #endif /* defined(VK_EXT_hdr_metadata) */
308 #if defined(VK_EXT_host_query_reset)
309     PFN_vkResetQueryPoolEXT vkResetQueryPoolEXT;
310 #endif /* defined(VK_EXT_host_query_reset) */
311 #if defined(VK_EXT_image_drm_format_modifier)
312     PFN_vkGetImageDrmFormatModifierPropertiesEXT vkGetImageDrmFormatModifierPropertiesEXT;
313 #endif /* defined(VK_EXT_image_drm_format_modifier) */
314 #if defined(VK_EXT_line_rasterization)
315     PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT;
316 #endif /* defined(VK_EXT_line_rasterization) */
317 #if defined(VK_EXT_sample_locations)
318     PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT;
319 #endif /* defined(VK_EXT_sample_locations) */
320 #if defined(VK_EXT_transform_feedback)
321     PFN_vkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXT;
322     PFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT;
323     PFN_vkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXT;
324     PFN_vkCmdDrawIndirectByteCountEXT vkCmdDrawIndirectByteCountEXT;
325     PFN_vkCmdEndQueryIndexedEXT vkCmdEndQueryIndexedEXT;
326     PFN_vkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXT;
327 #endif /* defined(VK_EXT_transform_feedback) */
328 #if defined(VK_EXT_validation_cache)
329     PFN_vkCreateValidationCacheEXT vkCreateValidationCacheEXT;
330     PFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT;
331     PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT;
332     PFN_vkMergeValidationCachesEXT vkMergeValidationCachesEXT;
333 #endif /* defined(VK_EXT_validation_cache) */
334 #if defined(VK_GOOGLE_display_timing)
335     PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE;
336     PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE;
337 #endif /* defined(VK_GOOGLE_display_timing) */
338 #if defined(VK_INTEL_performance_query)
339     PFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL;
340     PFN_vkCmdSetPerformanceMarkerINTEL vkCmdSetPerformanceMarkerINTEL;
341     PFN_vkCmdSetPerformanceOverrideINTEL vkCmdSetPerformanceOverrideINTEL;
342     PFN_vkCmdSetPerformanceStreamMarkerINTEL vkCmdSetPerformanceStreamMarkerINTEL;
343     PFN_vkGetPerformanceParameterINTEL vkGetPerformanceParameterINTEL;
344     PFN_vkInitializePerformanceApiINTEL vkInitializePerformanceApiINTEL;
345     PFN_vkQueueSetPerformanceConfigurationINTEL vkQueueSetPerformanceConfigurationINTEL;
346     PFN_vkReleasePerformanceConfigurationINTEL vkReleasePerformanceConfigurationINTEL;
347     PFN_vkUninitializePerformanceApiINTEL vkUninitializePerformanceApiINTEL;
348 #endif /* defined(VK_INTEL_performance_query) */
349 #if defined(VK_KHR_bind_memory2)
350     PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR;
351     PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR;
352 #endif /* defined(VK_KHR_bind_memory2) */
353 #if defined(VK_KHR_buffer_device_address)
354     PFN_vkGetBufferDeviceAddressKHR vkGetBufferDeviceAddressKHR;
355     PFN_vkGetBufferOpaqueCaptureAddressKHR vkGetBufferOpaqueCaptureAddressKHR;
356     PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR vkGetDeviceMemoryOpaqueCaptureAddressKHR;
357 #endif /* defined(VK_KHR_buffer_device_address) */
358 #if defined(VK_KHR_create_renderpass2)
359     PFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR;
360     PFN_vkCmdEndRenderPass2KHR vkCmdEndRenderPass2KHR;
361     PFN_vkCmdNextSubpass2KHR vkCmdNextSubpass2KHR;
362     PFN_vkCreateRenderPass2KHR vkCreateRenderPass2KHR;
363 #endif /* defined(VK_KHR_create_renderpass2) */
364 #if defined(VK_KHR_descriptor_update_template)
365     PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR;
366     PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR;
367     PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR;
368 #endif /* defined(VK_KHR_descriptor_update_template) */
369 #if defined(VK_KHR_device_group)
370     PFN_vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR;
371     PFN_vkCmdSetDeviceMaskKHR vkCmdSetDeviceMaskKHR;
372     PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR;
373 #endif /* defined(VK_KHR_device_group) */
374 #if defined(VK_KHR_display_swapchain)
375     PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR;
376 #endif /* defined(VK_KHR_display_swapchain) */
377 #if defined(VK_KHR_draw_indirect_count)
378     PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR;
379     PFN_vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR;
380 #endif /* defined(VK_KHR_draw_indirect_count) */
381 #if defined(VK_KHR_external_fence_fd)
382     PFN_vkGetFenceFdKHR vkGetFenceFdKHR;
383     PFN_vkImportFenceFdKHR vkImportFenceFdKHR;
384 #endif /* defined(VK_KHR_external_fence_fd) */
385 #if defined(VK_KHR_external_fence_win32)
386     PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR;
387     PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR;
388 #endif /* defined(VK_KHR_external_fence_win32) */
389 #if defined(VK_KHR_external_memory_fd)
390     PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR;
391     PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR;
392 #endif /* defined(VK_KHR_external_memory_fd) */
393 #if defined(VK_KHR_external_memory_win32)
394     PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR;
395     PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR;
396 #endif /* defined(VK_KHR_external_memory_win32) */
397 #if defined(VK_KHR_external_semaphore_fd)
398     PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR;
399     PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR;
400 #endif /* defined(VK_KHR_external_semaphore_fd) */
401 #if defined(VK_KHR_external_semaphore_win32)
402     PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR;
403     PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR;
404 #endif /* defined(VK_KHR_external_semaphore_win32) */
405 #if defined(VK_KHR_get_memory_requirements2)
406     PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR;
407     PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR;
408     PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR;
409 #endif /* defined(VK_KHR_get_memory_requirements2) */
410 #if defined(VK_KHR_maintenance1)
411     PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR;
412 #endif /* defined(VK_KHR_maintenance1) */
413 #if defined(VK_KHR_maintenance3)
414     PFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR;
415 #endif /* defined(VK_KHR_maintenance3) */
416 #if defined(VK_KHR_performance_query)
417     PFN_vkAcquireProfilingLockKHR vkAcquireProfilingLockKHR;
418     PFN_vkReleaseProfilingLockKHR vkReleaseProfilingLockKHR;
419 #endif /* defined(VK_KHR_performance_query) */
420 #if defined(VK_KHR_pipeline_executable_properties)
421     PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR;
422     PFN_vkGetPipelineExecutablePropertiesKHR vkGetPipelineExecutablePropertiesKHR;
423     PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR;
424 #endif /* defined(VK_KHR_pipeline_executable_properties) */
425 #if defined(VK_KHR_push_descriptor)
426     PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR;
427 #endif /* defined(VK_KHR_push_descriptor) */
428 #if defined(VK_KHR_sampler_ycbcr_conversion)
429     PFN_vkCreateSamplerYcbcrConversionKHR vkCreateSamplerYcbcrConversionKHR;
430     PFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR;
431 #endif /* defined(VK_KHR_sampler_ycbcr_conversion) */
432 #if defined(VK_KHR_shared_presentable_image)
433     PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR;
434 #endif /* defined(VK_KHR_shared_presentable_image) */
435 #if defined(VK_KHR_swapchain)
436     PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR;
437     PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR;
438     PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR;
439     PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR;
440     PFN_vkQueuePresentKHR vkQueuePresentKHR;
441 #endif /* defined(VK_KHR_swapchain) */
442 #if defined(VK_KHR_timeline_semaphore)
443     PFN_vkGetSemaphoreCounterValueKHR vkGetSemaphoreCounterValueKHR;
444     PFN_vkSignalSemaphoreKHR vkSignalSemaphoreKHR;
445     PFN_vkWaitSemaphoresKHR vkWaitSemaphoresKHR;
446 #endif /* defined(VK_KHR_timeline_semaphore) */
447 #if defined(VK_NVX_device_generated_commands)
448     PFN_vkCmdProcessCommandsNVX vkCmdProcessCommandsNVX;
449     PFN_vkCmdReserveSpaceForCommandsNVX vkCmdReserveSpaceForCommandsNVX;
450     PFN_vkCreateIndirectCommandsLayoutNVX vkCreateIndirectCommandsLayoutNVX;
451     PFN_vkCreateObjectTableNVX vkCreateObjectTableNVX;
452     PFN_vkDestroyIndirectCommandsLayoutNVX vkDestroyIndirectCommandsLayoutNVX;
453     PFN_vkDestroyObjectTableNVX vkDestroyObjectTableNVX;
454     PFN_vkRegisterObjectsNVX vkRegisterObjectsNVX;
455     PFN_vkUnregisterObjectsNVX vkUnregisterObjectsNVX;
456 #endif /* defined(VK_NVX_device_generated_commands) */
457 #if defined(VK_NVX_image_view_handle)
458     PFN_vkGetImageViewHandleNVX vkGetImageViewHandleNVX;
459 #endif /* defined(VK_NVX_image_view_handle) */
460 #if defined(VK_NV_clip_space_w_scaling)
461     PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV;
462 #endif /* defined(VK_NV_clip_space_w_scaling) */
463 #if defined(VK_NV_device_diagnostic_checkpoints)
464     PFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV;
465     PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV;
466 #endif /* defined(VK_NV_device_diagnostic_checkpoints) */
467 #if defined(VK_NV_external_memory_win32)
468     PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV;
469 #endif /* defined(VK_NV_external_memory_win32) */
470 #if defined(VK_NV_mesh_shader)
471     PFN_vkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNV;
472     PFN_vkCmdDrawMeshTasksIndirectNV vkCmdDrawMeshTasksIndirectNV;
473     PFN_vkCmdDrawMeshTasksNV vkCmdDrawMeshTasksNV;
474 #endif /* defined(VK_NV_mesh_shader) */
475 #if defined(VK_NV_ray_tracing)
476     PFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV;
477     PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV;
478     PFN_vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV;
479     PFN_vkCmdTraceRaysNV vkCmdTraceRaysNV;
480     PFN_vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV;
481     PFN_vkCompileDeferredNV vkCompileDeferredNV;
482     PFN_vkCreateAccelerationStructureNV vkCreateAccelerationStructureNV;
483     PFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV;
484     PFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV;
485     PFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV;
486     PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV;
487     PFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV;
488 #endif /* defined(VK_NV_ray_tracing) */
489 #if defined(VK_NV_scissor_exclusive)
490     PFN_vkCmdSetExclusiveScissorNV vkCmdSetExclusiveScissorNV;
491 #endif /* defined(VK_NV_scissor_exclusive) */
492 #if defined(VK_NV_shading_rate_image)
493     PFN_vkCmdBindShadingRateImageNV vkCmdBindShadingRateImageNV;
494     PFN_vkCmdSetCoarseSampleOrderNV vkCmdSetCoarseSampleOrderNV;
495     PFN_vkCmdSetViewportShadingRatePaletteNV vkCmdSetViewportShadingRatePaletteNV;
496 #endif /* defined(VK_NV_shading_rate_image) */
497 #if (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1))
498     PFN_vkGetDeviceGroupSurfacePresentModes2EXT vkGetDeviceGroupSurfacePresentModes2EXT;
499 #endif /* (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1)) */
500 #if (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1))
501     PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR;
502 #endif /* (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) */
503 #if (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1))
504     PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR;
505     PFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR;
506 #endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */
507 #if (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1))
508     PFN_vkAcquireNextImage2KHR vkAcquireNextImage2KHR;
509 #endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */
510     /* VOLK_GENERATE_DEVICE_TABLE */
511 };
512 
513 /* VOLK_GENERATE_PROTOTYPES_H */
514 #if defined(VK_VERSION_1_0)
515 extern PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers;
516 extern PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets;
517 extern PFN_vkAllocateMemory vkAllocateMemory;
518 extern PFN_vkBeginCommandBuffer vkBeginCommandBuffer;
519 extern PFN_vkBindBufferMemory vkBindBufferMemory;
520 extern PFN_vkBindImageMemory vkBindImageMemory;
521 extern PFN_vkCmdBeginQuery vkCmdBeginQuery;
522 extern PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass;
523 extern PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets;
524 extern PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer;
525 extern PFN_vkCmdBindPipeline vkCmdBindPipeline;
526 extern PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers;
527 extern PFN_vkCmdBlitImage vkCmdBlitImage;
528 extern PFN_vkCmdClearAttachments vkCmdClearAttachments;
529 extern PFN_vkCmdClearColorImage vkCmdClearColorImage;
530 extern PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage;
531 extern PFN_vkCmdCopyBuffer vkCmdCopyBuffer;
532 extern PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage;
533 extern PFN_vkCmdCopyImage vkCmdCopyImage;
534 extern PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer;
535 extern PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults;
536 extern PFN_vkCmdDispatch vkCmdDispatch;
537 extern PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect;
538 extern PFN_vkCmdDraw vkCmdDraw;
539 extern PFN_vkCmdDrawIndexed vkCmdDrawIndexed;
540 extern PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect;
541 extern PFN_vkCmdDrawIndirect vkCmdDrawIndirect;
542 extern PFN_vkCmdEndQuery vkCmdEndQuery;
543 extern PFN_vkCmdEndRenderPass vkCmdEndRenderPass;
544 extern PFN_vkCmdExecuteCommands vkCmdExecuteCommands;
545 extern PFN_vkCmdFillBuffer vkCmdFillBuffer;
546 extern PFN_vkCmdNextSubpass vkCmdNextSubpass;
547 extern PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier;
548 extern PFN_vkCmdPushConstants vkCmdPushConstants;
549 extern PFN_vkCmdResetEvent vkCmdResetEvent;
550 extern PFN_vkCmdResetQueryPool vkCmdResetQueryPool;
551 extern PFN_vkCmdResolveImage vkCmdResolveImage;
552 extern PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants;
553 extern PFN_vkCmdSetDepthBias vkCmdSetDepthBias;
554 extern PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds;
555 extern PFN_vkCmdSetEvent vkCmdSetEvent;
556 extern PFN_vkCmdSetLineWidth vkCmdSetLineWidth;
557 extern PFN_vkCmdSetScissor vkCmdSetScissor;
558 extern PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask;
559 extern PFN_vkCmdSetStencilReference vkCmdSetStencilReference;
560 extern PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask;
561 extern PFN_vkCmdSetViewport vkCmdSetViewport;
562 extern PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer;
563 extern PFN_vkCmdWaitEvents vkCmdWaitEvents;
564 extern PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp;
565 extern PFN_vkCreateBuffer vkCreateBuffer;
566 extern PFN_vkCreateBufferView vkCreateBufferView;
567 extern PFN_vkCreateCommandPool vkCreateCommandPool;
568 extern PFN_vkCreateComputePipelines vkCreateComputePipelines;
569 extern PFN_vkCreateDescriptorPool vkCreateDescriptorPool;
570 extern PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout;
571 extern PFN_vkCreateDevice vkCreateDevice;
572 extern PFN_vkCreateEvent vkCreateEvent;
573 extern PFN_vkCreateFence vkCreateFence;
574 extern PFN_vkCreateFramebuffer vkCreateFramebuffer;
575 extern PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines;
576 extern PFN_vkCreateImage vkCreateImage;
577 extern PFN_vkCreateImageView vkCreateImageView;
578 extern PFN_vkCreateInstance vkCreateInstance;
579 extern PFN_vkCreatePipelineCache vkCreatePipelineCache;
580 extern PFN_vkCreatePipelineLayout vkCreatePipelineLayout;
581 extern PFN_vkCreateQueryPool vkCreateQueryPool;
582 extern PFN_vkCreateRenderPass vkCreateRenderPass;
583 extern PFN_vkCreateSampler vkCreateSampler;
584 extern PFN_vkCreateSemaphore vkCreateSemaphore;
585 extern PFN_vkCreateShaderModule vkCreateShaderModule;
586 extern PFN_vkDestroyBuffer vkDestroyBuffer;
587 extern PFN_vkDestroyBufferView vkDestroyBufferView;
588 extern PFN_vkDestroyCommandPool vkDestroyCommandPool;
589 extern PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool;
590 extern PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout;
591 extern PFN_vkDestroyDevice vkDestroyDevice;
592 extern PFN_vkDestroyEvent vkDestroyEvent;
593 extern PFN_vkDestroyFence vkDestroyFence;
594 extern PFN_vkDestroyFramebuffer vkDestroyFramebuffer;
595 extern PFN_vkDestroyImage vkDestroyImage;
596 extern PFN_vkDestroyImageView vkDestroyImageView;
597 extern PFN_vkDestroyInstance vkDestroyInstance;
598 extern PFN_vkDestroyPipeline vkDestroyPipeline;
599 extern PFN_vkDestroyPipelineCache vkDestroyPipelineCache;
600 extern PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout;
601 extern PFN_vkDestroyQueryPool vkDestroyQueryPool;
602 extern PFN_vkDestroyRenderPass vkDestroyRenderPass;
603 extern PFN_vkDestroySampler vkDestroySampler;
604 extern PFN_vkDestroySemaphore vkDestroySemaphore;
605 extern PFN_vkDestroyShaderModule vkDestroyShaderModule;
606 extern PFN_vkDeviceWaitIdle vkDeviceWaitIdle;
607 extern PFN_vkEndCommandBuffer vkEndCommandBuffer;
608 extern PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties;
609 extern PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties;
610 extern PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties;
611 extern PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties;
612 extern PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices;
613 extern PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges;
614 extern PFN_vkFreeCommandBuffers vkFreeCommandBuffers;
615 extern PFN_vkFreeDescriptorSets vkFreeDescriptorSets;
616 extern PFN_vkFreeMemory vkFreeMemory;
617 extern PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements;
618 extern PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment;
619 extern PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr;
620 extern PFN_vkGetDeviceQueue vkGetDeviceQueue;
621 extern PFN_vkGetEventStatus vkGetEventStatus;
622 extern PFN_vkGetFenceStatus vkGetFenceStatus;
623 extern PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements;
624 extern PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements;
625 extern PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout;
626 extern PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr;
627 extern PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures;
628 extern PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties;
629 extern PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties;
630 extern PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties;
631 extern PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties;
632 extern PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties;
633 extern PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties;
634 extern PFN_vkGetPipelineCacheData vkGetPipelineCacheData;
635 extern PFN_vkGetQueryPoolResults vkGetQueryPoolResults;
636 extern PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity;
637 extern PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges;
638 extern PFN_vkMapMemory vkMapMemory;
639 extern PFN_vkMergePipelineCaches vkMergePipelineCaches;
640 extern PFN_vkQueueBindSparse vkQueueBindSparse;
641 extern PFN_vkQueueSubmit vkQueueSubmit;
642 extern PFN_vkQueueWaitIdle vkQueueWaitIdle;
643 extern PFN_vkResetCommandBuffer vkResetCommandBuffer;
644 extern PFN_vkResetCommandPool vkResetCommandPool;
645 extern PFN_vkResetDescriptorPool vkResetDescriptorPool;
646 extern PFN_vkResetEvent vkResetEvent;
647 extern PFN_vkResetFences vkResetFences;
648 extern PFN_vkSetEvent vkSetEvent;
649 extern PFN_vkUnmapMemory vkUnmapMemory;
650 extern PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets;
651 extern PFN_vkWaitForFences vkWaitForFences;
652 #endif /* defined(VK_VERSION_1_0) */
653 #if defined(VK_VERSION_1_1)
654 extern PFN_vkBindBufferMemory2 vkBindBufferMemory2;
655 extern PFN_vkBindImageMemory2 vkBindImageMemory2;
656 extern PFN_vkCmdDispatchBase vkCmdDispatchBase;
657 extern PFN_vkCmdSetDeviceMask vkCmdSetDeviceMask;
658 extern PFN_vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate;
659 extern PFN_vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion;
660 extern PFN_vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate;
661 extern PFN_vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion;
662 extern PFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion;
663 extern PFN_vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups;
664 extern PFN_vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2;
665 extern PFN_vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport;
666 extern PFN_vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures;
667 extern PFN_vkGetDeviceQueue2 vkGetDeviceQueue2;
668 extern PFN_vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2;
669 extern PFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2;
670 extern PFN_vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties;
671 extern PFN_vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties;
672 extern PFN_vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties;
673 extern PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2;
674 extern PFN_vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2;
675 extern PFN_vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2;
676 extern PFN_vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2;
677 extern PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2;
678 extern PFN_vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2;
679 extern PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2;
680 extern PFN_vkTrimCommandPool vkTrimCommandPool;
681 extern PFN_vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate;
682 #endif /* defined(VK_VERSION_1_1) */
683 #if defined(VK_AMD_buffer_marker)
684 extern PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD;
685 #endif /* defined(VK_AMD_buffer_marker) */
686 #if defined(VK_AMD_display_native_hdr)
687 extern PFN_vkSetLocalDimmingAMD vkSetLocalDimmingAMD;
688 #endif /* defined(VK_AMD_display_native_hdr) */
689 #if defined(VK_AMD_draw_indirect_count)
690 extern PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD;
691 extern PFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD;
692 #endif /* defined(VK_AMD_draw_indirect_count) */
693 #if defined(VK_AMD_shader_info)
694 extern PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD;
695 #endif /* defined(VK_AMD_shader_info) */
696 #if defined(VK_ANDROID_external_memory_android_hardware_buffer)
697 extern PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID;
698 extern PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID;
699 #endif /* defined(VK_ANDROID_external_memory_android_hardware_buffer) */
700 #if defined(VK_EXT_acquire_xlib_display)
701 extern PFN_vkAcquireXlibDisplayEXT vkAcquireXlibDisplayEXT;
702 extern PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT;
703 #endif /* defined(VK_EXT_acquire_xlib_display) */
704 #if defined(VK_EXT_buffer_device_address)
705 extern PFN_vkGetBufferDeviceAddressEXT vkGetBufferDeviceAddressEXT;
706 #endif /* defined(VK_EXT_buffer_device_address) */
707 #if defined(VK_EXT_calibrated_timestamps)
708 extern PFN_vkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXT;
709 extern PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT vkGetPhysicalDeviceCalibrateableTimeDomainsEXT;
710 #endif /* defined(VK_EXT_calibrated_timestamps) */
711 #if defined(VK_EXT_conditional_rendering)
712 extern PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT;
713 extern PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT;
714 #endif /* defined(VK_EXT_conditional_rendering) */
715 #if defined(VK_EXT_debug_marker)
716 extern PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT;
717 extern PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT;
718 extern PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT;
719 extern PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT;
720 extern PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT;
721 #endif /* defined(VK_EXT_debug_marker) */
722 #if defined(VK_EXT_debug_report)
723 extern PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT;
724 extern PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT;
725 extern PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT;
726 #endif /* defined(VK_EXT_debug_report) */
727 #if defined(VK_EXT_debug_utils)
728 extern PFN_vkCmdBeginDebugUtilsLabelEXT vkCmdBeginDebugUtilsLabelEXT;
729 extern PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT;
730 extern PFN_vkCmdInsertDebugUtilsLabelEXT vkCmdInsertDebugUtilsLabelEXT;
731 extern PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT;
732 extern PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT;
733 extern PFN_vkQueueBeginDebugUtilsLabelEXT vkQueueBeginDebugUtilsLabelEXT;
734 extern PFN_vkQueueEndDebugUtilsLabelEXT vkQueueEndDebugUtilsLabelEXT;
735 extern PFN_vkQueueInsertDebugUtilsLabelEXT vkQueueInsertDebugUtilsLabelEXT;
736 extern PFN_vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectNameEXT;
737 extern PFN_vkSetDebugUtilsObjectTagEXT vkSetDebugUtilsObjectTagEXT;
738 extern PFN_vkSubmitDebugUtilsMessageEXT vkSubmitDebugUtilsMessageEXT;
739 #endif /* defined(VK_EXT_debug_utils) */
740 #if defined(VK_EXT_direct_mode_display)
741 extern PFN_vkReleaseDisplayEXT vkReleaseDisplayEXT;
742 #endif /* defined(VK_EXT_direct_mode_display) */
743 #if defined(VK_EXT_discard_rectangles)
744 extern PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT;
745 #endif /* defined(VK_EXT_discard_rectangles) */
746 #if defined(VK_EXT_display_control)
747 extern PFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT;
748 extern PFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT;
749 extern PFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT;
750 extern PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT;
751 #endif /* defined(VK_EXT_display_control) */
752 #if defined(VK_EXT_display_surface_counter)
753 extern PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT;
754 #endif /* defined(VK_EXT_display_surface_counter) */
755 #if defined(VK_EXT_external_memory_host)
756 extern PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT;
757 #endif /* defined(VK_EXT_external_memory_host) */
758 #if defined(VK_EXT_full_screen_exclusive)
759 extern PFN_vkAcquireFullScreenExclusiveModeEXT vkAcquireFullScreenExclusiveModeEXT;
760 extern PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT vkGetPhysicalDeviceSurfacePresentModes2EXT;
761 extern PFN_vkReleaseFullScreenExclusiveModeEXT vkReleaseFullScreenExclusiveModeEXT;
762 #endif /* defined(VK_EXT_full_screen_exclusive) */
763 #if defined(VK_EXT_hdr_metadata)
764 extern PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT;
765 #endif /* defined(VK_EXT_hdr_metadata) */
766 #if defined(VK_EXT_headless_surface)
767 extern PFN_vkCreateHeadlessSurfaceEXT vkCreateHeadlessSurfaceEXT;
768 #endif /* defined(VK_EXT_headless_surface) */
769 #if defined(VK_EXT_host_query_reset)
770 extern PFN_vkResetQueryPoolEXT vkResetQueryPoolEXT;
771 #endif /* defined(VK_EXT_host_query_reset) */
772 #if defined(VK_EXT_image_drm_format_modifier)
773 extern PFN_vkGetImageDrmFormatModifierPropertiesEXT vkGetImageDrmFormatModifierPropertiesEXT;
774 #endif /* defined(VK_EXT_image_drm_format_modifier) */
775 #if defined(VK_EXT_line_rasterization)
776 extern PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT;
777 #endif /* defined(VK_EXT_line_rasterization) */
778 #if defined(VK_EXT_metal_surface)
779 extern PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT;
780 #endif /* defined(VK_EXT_metal_surface) */
781 #if defined(VK_EXT_sample_locations)
782 extern PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT;
783 extern PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT vkGetPhysicalDeviceMultisamplePropertiesEXT;
784 #endif /* defined(VK_EXT_sample_locations) */
785 #if defined(VK_EXT_tooling_info)
786 extern PFN_vkGetPhysicalDeviceToolPropertiesEXT vkGetPhysicalDeviceToolPropertiesEXT;
787 #endif /* defined(VK_EXT_tooling_info) */
788 #if defined(VK_EXT_transform_feedback)
789 extern PFN_vkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXT;
790 extern PFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT;
791 extern PFN_vkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXT;
792 extern PFN_vkCmdDrawIndirectByteCountEXT vkCmdDrawIndirectByteCountEXT;
793 extern PFN_vkCmdEndQueryIndexedEXT vkCmdEndQueryIndexedEXT;
794 extern PFN_vkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXT;
795 #endif /* defined(VK_EXT_transform_feedback) */
796 #if defined(VK_EXT_validation_cache)
797 extern PFN_vkCreateValidationCacheEXT vkCreateValidationCacheEXT;
798 extern PFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT;
799 extern PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT;
800 extern PFN_vkMergeValidationCachesEXT vkMergeValidationCachesEXT;
801 #endif /* defined(VK_EXT_validation_cache) */
802 #if defined(VK_FUCHSIA_imagepipe_surface)
803 extern PFN_vkCreateImagePipeSurfaceFUCHSIA vkCreateImagePipeSurfaceFUCHSIA;
804 #endif /* defined(VK_FUCHSIA_imagepipe_surface) */
805 #if defined(VK_GGP_stream_descriptor_surface)
806 extern PFN_vkCreateStreamDescriptorSurfaceGGP vkCreateStreamDescriptorSurfaceGGP;
807 #endif /* defined(VK_GGP_stream_descriptor_surface) */
808 #if defined(VK_GOOGLE_display_timing)
809 extern PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE;
810 extern PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE;
811 #endif /* defined(VK_GOOGLE_display_timing) */
812 #if defined(VK_INTEL_performance_query)
813 extern PFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL;
814 extern PFN_vkCmdSetPerformanceMarkerINTEL vkCmdSetPerformanceMarkerINTEL;
815 extern PFN_vkCmdSetPerformanceOverrideINTEL vkCmdSetPerformanceOverrideINTEL;
816 extern PFN_vkCmdSetPerformanceStreamMarkerINTEL vkCmdSetPerformanceStreamMarkerINTEL;
817 extern PFN_vkGetPerformanceParameterINTEL vkGetPerformanceParameterINTEL;
818 extern PFN_vkInitializePerformanceApiINTEL vkInitializePerformanceApiINTEL;
819 extern PFN_vkQueueSetPerformanceConfigurationINTEL vkQueueSetPerformanceConfigurationINTEL;
820 extern PFN_vkReleasePerformanceConfigurationINTEL vkReleasePerformanceConfigurationINTEL;
821 extern PFN_vkUninitializePerformanceApiINTEL vkUninitializePerformanceApiINTEL;
822 #endif /* defined(VK_INTEL_performance_query) */
823 #if defined(VK_KHR_android_surface)
824 extern PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR;
825 #endif /* defined(VK_KHR_android_surface) */
826 #if defined(VK_KHR_bind_memory2)
827 extern PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR;
828 extern PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR;
829 #endif /* defined(VK_KHR_bind_memory2) */
830 #if defined(VK_KHR_buffer_device_address)
831 extern PFN_vkGetBufferDeviceAddressKHR vkGetBufferDeviceAddressKHR;
832 extern PFN_vkGetBufferOpaqueCaptureAddressKHR vkGetBufferOpaqueCaptureAddressKHR;
833 extern PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR vkGetDeviceMemoryOpaqueCaptureAddressKHR;
834 #endif /* defined(VK_KHR_buffer_device_address) */
835 #if defined(VK_KHR_create_renderpass2)
836 extern PFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR;
837 extern PFN_vkCmdEndRenderPass2KHR vkCmdEndRenderPass2KHR;
838 extern PFN_vkCmdNextSubpass2KHR vkCmdNextSubpass2KHR;
839 extern PFN_vkCreateRenderPass2KHR vkCreateRenderPass2KHR;
840 #endif /* defined(VK_KHR_create_renderpass2) */
841 #if defined(VK_KHR_descriptor_update_template)
842 extern PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR;
843 extern PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR;
844 extern PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR;
845 #endif /* defined(VK_KHR_descriptor_update_template) */
846 #if defined(VK_KHR_device_group)
847 extern PFN_vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR;
848 extern PFN_vkCmdSetDeviceMaskKHR vkCmdSetDeviceMaskKHR;
849 extern PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR;
850 #endif /* defined(VK_KHR_device_group) */
851 #if defined(VK_KHR_device_group_creation)
852 extern PFN_vkEnumeratePhysicalDeviceGroupsKHR vkEnumeratePhysicalDeviceGroupsKHR;
853 #endif /* defined(VK_KHR_device_group_creation) */
854 #if defined(VK_KHR_display)
855 extern PFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR;
856 extern PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR;
857 extern PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR;
858 extern PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR;
859 extern PFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR;
860 extern PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
861 extern PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR;
862 #endif /* defined(VK_KHR_display) */
863 #if defined(VK_KHR_display_swapchain)
864 extern PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR;
865 #endif /* defined(VK_KHR_display_swapchain) */
866 #if defined(VK_KHR_draw_indirect_count)
867 extern PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR;
868 extern PFN_vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR;
869 #endif /* defined(VK_KHR_draw_indirect_count) */
870 #if defined(VK_KHR_external_fence_capabilities)
871 extern PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR vkGetPhysicalDeviceExternalFencePropertiesKHR;
872 #endif /* defined(VK_KHR_external_fence_capabilities) */
873 #if defined(VK_KHR_external_fence_fd)
874 extern PFN_vkGetFenceFdKHR vkGetFenceFdKHR;
875 extern PFN_vkImportFenceFdKHR vkImportFenceFdKHR;
876 #endif /* defined(VK_KHR_external_fence_fd) */
877 #if defined(VK_KHR_external_fence_win32)
878 extern PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR;
879 extern PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR;
880 #endif /* defined(VK_KHR_external_fence_win32) */
881 #if defined(VK_KHR_external_memory_capabilities)
882 extern PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR vkGetPhysicalDeviceExternalBufferPropertiesKHR;
883 #endif /* defined(VK_KHR_external_memory_capabilities) */
884 #if defined(VK_KHR_external_memory_fd)
885 extern PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR;
886 extern PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR;
887 #endif /* defined(VK_KHR_external_memory_fd) */
888 #if defined(VK_KHR_external_memory_win32)
889 extern PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR;
890 extern PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR;
891 #endif /* defined(VK_KHR_external_memory_win32) */
892 #if defined(VK_KHR_external_semaphore_capabilities)
893 extern PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
894 #endif /* defined(VK_KHR_external_semaphore_capabilities) */
895 #if defined(VK_KHR_external_semaphore_fd)
896 extern PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR;
897 extern PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR;
898 #endif /* defined(VK_KHR_external_semaphore_fd) */
899 #if defined(VK_KHR_external_semaphore_win32)
900 extern PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR;
901 extern PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR;
902 #endif /* defined(VK_KHR_external_semaphore_win32) */
903 #if defined(VK_KHR_get_display_properties2)
904 extern PFN_vkGetDisplayModeProperties2KHR vkGetDisplayModeProperties2KHR;
905 extern PFN_vkGetDisplayPlaneCapabilities2KHR vkGetDisplayPlaneCapabilities2KHR;
906 extern PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
907 extern PFN_vkGetPhysicalDeviceDisplayProperties2KHR vkGetPhysicalDeviceDisplayProperties2KHR;
908 #endif /* defined(VK_KHR_get_display_properties2) */
909 #if defined(VK_KHR_get_memory_requirements2)
910 extern PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR;
911 extern PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR;
912 extern PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR;
913 #endif /* defined(VK_KHR_get_memory_requirements2) */
914 #if defined(VK_KHR_get_physical_device_properties2)
915 extern PFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR;
916 extern PFN_vkGetPhysicalDeviceFormatProperties2KHR vkGetPhysicalDeviceFormatProperties2KHR;
917 extern PFN_vkGetPhysicalDeviceImageFormatProperties2KHR vkGetPhysicalDeviceImageFormatProperties2KHR;
918 extern PFN_vkGetPhysicalDeviceMemoryProperties2KHR vkGetPhysicalDeviceMemoryProperties2KHR;
919 extern PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR;
920 extern PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR vkGetPhysicalDeviceQueueFamilyProperties2KHR;
921 extern PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
922 #endif /* defined(VK_KHR_get_physical_device_properties2) */
923 #if defined(VK_KHR_get_surface_capabilities2)
924 extern PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR vkGetPhysicalDeviceSurfaceCapabilities2KHR;
925 extern PFN_vkGetPhysicalDeviceSurfaceFormats2KHR vkGetPhysicalDeviceSurfaceFormats2KHR;
926 #endif /* defined(VK_KHR_get_surface_capabilities2) */
927 #if defined(VK_KHR_maintenance1)
928 extern PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR;
929 #endif /* defined(VK_KHR_maintenance1) */
930 #if defined(VK_KHR_maintenance3)
931 extern PFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR;
932 #endif /* defined(VK_KHR_maintenance3) */
933 #if defined(VK_KHR_performance_query)
934 extern PFN_vkAcquireProfilingLockKHR vkAcquireProfilingLockKHR;
935 extern PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;
936 extern PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;
937 extern PFN_vkReleaseProfilingLockKHR vkReleaseProfilingLockKHR;
938 #endif /* defined(VK_KHR_performance_query) */
939 #if defined(VK_KHR_pipeline_executable_properties)
940 extern PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR;
941 extern PFN_vkGetPipelineExecutablePropertiesKHR vkGetPipelineExecutablePropertiesKHR;
942 extern PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR;
943 #endif /* defined(VK_KHR_pipeline_executable_properties) */
944 #if defined(VK_KHR_push_descriptor)
945 extern PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR;
946 #endif /* defined(VK_KHR_push_descriptor) */
947 #if defined(VK_KHR_sampler_ycbcr_conversion)
948 extern PFN_vkCreateSamplerYcbcrConversionKHR vkCreateSamplerYcbcrConversionKHR;
949 extern PFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR;
950 #endif /* defined(VK_KHR_sampler_ycbcr_conversion) */
951 #if defined(VK_KHR_shared_presentable_image)
952 extern PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR;
953 #endif /* defined(VK_KHR_shared_presentable_image) */
954 #if defined(VK_KHR_surface)
955 extern PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR;
956 extern PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
957 extern PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR;
958 extern PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR;
959 extern PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR;
960 #endif /* defined(VK_KHR_surface) */
961 #if defined(VK_KHR_swapchain)
962 extern PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR;
963 extern PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR;
964 extern PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR;
965 extern PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR;
966 extern PFN_vkQueuePresentKHR vkQueuePresentKHR;
967 #endif /* defined(VK_KHR_swapchain) */
968 #if defined(VK_KHR_timeline_semaphore)
969 extern PFN_vkGetSemaphoreCounterValueKHR vkGetSemaphoreCounterValueKHR;
970 extern PFN_vkSignalSemaphoreKHR vkSignalSemaphoreKHR;
971 extern PFN_vkWaitSemaphoresKHR vkWaitSemaphoresKHR;
972 #endif /* defined(VK_KHR_timeline_semaphore) */
973 #if defined(VK_KHR_wayland_surface)
974 extern PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR;
975 extern PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR;
976 #endif /* defined(VK_KHR_wayland_surface) */
977 #if defined(VK_KHR_win32_surface)
978 extern PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR;
979 extern PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR;
980 #endif /* defined(VK_KHR_win32_surface) */
981 #if defined(VK_KHR_xcb_surface)
982 extern PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR;
983 extern PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR;
984 #endif /* defined(VK_KHR_xcb_surface) */
985 #if defined(VK_KHR_xlib_surface)
986 extern PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR;
987 extern PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR;
988 #endif /* defined(VK_KHR_xlib_surface) */
989 #if defined(VK_MVK_ios_surface)
990 extern PFN_vkCreateIOSSurfaceMVK vkCreateIOSSurfaceMVK;
991 #endif /* defined(VK_MVK_ios_surface) */
992 #if defined(VK_MVK_macos_surface)
993 extern PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK;
994 #endif /* defined(VK_MVK_macos_surface) */
995 #if defined(VK_NN_vi_surface)
996 extern PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN;
997 #endif /* defined(VK_NN_vi_surface) */
998 #if defined(VK_NVX_device_generated_commands)
999 extern PFN_vkCmdProcessCommandsNVX vkCmdProcessCommandsNVX;
1000 extern PFN_vkCmdReserveSpaceForCommandsNVX vkCmdReserveSpaceForCommandsNVX;
1001 extern PFN_vkCreateIndirectCommandsLayoutNVX vkCreateIndirectCommandsLayoutNVX;
1002 extern PFN_vkCreateObjectTableNVX vkCreateObjectTableNVX;
1003 extern PFN_vkDestroyIndirectCommandsLayoutNVX vkDestroyIndirectCommandsLayoutNVX;
1004 extern PFN_vkDestroyObjectTableNVX vkDestroyObjectTableNVX;
1005 extern PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX;
1006 extern PFN_vkRegisterObjectsNVX vkRegisterObjectsNVX;
1007 extern PFN_vkUnregisterObjectsNVX vkUnregisterObjectsNVX;
1008 #endif /* defined(VK_NVX_device_generated_commands) */
1009 #if defined(VK_NVX_image_view_handle)
1010 extern PFN_vkGetImageViewHandleNVX vkGetImageViewHandleNVX;
1011 #endif /* defined(VK_NVX_image_view_handle) */
1012 #if defined(VK_NV_clip_space_w_scaling)
1013 extern PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV;
1014 #endif /* defined(VK_NV_clip_space_w_scaling) */
1015 #if defined(VK_NV_cooperative_matrix)
1016 extern PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV vkGetPhysicalDeviceCooperativeMatrixPropertiesNV;
1017 #endif /* defined(VK_NV_cooperative_matrix) */
1018 #if defined(VK_NV_coverage_reduction_mode)
1019 extern PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;
1020 #endif /* defined(VK_NV_coverage_reduction_mode) */
1021 #if defined(VK_NV_device_diagnostic_checkpoints)
1022 extern PFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV;
1023 extern PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV;
1024 #endif /* defined(VK_NV_device_diagnostic_checkpoints) */
1025 #if defined(VK_NV_external_memory_capabilities)
1026 extern PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
1027 #endif /* defined(VK_NV_external_memory_capabilities) */
1028 #if defined(VK_NV_external_memory_win32)
1029 extern PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV;
1030 #endif /* defined(VK_NV_external_memory_win32) */
1031 #if defined(VK_NV_mesh_shader)
1032 extern PFN_vkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNV;
1033 extern PFN_vkCmdDrawMeshTasksIndirectNV vkCmdDrawMeshTasksIndirectNV;
1034 extern PFN_vkCmdDrawMeshTasksNV vkCmdDrawMeshTasksNV;
1035 #endif /* defined(VK_NV_mesh_shader) */
1036 #if defined(VK_NV_ray_tracing)
1037 extern PFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV;
1038 extern PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV;
1039 extern PFN_vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV;
1040 extern PFN_vkCmdTraceRaysNV vkCmdTraceRaysNV;
1041 extern PFN_vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV;
1042 extern PFN_vkCompileDeferredNV vkCompileDeferredNV;
1043 extern PFN_vkCreateAccelerationStructureNV vkCreateAccelerationStructureNV;
1044 extern PFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV;
1045 extern PFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV;
1046 extern PFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV;
1047 extern PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV;
1048 extern PFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV;
1049 #endif /* defined(VK_NV_ray_tracing) */
1050 #if defined(VK_NV_scissor_exclusive)
1051 extern PFN_vkCmdSetExclusiveScissorNV vkCmdSetExclusiveScissorNV;
1052 #endif /* defined(VK_NV_scissor_exclusive) */
1053 #if defined(VK_NV_shading_rate_image)
1054 extern PFN_vkCmdBindShadingRateImageNV vkCmdBindShadingRateImageNV;
1055 extern PFN_vkCmdSetCoarseSampleOrderNV vkCmdSetCoarseSampleOrderNV;
1056 extern PFN_vkCmdSetViewportShadingRatePaletteNV vkCmdSetViewportShadingRatePaletteNV;
1057 #endif /* defined(VK_NV_shading_rate_image) */
1058 #if (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1))
1059 extern PFN_vkGetDeviceGroupSurfacePresentModes2EXT vkGetDeviceGroupSurfacePresentModes2EXT;
1060 #endif /* (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1)) */
1061 #if (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1))
1062 extern PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR;
1063 #endif /* (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) */
1064 #if (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1))
1065 extern PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR;
1066 extern PFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR;
1067 extern PFN_vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR;
1068 #endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */
1069 #if (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1))
1070 extern PFN_vkAcquireNextImage2KHR vkAcquireNextImage2KHR;
1071 #endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */
1072 /* VOLK_GENERATE_PROTOTYPES_H */
1073 
1074 #ifdef __cplusplus
1075 }
1076 #endif
1077 
1078 #endif
1079 
1080 #ifdef VOLK_IMPLEMENTATION
1081 #undef VOLK_IMPLEMENTATION
1082 // Prevent tools like dependency checkers that don't evaluate
1083 // macros from detecting a cyclic dependency.
1084 #define VOLK_SOURCE "volk.c"
1085 #include VOLK_SOURCE
1086 #endif
1087 
1088 /**
1089  * Copyright (c) 2018-2019 Arseny Kapoulkine
1090  *
1091  * Permission is hereby granted, free of charge, to any person obtaining a copy
1092  * of this software and associated documentation files (the "Software"), to deal
1093  * in the Software without restriction, including without limitation the rights
1094  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1095  * copies of the Software, and to permit persons to whom the Software is
1096  * furnished to do so, subject to the following conditions:
1097  *
1098  * The above copyright notice and this permission notice shall be included in all
1099  * copies or substantial portions of the Software.
1100  *
1101  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1102  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1103  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1104  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1105  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1106  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1107  * SOFTWARE.
1108 */
1109 /* clang-format on */
1110