1 /**
2  * Dlang vulkan function pointer prototypes, declarations and loader from vkGetInstanceProcAddr
3  *
4  * Copyright: Copyright 2015-2016 The Khronos Group Inc.; Copyright 2016 Alex Parrill, Peter Particle.
5  * License:   $(https://opensource.org/licenses/MIT, MIT License).
6  * Authors: Copyright 2016 Alex Parrill, Peter Particle
7  */
8 module erupted.functions;
9 
10 public import erupted.types;
11 
12 nothrow @nogc:
13 
14 
15 /// function type aliases
16 extern( System ) {
17 
18     // VK_VERSION_1_0
19     alias PFN_vkCreateInstance                                                  = VkResult  function( const( VkInstanceCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkInstance* pInstance );
20     alias PFN_vkDestroyInstance                                                 = void      function( VkInstance instance, const( VkAllocationCallbacks )* pAllocator );
21     alias PFN_vkEnumeratePhysicalDevices                                        = VkResult  function( VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices );
22     alias PFN_vkGetPhysicalDeviceFeatures                                       = void      function( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures );
23     alias PFN_vkGetPhysicalDeviceFormatProperties                               = void      function( VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties );
24     alias PFN_vkGetPhysicalDeviceImageFormatProperties                          = VkResult  function( VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties );
25     alias PFN_vkGetPhysicalDeviceProperties                                     = void      function( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties );
26     alias PFN_vkGetPhysicalDeviceQueueFamilyProperties                          = void      function( VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties );
27     alias PFN_vkGetPhysicalDeviceMemoryProperties                               = void      function( VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties );
28     alias PFN_vkGetInstanceProcAddr                                             = PFN_vkVoidFunction  function( VkInstance instance, const( char )* pName );
29     alias PFN_vkGetDeviceProcAddr                                               = PFN_vkVoidFunction  function( VkDevice device, const( char )* pName );
30     alias PFN_vkCreateDevice                                                    = VkResult  function( VkPhysicalDevice physicalDevice, const( VkDeviceCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkDevice* pDevice );
31     alias PFN_vkDestroyDevice                                                   = void      function( VkDevice device, const( VkAllocationCallbacks )* pAllocator );
32     alias PFN_vkEnumerateInstanceExtensionProperties                            = VkResult  function( const( char )* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties );
33     alias PFN_vkEnumerateDeviceExtensionProperties                              = VkResult  function( VkPhysicalDevice physicalDevice, const( char )* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties );
34     alias PFN_vkEnumerateInstanceLayerProperties                                = VkResult  function( uint32_t* pPropertyCount, VkLayerProperties* pProperties );
35     alias PFN_vkEnumerateDeviceLayerProperties                                  = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties );
36     alias PFN_vkGetDeviceQueue                                                  = void      function( VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue );
37     alias PFN_vkQueueSubmit                                                     = VkResult  function( VkQueue queue, uint32_t submitCount, const( VkSubmitInfo )* pSubmits, VkFence fence );
38     alias PFN_vkQueueWaitIdle                                                   = VkResult  function( VkQueue queue );
39     alias PFN_vkDeviceWaitIdle                                                  = VkResult  function( VkDevice device );
40     alias PFN_vkAllocateMemory                                                  = VkResult  function( VkDevice device, const( VkMemoryAllocateInfo )* pAllocateInfo, const( VkAllocationCallbacks )* pAllocator, VkDeviceMemory* pMemory );
41     alias PFN_vkFreeMemory                                                      = void      function( VkDevice device, VkDeviceMemory memory, const( VkAllocationCallbacks )* pAllocator );
42     alias PFN_vkMapMemory                                                       = VkResult  function( VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData );
43     alias PFN_vkUnmapMemory                                                     = void      function( VkDevice device, VkDeviceMemory memory );
44     alias PFN_vkFlushMappedMemoryRanges                                         = VkResult  function( VkDevice device, uint32_t memoryRangeCount, const( VkMappedMemoryRange )* pMemoryRanges );
45     alias PFN_vkInvalidateMappedMemoryRanges                                    = VkResult  function( VkDevice device, uint32_t memoryRangeCount, const( VkMappedMemoryRange )* pMemoryRanges );
46     alias PFN_vkGetDeviceMemoryCommitment                                       = void      function( VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes );
47     alias PFN_vkBindBufferMemory                                                = VkResult  function( VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset );
48     alias PFN_vkBindImageMemory                                                 = VkResult  function( VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset );
49     alias PFN_vkGetBufferMemoryRequirements                                     = void      function( VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements );
50     alias PFN_vkGetImageMemoryRequirements                                      = void      function( VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements );
51     alias PFN_vkGetImageSparseMemoryRequirements                                = void      function( VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements );
52     alias PFN_vkGetPhysicalDeviceSparseImageFormatProperties                    = void      function( VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties );
53     alias PFN_vkQueueBindSparse                                                 = VkResult  function( VkQueue queue, uint32_t bindInfoCount, const( VkBindSparseInfo )* pBindInfo, VkFence fence );
54     alias PFN_vkCreateFence                                                     = VkResult  function( VkDevice device, const( VkFenceCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkFence* pFence );
55     alias PFN_vkDestroyFence                                                    = void      function( VkDevice device, VkFence fence, const( VkAllocationCallbacks )* pAllocator );
56     alias PFN_vkResetFences                                                     = VkResult  function( VkDevice device, uint32_t fenceCount, const( VkFence )* pFences );
57     alias PFN_vkGetFenceStatus                                                  = VkResult  function( VkDevice device, VkFence fence );
58     alias PFN_vkWaitForFences                                                   = VkResult  function( VkDevice device, uint32_t fenceCount, const( VkFence )* pFences, VkBool32 waitAll, uint64_t timeout );
59     alias PFN_vkCreateSemaphore                                                 = VkResult  function( VkDevice device, const( VkSemaphoreCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkSemaphore* pSemaphore );
60     alias PFN_vkDestroySemaphore                                                = void      function( VkDevice device, VkSemaphore semaphore, const( VkAllocationCallbacks )* pAllocator );
61     alias PFN_vkCreateEvent                                                     = VkResult  function( VkDevice device, const( VkEventCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkEvent* pEvent );
62     alias PFN_vkDestroyEvent                                                    = void      function( VkDevice device, VkEvent event, const( VkAllocationCallbacks )* pAllocator );
63     alias PFN_vkGetEventStatus                                                  = VkResult  function( VkDevice device, VkEvent event );
64     alias PFN_vkSetEvent                                                        = VkResult  function( VkDevice device, VkEvent event );
65     alias PFN_vkResetEvent                                                      = VkResult  function( VkDevice device, VkEvent event );
66     alias PFN_vkCreateQueryPool                                                 = VkResult  function( VkDevice device, const( VkQueryPoolCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkQueryPool* pQueryPool );
67     alias PFN_vkDestroyQueryPool                                                = void      function( VkDevice device, VkQueryPool queryPool, const( VkAllocationCallbacks )* pAllocator );
68     alias PFN_vkGetQueryPoolResults                                             = VkResult  function( VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags );
69     alias PFN_vkCreateBuffer                                                    = VkResult  function( VkDevice device, const( VkBufferCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkBuffer* pBuffer );
70     alias PFN_vkDestroyBuffer                                                   = void      function( VkDevice device, VkBuffer buffer, const( VkAllocationCallbacks )* pAllocator );
71     alias PFN_vkCreateBufferView                                                = VkResult  function( VkDevice device, const( VkBufferViewCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkBufferView* pView );
72     alias PFN_vkDestroyBufferView                                               = void      function( VkDevice device, VkBufferView bufferView, const( VkAllocationCallbacks )* pAllocator );
73     alias PFN_vkCreateImage                                                     = VkResult  function( VkDevice device, const( VkImageCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkImage* pImage );
74     alias PFN_vkDestroyImage                                                    = void      function( VkDevice device, VkImage image, const( VkAllocationCallbacks )* pAllocator );
75     alias PFN_vkGetImageSubresourceLayout                                       = void      function( VkDevice device, VkImage image, const( VkImageSubresource )* pSubresource, VkSubresourceLayout* pLayout );
76     alias PFN_vkCreateImageView                                                 = VkResult  function( VkDevice device, const( VkImageViewCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkImageView* pView );
77     alias PFN_vkDestroyImageView                                                = void      function( VkDevice device, VkImageView imageView, const( VkAllocationCallbacks )* pAllocator );
78     alias PFN_vkCreateShaderModule                                              = VkResult  function( VkDevice device, const( VkShaderModuleCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkShaderModule* pShaderModule );
79     alias PFN_vkDestroyShaderModule                                             = void      function( VkDevice device, VkShaderModule shaderModule, const( VkAllocationCallbacks )* pAllocator );
80     alias PFN_vkCreatePipelineCache                                             = VkResult  function( VkDevice device, const( VkPipelineCacheCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkPipelineCache* pPipelineCache );
81     alias PFN_vkDestroyPipelineCache                                            = void      function( VkDevice device, VkPipelineCache pipelineCache, const( VkAllocationCallbacks )* pAllocator );
82     alias PFN_vkGetPipelineCacheData                                            = VkResult  function( VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData );
83     alias PFN_vkMergePipelineCaches                                             = VkResult  function( VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const( VkPipelineCache )* pSrcCaches );
84     alias PFN_vkCreateGraphicsPipelines                                         = VkResult  function( VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const( VkGraphicsPipelineCreateInfo )* pCreateInfos, const( VkAllocationCallbacks )* pAllocator, VkPipeline* pPipelines );
85     alias PFN_vkCreateComputePipelines                                          = VkResult  function( VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const( VkComputePipelineCreateInfo )* pCreateInfos, const( VkAllocationCallbacks )* pAllocator, VkPipeline* pPipelines );
86     alias PFN_vkDestroyPipeline                                                 = void      function( VkDevice device, VkPipeline pipeline, const( VkAllocationCallbacks )* pAllocator );
87     alias PFN_vkCreatePipelineLayout                                            = VkResult  function( VkDevice device, const( VkPipelineLayoutCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkPipelineLayout* pPipelineLayout );
88     alias PFN_vkDestroyPipelineLayout                                           = void      function( VkDevice device, VkPipelineLayout pipelineLayout, const( VkAllocationCallbacks )* pAllocator );
89     alias PFN_vkCreateSampler                                                   = VkResult  function( VkDevice device, const( VkSamplerCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkSampler* pSampler );
90     alias PFN_vkDestroySampler                                                  = void      function( VkDevice device, VkSampler sampler, const( VkAllocationCallbacks )* pAllocator );
91     alias PFN_vkCreateDescriptorSetLayout                                       = VkResult  function( VkDevice device, const( VkDescriptorSetLayoutCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkDescriptorSetLayout* pSetLayout );
92     alias PFN_vkDestroyDescriptorSetLayout                                      = void      function( VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const( VkAllocationCallbacks )* pAllocator );
93     alias PFN_vkCreateDescriptorPool                                            = VkResult  function( VkDevice device, const( VkDescriptorPoolCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkDescriptorPool* pDescriptorPool );
94     alias PFN_vkDestroyDescriptorPool                                           = void      function( VkDevice device, VkDescriptorPool descriptorPool, const( VkAllocationCallbacks )* pAllocator );
95     alias PFN_vkResetDescriptorPool                                             = VkResult  function( VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags );
96     alias PFN_vkAllocateDescriptorSets                                          = VkResult  function( VkDevice device, const( VkDescriptorSetAllocateInfo )* pAllocateInfo, VkDescriptorSet* pDescriptorSets );
97     alias PFN_vkFreeDescriptorSets                                              = VkResult  function( VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const( VkDescriptorSet )* pDescriptorSets );
98     alias PFN_vkUpdateDescriptorSets                                            = void      function( VkDevice device, uint32_t descriptorWriteCount, const( VkWriteDescriptorSet )* pDescriptorWrites, uint32_t descriptorCopyCount, const( VkCopyDescriptorSet )* pDescriptorCopies );
99     alias PFN_vkCreateFramebuffer                                               = VkResult  function( VkDevice device, const( VkFramebufferCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkFramebuffer* pFramebuffer );
100     alias PFN_vkDestroyFramebuffer                                              = void      function( VkDevice device, VkFramebuffer framebuffer, const( VkAllocationCallbacks )* pAllocator );
101     alias PFN_vkCreateRenderPass                                                = VkResult  function( VkDevice device, const( VkRenderPassCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkRenderPass* pRenderPass );
102     alias PFN_vkDestroyRenderPass                                               = void      function( VkDevice device, VkRenderPass renderPass, const( VkAllocationCallbacks )* pAllocator );
103     alias PFN_vkGetRenderAreaGranularity                                        = void      function( VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity );
104     alias PFN_vkCreateCommandPool                                               = VkResult  function( VkDevice device, const( VkCommandPoolCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkCommandPool* pCommandPool );
105     alias PFN_vkDestroyCommandPool                                              = void      function( VkDevice device, VkCommandPool commandPool, const( VkAllocationCallbacks )* pAllocator );
106     alias PFN_vkResetCommandPool                                                = VkResult  function( VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags );
107     alias PFN_vkAllocateCommandBuffers                                          = VkResult  function( VkDevice device, const( VkCommandBufferAllocateInfo )* pAllocateInfo, VkCommandBuffer* pCommandBuffers );
108     alias PFN_vkFreeCommandBuffers                                              = void      function( VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const( VkCommandBuffer )* pCommandBuffers );
109     alias PFN_vkBeginCommandBuffer                                              = VkResult  function( VkCommandBuffer commandBuffer, const( VkCommandBufferBeginInfo )* pBeginInfo );
110     alias PFN_vkEndCommandBuffer                                                = VkResult  function( VkCommandBuffer commandBuffer );
111     alias PFN_vkResetCommandBuffer                                              = VkResult  function( VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags );
112     alias PFN_vkCmdBindPipeline                                                 = void      function( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline );
113     alias PFN_vkCmdSetViewport                                                  = void      function( VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const( VkViewport )* pViewports );
114     alias PFN_vkCmdSetScissor                                                   = void      function( VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const( VkRect2D )* pScissors );
115     alias PFN_vkCmdSetLineWidth                                                 = void      function( VkCommandBuffer commandBuffer, float lineWidth );
116     alias PFN_vkCmdSetDepthBias                                                 = void      function( VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor );
117     alias PFN_vkCmdSetBlendConstants                                            = void      function( VkCommandBuffer commandBuffer, const float[4] blendConstants );
118     alias PFN_vkCmdSetDepthBounds                                               = void      function( VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds );
119     alias PFN_vkCmdSetStencilCompareMask                                        = void      function( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask );
120     alias PFN_vkCmdSetStencilWriteMask                                          = void      function( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask );
121     alias PFN_vkCmdSetStencilReference                                          = void      function( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference );
122     alias PFN_vkCmdBindDescriptorSets                                           = void      function( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const( VkDescriptorSet )* pDescriptorSets, uint32_t dynamicOffsetCount, const( uint32_t )* pDynamicOffsets );
123     alias PFN_vkCmdBindIndexBuffer                                              = void      function( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType );
124     alias PFN_vkCmdBindVertexBuffers                                            = void      function( VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const( VkBuffer )* pBuffers, const( VkDeviceSize )* pOffsets );
125     alias PFN_vkCmdDraw                                                         = void      function( VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance );
126     alias PFN_vkCmdDrawIndexed                                                  = void      function( VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance );
127     alias PFN_vkCmdDrawIndirect                                                 = void      function( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride );
128     alias PFN_vkCmdDrawIndexedIndirect                                          = void      function( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride );
129     alias PFN_vkCmdDispatch                                                     = void      function( VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ );
130     alias PFN_vkCmdDispatchIndirect                                             = void      function( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset );
131     alias PFN_vkCmdCopyBuffer                                                   = void      function( VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const( VkBufferCopy )* pRegions );
132     alias PFN_vkCmdCopyImage                                                    = void      function( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const( VkImageCopy )* pRegions );
133     alias PFN_vkCmdBlitImage                                                    = void      function( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const( VkImageBlit )* pRegions, VkFilter filter );
134     alias PFN_vkCmdCopyBufferToImage                                            = void      function( VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const( VkBufferImageCopy )* pRegions );
135     alias PFN_vkCmdCopyImageToBuffer                                            = void      function( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const( VkBufferImageCopy )* pRegions );
136     alias PFN_vkCmdUpdateBuffer                                                 = void      function( VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const( void )* pData );
137     alias PFN_vkCmdFillBuffer                                                   = void      function( VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data );
138     alias PFN_vkCmdClearColorImage                                              = void      function( VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const( VkClearColorValue )* pColor, uint32_t rangeCount, const( VkImageSubresourceRange )* pRanges );
139     alias PFN_vkCmdClearDepthStencilImage                                       = void      function( VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const( VkClearDepthStencilValue )* pDepthStencil, uint32_t rangeCount, const( VkImageSubresourceRange )* pRanges );
140     alias PFN_vkCmdClearAttachments                                             = void      function( VkCommandBuffer commandBuffer, uint32_t attachmentCount, const( VkClearAttachment )* pAttachments, uint32_t rectCount, const( VkClearRect )* pRects );
141     alias PFN_vkCmdResolveImage                                                 = void      function( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const( VkImageResolve )* pRegions );
142     alias PFN_vkCmdSetEvent                                                     = void      function( VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask );
143     alias PFN_vkCmdResetEvent                                                   = void      function( VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask );
144     alias PFN_vkCmdWaitEvents                                                   = void      function( VkCommandBuffer commandBuffer, uint32_t eventCount, const( VkEvent )* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const( VkMemoryBarrier )* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const( VkBufferMemoryBarrier )* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const( VkImageMemoryBarrier )* pImageMemoryBarriers );
145     alias PFN_vkCmdPipelineBarrier                                              = void      function( VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const( VkMemoryBarrier )* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const( VkBufferMemoryBarrier )* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const( VkImageMemoryBarrier )* pImageMemoryBarriers );
146     alias PFN_vkCmdBeginQuery                                                   = void      function( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags );
147     alias PFN_vkCmdEndQuery                                                     = void      function( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query );
148     alias PFN_vkCmdResetQueryPool                                               = void      function( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount );
149     alias PFN_vkCmdWriteTimestamp                                               = void      function( VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query );
150     alias PFN_vkCmdCopyQueryPoolResults                                         = void      function( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags );
151     alias PFN_vkCmdPushConstants                                                = void      function( VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const( void )* pValues );
152     alias PFN_vkCmdBeginRenderPass                                              = void      function( VkCommandBuffer commandBuffer, const( VkRenderPassBeginInfo )* pRenderPassBegin, VkSubpassContents contents );
153     alias PFN_vkCmdNextSubpass                                                  = void      function( VkCommandBuffer commandBuffer, VkSubpassContents contents );
154     alias PFN_vkCmdEndRenderPass                                                = void      function( VkCommandBuffer commandBuffer );
155     alias PFN_vkCmdExecuteCommands                                              = void      function( VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const( VkCommandBuffer )* pCommandBuffers );
156 
157     // VK_VERSION_1_1
158     alias PFN_vkEnumerateInstanceVersion                                        = VkResult  function( uint32_t* pApiVersion );
159     alias PFN_vkBindBufferMemory2                                               = VkResult  function( VkDevice device, uint32_t bindInfoCount, const( VkBindBufferMemoryInfo )* pBindInfos );
160     alias PFN_vkBindImageMemory2                                                = VkResult  function( VkDevice device, uint32_t bindInfoCount, const( VkBindImageMemoryInfo )* pBindInfos );
161     alias PFN_vkGetDeviceGroupPeerMemoryFeatures                                = void      function( VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures );
162     alias PFN_vkCmdSetDeviceMask                                                = void      function( VkCommandBuffer commandBuffer, uint32_t deviceMask );
163     alias PFN_vkCmdDispatchBase                                                 = void      function( VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ );
164     alias PFN_vkEnumeratePhysicalDeviceGroups                                   = VkResult  function( VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties );
165     alias PFN_vkGetImageMemoryRequirements2                                     = void      function( VkDevice device, const( VkImageMemoryRequirementsInfo2 )* pInfo, VkMemoryRequirements2* pMemoryRequirements );
166     alias PFN_vkGetBufferMemoryRequirements2                                    = void      function( VkDevice device, const( VkBufferMemoryRequirementsInfo2 )* pInfo, VkMemoryRequirements2* pMemoryRequirements );
167     alias PFN_vkGetImageSparseMemoryRequirements2                               = void      function( VkDevice device, const( VkImageSparseMemoryRequirementsInfo2 )* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements );
168     alias PFN_vkGetPhysicalDeviceFeatures2                                      = void      function( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures );
169     alias PFN_vkGetPhysicalDeviceProperties2                                    = void      function( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties );
170     alias PFN_vkGetPhysicalDeviceFormatProperties2                              = void      function( VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties );
171     alias PFN_vkGetPhysicalDeviceImageFormatProperties2                         = VkResult  function( VkPhysicalDevice physicalDevice, const( VkPhysicalDeviceImageFormatInfo2 )* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties );
172     alias PFN_vkGetPhysicalDeviceQueueFamilyProperties2                         = void      function( VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties );
173     alias PFN_vkGetPhysicalDeviceMemoryProperties2                              = void      function( VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties );
174     alias PFN_vkGetPhysicalDeviceSparseImageFormatProperties2                   = void      function( VkPhysicalDevice physicalDevice, const( VkPhysicalDeviceSparseImageFormatInfo2 )* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties );
175     alias PFN_vkTrimCommandPool                                                 = void      function( VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags );
176     alias PFN_vkGetDeviceQueue2                                                 = void      function( VkDevice device, const( VkDeviceQueueInfo2 )* pQueueInfo, VkQueue* pQueue );
177     alias PFN_vkCreateSamplerYcbcrConversion                                    = VkResult  function( VkDevice device, const( VkSamplerYcbcrConversionCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion );
178     alias PFN_vkDestroySamplerYcbcrConversion                                   = void      function( VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const( VkAllocationCallbacks )* pAllocator );
179     alias PFN_vkCreateDescriptorUpdateTemplate                                  = VkResult  function( VkDevice device, const( VkDescriptorUpdateTemplateCreateInfo )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate );
180     alias PFN_vkDestroyDescriptorUpdateTemplate                                 = void      function( VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const( VkAllocationCallbacks )* pAllocator );
181     alias PFN_vkUpdateDescriptorSetWithTemplate                                 = void      function( VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const( void )* pData );
182     alias PFN_vkGetPhysicalDeviceExternalBufferProperties                       = void      function( VkPhysicalDevice physicalDevice, const( VkPhysicalDeviceExternalBufferInfo )* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties );
183     alias PFN_vkGetPhysicalDeviceExternalFenceProperties                        = void      function( VkPhysicalDevice physicalDevice, const( VkPhysicalDeviceExternalFenceInfo )* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties );
184     alias PFN_vkGetPhysicalDeviceExternalSemaphoreProperties                    = void      function( VkPhysicalDevice physicalDevice, const( VkPhysicalDeviceExternalSemaphoreInfo )* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties );
185     alias PFN_vkGetDescriptorSetLayoutSupport                                   = void      function( VkDevice device, const( VkDescriptorSetLayoutCreateInfo )* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport );
186 
187     // VK_KHR_surface
188     alias PFN_vkDestroySurfaceKHR                                               = void      function( VkInstance instance, VkSurfaceKHR surface, const( VkAllocationCallbacks )* pAllocator );
189     alias PFN_vkGetPhysicalDeviceSurfaceSupportKHR                              = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported );
190     alias PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR                         = VkResult  function( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities );
191     alias PFN_vkGetPhysicalDeviceSurfaceFormatsKHR                              = VkResult  function( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats );
192     alias PFN_vkGetPhysicalDeviceSurfacePresentModesKHR                         = VkResult  function( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes );
193 
194     // VK_KHR_swapchain
195     alias PFN_vkCreateSwapchainKHR                                              = VkResult  function( VkDevice device, const( VkSwapchainCreateInfoKHR )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkSwapchainKHR* pSwapchain );
196     alias PFN_vkDestroySwapchainKHR                                             = void      function( VkDevice device, VkSwapchainKHR swapchain, const( VkAllocationCallbacks )* pAllocator );
197     alias PFN_vkGetSwapchainImagesKHR                                           = VkResult  function( VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages );
198     alias PFN_vkAcquireNextImageKHR                                             = VkResult  function( VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex );
199     alias PFN_vkQueuePresentKHR                                                 = VkResult  function( VkQueue queue, const( VkPresentInfoKHR )* pPresentInfo );
200     alias PFN_vkGetDeviceGroupPresentCapabilitiesKHR                            = VkResult  function( VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities );
201     alias PFN_vkGetDeviceGroupSurfacePresentModesKHR                            = VkResult  function( VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes );
202     alias PFN_vkGetPhysicalDevicePresentRectanglesKHR                           = VkResult  function( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects );
203     alias PFN_vkAcquireNextImage2KHR                                            = VkResult  function( VkDevice device, const( VkAcquireNextImageInfoKHR )* pAcquireInfo, uint32_t* pImageIndex );
204 
205     // VK_KHR_display
206     alias PFN_vkGetPhysicalDeviceDisplayPropertiesKHR                           = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties );
207     alias PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR                      = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties );
208     alias PFN_vkGetDisplayPlaneSupportedDisplaysKHR                             = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays );
209     alias PFN_vkGetDisplayModePropertiesKHR                                     = VkResult  function( VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties );
210     alias PFN_vkCreateDisplayModeKHR                                            = VkResult  function( VkPhysicalDevice physicalDevice, VkDisplayKHR display, const( VkDisplayModeCreateInfoKHR )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkDisplayModeKHR* pMode );
211     alias PFN_vkGetDisplayPlaneCapabilitiesKHR                                  = VkResult  function( VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities );
212     alias PFN_vkCreateDisplayPlaneSurfaceKHR                                    = VkResult  function( VkInstance instance, const( VkDisplaySurfaceCreateInfoKHR )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkSurfaceKHR* pSurface );
213 
214     // VK_KHR_display_swapchain
215     alias PFN_vkCreateSharedSwapchainsKHR                                       = VkResult  function( VkDevice device, uint32_t swapchainCount, const( VkSwapchainCreateInfoKHR )* pCreateInfos, const( VkAllocationCallbacks )* pAllocator, VkSwapchainKHR* pSwapchains );
216 
217     // VK_KHR_external_memory_fd
218     alias PFN_vkGetMemoryFdKHR                                                  = VkResult  function( VkDevice device, const( VkMemoryGetFdInfoKHR )* pGetFdInfo, int* pFd );
219     alias PFN_vkGetMemoryFdPropertiesKHR                                        = VkResult  function( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties );
220 
221     // VK_KHR_external_semaphore_fd
222     alias PFN_vkImportSemaphoreFdKHR                                            = VkResult  function( VkDevice device, const( VkImportSemaphoreFdInfoKHR )* pImportSemaphoreFdInfo );
223     alias PFN_vkGetSemaphoreFdKHR                                               = VkResult  function( VkDevice device, const( VkSemaphoreGetFdInfoKHR )* pGetFdInfo, int* pFd );
224 
225     // VK_KHR_push_descriptor
226     alias PFN_vkCmdPushDescriptorSetKHR                                         = void      function( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const( VkWriteDescriptorSet )* pDescriptorWrites );
227     alias PFN_vkCmdPushDescriptorSetWithTemplateKHR                             = void      function( VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const( void )* pData );
228 
229     // VK_KHR_create_renderpass2
230     alias PFN_vkCreateRenderPass2KHR                                            = VkResult  function( VkDevice device, const( VkRenderPassCreateInfo2KHR )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkRenderPass* pRenderPass );
231     alias PFN_vkCmdBeginRenderPass2KHR                                          = void      function( VkCommandBuffer commandBuffer, const( VkRenderPassBeginInfo )* pRenderPassBegin, const( VkSubpassBeginInfoKHR )* pSubpassBeginInfo );
232     alias PFN_vkCmdNextSubpass2KHR                                              = void      function( VkCommandBuffer commandBuffer, const( VkSubpassBeginInfoKHR )* pSubpassBeginInfo, const( VkSubpassEndInfoKHR )* pSubpassEndInfo );
233     alias PFN_vkCmdEndRenderPass2KHR                                            = void      function( VkCommandBuffer commandBuffer, const( VkSubpassEndInfoKHR )* pSubpassEndInfo );
234 
235     // VK_KHR_shared_presentable_image
236     alias PFN_vkGetSwapchainStatusKHR                                           = VkResult  function( VkDevice device, VkSwapchainKHR swapchain );
237 
238     // VK_KHR_external_fence_fd
239     alias PFN_vkImportFenceFdKHR                                                = VkResult  function( VkDevice device, const( VkImportFenceFdInfoKHR )* pImportFenceFdInfo );
240     alias PFN_vkGetFenceFdKHR                                                   = VkResult  function( VkDevice device, const( VkFenceGetFdInfoKHR )* pGetFdInfo, int* pFd );
241 
242     // VK_KHR_get_surface_capabilities2
243     alias PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR                        = VkResult  function( VkPhysicalDevice physicalDevice, const( VkPhysicalDeviceSurfaceInfo2KHR )* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities );
244     alias PFN_vkGetPhysicalDeviceSurfaceFormats2KHR                             = VkResult  function( VkPhysicalDevice physicalDevice, const( VkPhysicalDeviceSurfaceInfo2KHR )* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats );
245 
246     // VK_KHR_get_display_properties2
247     alias PFN_vkGetPhysicalDeviceDisplayProperties2KHR                          = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayProperties2KHR* pProperties );
248     alias PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR                     = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties );
249     alias PFN_vkGetDisplayModeProperties2KHR                                    = VkResult  function( VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModeProperties2KHR* pProperties );
250     alias PFN_vkGetDisplayPlaneCapabilities2KHR                                 = VkResult  function( VkPhysicalDevice physicalDevice, const( VkDisplayPlaneInfo2KHR )* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities );
251 
252     // VK_KHR_draw_indirect_count
253     alias PFN_vkCmdDrawIndirectCountKHR                                         = void      function( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride );
254     alias PFN_vkCmdDrawIndexedIndirectCountKHR                                  = void      function( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride );
255 
256     // VK_EXT_debug_report
257     alias PFN_vkCreateDebugReportCallbackEXT                                    = VkResult  function( VkInstance instance, const( VkDebugReportCallbackCreateInfoEXT )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkDebugReportCallbackEXT* pCallback );
258     alias PFN_vkDestroyDebugReportCallbackEXT                                   = void      function( VkInstance instance, VkDebugReportCallbackEXT callback, const( VkAllocationCallbacks )* pAllocator );
259     alias PFN_vkDebugReportMessageEXT                                           = void      function( VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const( char )* pLayerPrefix, const( char )* pMessage );
260 
261     // VK_EXT_debug_marker
262     alias PFN_vkDebugMarkerSetObjectTagEXT                                      = VkResult  function( VkDevice device, const( VkDebugMarkerObjectTagInfoEXT )* pTagInfo );
263     alias PFN_vkDebugMarkerSetObjectNameEXT                                     = VkResult  function( VkDevice device, const( VkDebugMarkerObjectNameInfoEXT )* pNameInfo );
264     alias PFN_vkCmdDebugMarkerBeginEXT                                          = void      function( VkCommandBuffer commandBuffer, const( VkDebugMarkerMarkerInfoEXT )* pMarkerInfo );
265     alias PFN_vkCmdDebugMarkerEndEXT                                            = void      function( VkCommandBuffer commandBuffer );
266     alias PFN_vkCmdDebugMarkerInsertEXT                                         = void      function( VkCommandBuffer commandBuffer, const( VkDebugMarkerMarkerInfoEXT )* pMarkerInfo );
267 
268     // VK_EXT_transform_feedback
269     alias PFN_vkCmdBindTransformFeedbackBuffersEXT                              = void      function( VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const( VkBuffer )* pBuffers, const( VkDeviceSize )* pOffsets, const( VkDeviceSize )* pSizes );
270     alias PFN_vkCmdBeginTransformFeedbackEXT                                    = void      function( VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const( VkBuffer )* pCounterBuffers, const( VkDeviceSize )* pCounterBufferOffsets );
271     alias PFN_vkCmdEndTransformFeedbackEXT                                      = void      function( VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const( VkBuffer )* pCounterBuffers, const( VkDeviceSize )* pCounterBufferOffsets );
272     alias PFN_vkCmdBeginQueryIndexedEXT                                         = void      function( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags, uint32_t index );
273     alias PFN_vkCmdEndQueryIndexedEXT                                           = void      function( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, uint32_t index );
274     alias PFN_vkCmdDrawIndirectByteCountEXT                                     = void      function( VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride );
275 
276     // VK_NVX_image_view_handle
277     alias PFN_vkGetImageViewHandleNVX                                           = uint32_t  function( VkDevice device, const( VkImageViewHandleInfoNVX )* pInfo );
278 
279     // VK_AMD_shader_info
280     alias PFN_vkGetShaderInfoAMD                                                = VkResult  function( VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo );
281 
282     // VK_NV_external_memory_capabilities
283     alias PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV                = VkResult  function( VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties );
284 
285     // VK_EXT_conditional_rendering
286     alias PFN_vkCmdBeginConditionalRenderingEXT                                 = void      function( VkCommandBuffer commandBuffer, const( VkConditionalRenderingBeginInfoEXT )* pConditionalRenderingBegin );
287     alias PFN_vkCmdEndConditionalRenderingEXT                                   = void      function( VkCommandBuffer commandBuffer );
288 
289     // VK_NVX_device_generated_commands
290     alias PFN_vkCmdProcessCommandsNVX                                           = void      function( VkCommandBuffer commandBuffer, const( VkCmdProcessCommandsInfoNVX )* pProcessCommandsInfo );
291     alias PFN_vkCmdReserveSpaceForCommandsNVX                                   = void      function( VkCommandBuffer commandBuffer, const( VkCmdReserveSpaceForCommandsInfoNVX )* pReserveSpaceInfo );
292     alias PFN_vkCreateIndirectCommandsLayoutNVX                                 = VkResult  function( VkDevice device, const( VkIndirectCommandsLayoutCreateInfoNVX )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout );
293     alias PFN_vkDestroyIndirectCommandsLayoutNVX                                = void      function( VkDevice device, VkIndirectCommandsLayoutNVX indirectCommandsLayout, const( VkAllocationCallbacks )* pAllocator );
294     alias PFN_vkCreateObjectTableNVX                                            = VkResult  function( VkDevice device, const( VkObjectTableCreateInfoNVX )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkObjectTableNVX* pObjectTable );
295     alias PFN_vkDestroyObjectTableNVX                                           = void      function( VkDevice device, VkObjectTableNVX objectTable, const( VkAllocationCallbacks )* pAllocator );
296     alias PFN_vkRegisterObjectsNVX                                              = VkResult  function( VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const( VkObjectTableEntryNVX* )* ppObjectTableEntries, const( uint32_t )* pObjectIndices );
297     alias PFN_vkUnregisterObjectsNVX                                            = VkResult  function( VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const( VkObjectEntryTypeNVX )* pObjectEntryTypes, const( uint32_t )* pObjectIndices );
298     alias PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX                 = void      function( VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits );
299 
300     // VK_NV_clip_space_w_scaling
301     alias PFN_vkCmdSetViewportWScalingNV                                        = void      function( VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const( VkViewportWScalingNV )* pViewportWScalings );
302 
303     // VK_EXT_direct_mode_display
304     alias PFN_vkReleaseDisplayEXT                                               = VkResult  function( VkPhysicalDevice physicalDevice, VkDisplayKHR display );
305 
306     // VK_EXT_display_surface_counter
307     alias PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT                        = VkResult  function( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities );
308 
309     // VK_EXT_display_control
310     alias PFN_vkDisplayPowerControlEXT                                          = VkResult  function( VkDevice device, VkDisplayKHR display, const( VkDisplayPowerInfoEXT )* pDisplayPowerInfo );
311     alias PFN_vkRegisterDeviceEventEXT                                          = VkResult  function( VkDevice device, const( VkDeviceEventInfoEXT )* pDeviceEventInfo, const( VkAllocationCallbacks )* pAllocator, VkFence* pFence );
312     alias PFN_vkRegisterDisplayEventEXT                                         = VkResult  function( VkDevice device, VkDisplayKHR display, const( VkDisplayEventInfoEXT )* pDisplayEventInfo, const( VkAllocationCallbacks )* pAllocator, VkFence* pFence );
313     alias PFN_vkGetSwapchainCounterEXT                                          = VkResult  function( VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue );
314 
315     // VK_GOOGLE_display_timing
316     alias PFN_vkGetRefreshCycleDurationGOOGLE                                   = VkResult  function( VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties );
317     alias PFN_vkGetPastPresentationTimingGOOGLE                                 = VkResult  function( VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings );
318 
319     // VK_EXT_discard_rectangles
320     alias PFN_vkCmdSetDiscardRectangleEXT                                       = void      function( VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const( VkRect2D )* pDiscardRectangles );
321 
322     // VK_EXT_hdr_metadata
323     alias PFN_vkSetHdrMetadataEXT                                               = void      function( VkDevice device, uint32_t swapchainCount, const( VkSwapchainKHR )* pSwapchains, const( VkHdrMetadataEXT )* pMetadata );
324 
325     // VK_EXT_debug_utils
326     alias PFN_vkSetDebugUtilsObjectNameEXT                                      = VkResult  function( VkDevice device, const( VkDebugUtilsObjectNameInfoEXT )* pNameInfo );
327     alias PFN_vkSetDebugUtilsObjectTagEXT                                       = VkResult  function( VkDevice device, const( VkDebugUtilsObjectTagInfoEXT )* pTagInfo );
328     alias PFN_vkQueueBeginDebugUtilsLabelEXT                                    = void      function( VkQueue queue, const( VkDebugUtilsLabelEXT )* pLabelInfo );
329     alias PFN_vkQueueEndDebugUtilsLabelEXT                                      = void      function( VkQueue queue );
330     alias PFN_vkQueueInsertDebugUtilsLabelEXT                                   = void      function( VkQueue queue, const( VkDebugUtilsLabelEXT )* pLabelInfo );
331     alias PFN_vkCmdBeginDebugUtilsLabelEXT                                      = void      function( VkCommandBuffer commandBuffer, const( VkDebugUtilsLabelEXT )* pLabelInfo );
332     alias PFN_vkCmdEndDebugUtilsLabelEXT                                        = void      function( VkCommandBuffer commandBuffer );
333     alias PFN_vkCmdInsertDebugUtilsLabelEXT                                     = void      function( VkCommandBuffer commandBuffer, const( VkDebugUtilsLabelEXT )* pLabelInfo );
334     alias PFN_vkCreateDebugUtilsMessengerEXT                                    = VkResult  function( VkInstance instance, const( VkDebugUtilsMessengerCreateInfoEXT )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkDebugUtilsMessengerEXT* pMessenger );
335     alias PFN_vkDestroyDebugUtilsMessengerEXT                                   = void      function( VkInstance instance, VkDebugUtilsMessengerEXT messenger, const( VkAllocationCallbacks )* pAllocator );
336     alias PFN_vkSubmitDebugUtilsMessageEXT                                      = void      function( VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const( VkDebugUtilsMessengerCallbackDataEXT )* pCallbackData );
337 
338     // VK_EXT_sample_locations
339     alias PFN_vkCmdSetSampleLocationsEXT                                        = void      function( VkCommandBuffer commandBuffer, const( VkSampleLocationsInfoEXT )* pSampleLocationsInfo );
340     alias PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT                       = void      function( VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties );
341 
342     // VK_EXT_image_drm_format_modifier
343     alias PFN_vkGetImageDrmFormatModifierPropertiesEXT                          = VkResult  function( VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties );
344 
345     // VK_EXT_validation_cache
346     alias PFN_vkCreateValidationCacheEXT                                        = VkResult  function( VkDevice device, const( VkValidationCacheCreateInfoEXT )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkValidationCacheEXT* pValidationCache );
347     alias PFN_vkDestroyValidationCacheEXT                                       = void      function( VkDevice device, VkValidationCacheEXT validationCache, const( VkAllocationCallbacks )* pAllocator );
348     alias PFN_vkMergeValidationCachesEXT                                        = VkResult  function( VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const( VkValidationCacheEXT )* pSrcCaches );
349     alias PFN_vkGetValidationCacheDataEXT                                       = VkResult  function( VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData );
350 
351     // VK_NV_shading_rate_image
352     alias PFN_vkCmdBindShadingRateImageNV                                       = void      function( VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout );
353     alias PFN_vkCmdSetViewportShadingRatePaletteNV                              = void      function( VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const( VkShadingRatePaletteNV )* pShadingRatePalettes );
354     alias PFN_vkCmdSetCoarseSampleOrderNV                                       = void      function( VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, const( VkCoarseSampleOrderCustomNV )* pCustomSampleOrders );
355 
356     // VK_NV_ray_tracing
357     alias PFN_vkCreateAccelerationStructureNV                                   = VkResult  function( VkDevice device, const( VkAccelerationStructureCreateInfoNV )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkAccelerationStructureNV* pAccelerationStructure );
358     alias PFN_vkDestroyAccelerationStructureNV                                  = void      function( VkDevice device, VkAccelerationStructureNV accelerationStructure, const( VkAllocationCallbacks )* pAllocator );
359     alias PFN_vkGetAccelerationStructureMemoryRequirementsNV                    = void      function( VkDevice device, const( VkAccelerationStructureMemoryRequirementsInfoNV )* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements );
360     alias PFN_vkBindAccelerationStructureMemoryNV                               = VkResult  function( VkDevice device, uint32_t bindInfoCount, const( VkBindAccelerationStructureMemoryInfoNV )* pBindInfos );
361     alias PFN_vkCmdBuildAccelerationStructureNV                                 = void      function( VkCommandBuffer commandBuffer, const( VkAccelerationStructureInfoNV )* pInfo, VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch, VkDeviceSize scratchOffset );
362     alias PFN_vkCmdCopyAccelerationStructureNV                                  = void      function( VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkCopyAccelerationStructureModeNV mode );
363     alias PFN_vkCmdTraceRaysNV                                                  = void      function( VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer, VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer, VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride, VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset, VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer, VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride, uint32_t width, uint32_t height, uint32_t depth );
364     alias PFN_vkCreateRayTracingPipelinesNV                                     = VkResult  function( VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const( VkRayTracingPipelineCreateInfoNV )* pCreateInfos, const( VkAllocationCallbacks )* pAllocator, VkPipeline* pPipelines );
365     alias PFN_vkGetRayTracingShaderGroupHandlesNV                               = VkResult  function( VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData );
366     alias PFN_vkGetAccelerationStructureHandleNV                                = VkResult  function( VkDevice device, VkAccelerationStructureNV accelerationStructure, size_t dataSize, void* pData );
367     alias PFN_vkCmdWriteAccelerationStructuresPropertiesNV                      = void      function( VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const( VkAccelerationStructureNV )* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery );
368     alias PFN_vkCompileDeferredNV                                               = VkResult  function( VkDevice device, VkPipeline pipeline, uint32_t shader );
369 
370     // VK_EXT_external_memory_host
371     alias PFN_vkGetMemoryHostPointerPropertiesEXT                               = VkResult  function( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const( void )* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties );
372 
373     // VK_AMD_buffer_marker
374     alias PFN_vkCmdWriteBufferMarkerAMD                                         = void      function( VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker );
375 
376     // VK_EXT_calibrated_timestamps
377     alias PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT                    = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains );
378     alias PFN_vkGetCalibratedTimestampsEXT                                      = VkResult  function( VkDevice device, uint32_t timestampCount, const( VkCalibratedTimestampInfoEXT )* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation );
379 
380     // VK_NV_mesh_shader
381     alias PFN_vkCmdDrawMeshTasksNV                                              = void      function( VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask );
382     alias PFN_vkCmdDrawMeshTasksIndirectNV                                      = void      function( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride );
383     alias PFN_vkCmdDrawMeshTasksIndirectCountNV                                 = void      function( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride );
384 
385     // VK_NV_scissor_exclusive
386     alias PFN_vkCmdSetExclusiveScissorNV                                        = void      function( VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const( VkRect2D )* pExclusiveScissors );
387 
388     // VK_NV_device_diagnostic_checkpoints
389     alias PFN_vkCmdSetCheckpointNV                                              = void      function( VkCommandBuffer commandBuffer, const( void )* pCheckpointMarker );
390     alias PFN_vkGetQueueCheckpointDataNV                                        = void      function( VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData );
391 
392     // VK_INTEL_performance_query
393     alias PFN_vkInitializePerformanceApiINTEL                                   = VkResult  function( VkDevice device, const( VkInitializePerformanceApiInfoINTEL )* pInitializeInfo );
394     alias PFN_vkUninitializePerformanceApiINTEL                                 = void      function( VkDevice device );
395     alias PFN_vkCmdSetPerformanceMarkerINTEL                                    = VkResult  function( VkCommandBuffer commandBuffer, const( VkPerformanceMarkerInfoINTEL )* pMarkerInfo );
396     alias PFN_vkCmdSetPerformanceStreamMarkerINTEL                              = VkResult  function( VkCommandBuffer commandBuffer, const( VkPerformanceStreamMarkerInfoINTEL )* pMarkerInfo );
397     alias PFN_vkCmdSetPerformanceOverrideINTEL                                  = VkResult  function( VkCommandBuffer commandBuffer, const( VkPerformanceOverrideInfoINTEL )* pOverrideInfo );
398     alias PFN_vkAcquirePerformanceConfigurationINTEL                            = VkResult  function( VkDevice device, const( VkPerformanceConfigurationAcquireInfoINTEL )* pAcquireInfo, VkPerformanceConfigurationINTEL* pConfiguration );
399     alias PFN_vkReleasePerformanceConfigurationINTEL                            = VkResult  function( VkDevice device, VkPerformanceConfigurationINTEL configuration );
400     alias PFN_vkQueueSetPerformanceConfigurationINTEL                           = VkResult  function( VkQueue queue, VkPerformanceConfigurationINTEL configuration );
401     alias PFN_vkGetPerformanceParameterINTEL                                    = VkResult  function( VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue );
402 
403     // VK_AMD_display_native_hdr
404     alias PFN_vkSetLocalDimmingAMD                                              = void      function( VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable );
405 
406     // VK_EXT_buffer_device_address
407     alias PFN_vkGetBufferDeviceAddressEXT                                       = VkDeviceAddress  function( VkDevice device, const( VkBufferDeviceAddressInfoEXT )* pInfo );
408 
409     // VK_NV_cooperative_matrix
410     alias PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV                  = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties );
411 
412     // VK_NV_coverage_reduction_mode
413     alias PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations );
414 
415     // VK_EXT_headless_surface
416     alias PFN_vkCreateHeadlessSurfaceEXT                                        = VkResult  function( VkInstance instance, const( VkHeadlessSurfaceCreateInfoEXT )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkSurfaceKHR* pSurface );
417 
418     // VK_EXT_host_query_reset
419     alias PFN_vkResetQueryPoolEXT                                               = void      function( VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount );
420 }
421 
422 
423 /// function declarations
424 __gshared {
425 
426     // VK_VERSION_1_0
427     PFN_vkCreateInstance                                                  vkCreateInstance;
428     PFN_vkDestroyInstance                                                 vkDestroyInstance;
429     PFN_vkEnumeratePhysicalDevices                                        vkEnumeratePhysicalDevices;
430     PFN_vkGetPhysicalDeviceFeatures                                       vkGetPhysicalDeviceFeatures;
431     PFN_vkGetPhysicalDeviceFormatProperties                               vkGetPhysicalDeviceFormatProperties;
432     PFN_vkGetPhysicalDeviceImageFormatProperties                          vkGetPhysicalDeviceImageFormatProperties;
433     PFN_vkGetPhysicalDeviceProperties                                     vkGetPhysicalDeviceProperties;
434     PFN_vkGetPhysicalDeviceQueueFamilyProperties                          vkGetPhysicalDeviceQueueFamilyProperties;
435     PFN_vkGetPhysicalDeviceMemoryProperties                               vkGetPhysicalDeviceMemoryProperties;
436     PFN_vkGetInstanceProcAddr                                             vkGetInstanceProcAddr;
437     PFN_vkGetDeviceProcAddr                                               vkGetDeviceProcAddr;
438     PFN_vkCreateDevice                                                    vkCreateDevice;
439     PFN_vkDestroyDevice                                                   vkDestroyDevice;
440     PFN_vkEnumerateInstanceExtensionProperties                            vkEnumerateInstanceExtensionProperties;
441     PFN_vkEnumerateDeviceExtensionProperties                              vkEnumerateDeviceExtensionProperties;
442     PFN_vkEnumerateInstanceLayerProperties                                vkEnumerateInstanceLayerProperties;
443     PFN_vkEnumerateDeviceLayerProperties                                  vkEnumerateDeviceLayerProperties;
444     PFN_vkGetDeviceQueue                                                  vkGetDeviceQueue;
445     PFN_vkQueueSubmit                                                     vkQueueSubmit;
446     PFN_vkQueueWaitIdle                                                   vkQueueWaitIdle;
447     PFN_vkDeviceWaitIdle                                                  vkDeviceWaitIdle;
448     PFN_vkAllocateMemory                                                  vkAllocateMemory;
449     PFN_vkFreeMemory                                                      vkFreeMemory;
450     PFN_vkMapMemory                                                       vkMapMemory;
451     PFN_vkUnmapMemory                                                     vkUnmapMemory;
452     PFN_vkFlushMappedMemoryRanges                                         vkFlushMappedMemoryRanges;
453     PFN_vkInvalidateMappedMemoryRanges                                    vkInvalidateMappedMemoryRanges;
454     PFN_vkGetDeviceMemoryCommitment                                       vkGetDeviceMemoryCommitment;
455     PFN_vkBindBufferMemory                                                vkBindBufferMemory;
456     PFN_vkBindImageMemory                                                 vkBindImageMemory;
457     PFN_vkGetBufferMemoryRequirements                                     vkGetBufferMemoryRequirements;
458     PFN_vkGetImageMemoryRequirements                                      vkGetImageMemoryRequirements;
459     PFN_vkGetImageSparseMemoryRequirements                                vkGetImageSparseMemoryRequirements;
460     PFN_vkGetPhysicalDeviceSparseImageFormatProperties                    vkGetPhysicalDeviceSparseImageFormatProperties;
461     PFN_vkQueueBindSparse                                                 vkQueueBindSparse;
462     PFN_vkCreateFence                                                     vkCreateFence;
463     PFN_vkDestroyFence                                                    vkDestroyFence;
464     PFN_vkResetFences                                                     vkResetFences;
465     PFN_vkGetFenceStatus                                                  vkGetFenceStatus;
466     PFN_vkWaitForFences                                                   vkWaitForFences;
467     PFN_vkCreateSemaphore                                                 vkCreateSemaphore;
468     PFN_vkDestroySemaphore                                                vkDestroySemaphore;
469     PFN_vkCreateEvent                                                     vkCreateEvent;
470     PFN_vkDestroyEvent                                                    vkDestroyEvent;
471     PFN_vkGetEventStatus                                                  vkGetEventStatus;
472     PFN_vkSetEvent                                                        vkSetEvent;
473     PFN_vkResetEvent                                                      vkResetEvent;
474     PFN_vkCreateQueryPool                                                 vkCreateQueryPool;
475     PFN_vkDestroyQueryPool                                                vkDestroyQueryPool;
476     PFN_vkGetQueryPoolResults                                             vkGetQueryPoolResults;
477     PFN_vkCreateBuffer                                                    vkCreateBuffer;
478     PFN_vkDestroyBuffer                                                   vkDestroyBuffer;
479     PFN_vkCreateBufferView                                                vkCreateBufferView;
480     PFN_vkDestroyBufferView                                               vkDestroyBufferView;
481     PFN_vkCreateImage                                                     vkCreateImage;
482     PFN_vkDestroyImage                                                    vkDestroyImage;
483     PFN_vkGetImageSubresourceLayout                                       vkGetImageSubresourceLayout;
484     PFN_vkCreateImageView                                                 vkCreateImageView;
485     PFN_vkDestroyImageView                                                vkDestroyImageView;
486     PFN_vkCreateShaderModule                                              vkCreateShaderModule;
487     PFN_vkDestroyShaderModule                                             vkDestroyShaderModule;
488     PFN_vkCreatePipelineCache                                             vkCreatePipelineCache;
489     PFN_vkDestroyPipelineCache                                            vkDestroyPipelineCache;
490     PFN_vkGetPipelineCacheData                                            vkGetPipelineCacheData;
491     PFN_vkMergePipelineCaches                                             vkMergePipelineCaches;
492     PFN_vkCreateGraphicsPipelines                                         vkCreateGraphicsPipelines;
493     PFN_vkCreateComputePipelines                                          vkCreateComputePipelines;
494     PFN_vkDestroyPipeline                                                 vkDestroyPipeline;
495     PFN_vkCreatePipelineLayout                                            vkCreatePipelineLayout;
496     PFN_vkDestroyPipelineLayout                                           vkDestroyPipelineLayout;
497     PFN_vkCreateSampler                                                   vkCreateSampler;
498     PFN_vkDestroySampler                                                  vkDestroySampler;
499     PFN_vkCreateDescriptorSetLayout                                       vkCreateDescriptorSetLayout;
500     PFN_vkDestroyDescriptorSetLayout                                      vkDestroyDescriptorSetLayout;
501     PFN_vkCreateDescriptorPool                                            vkCreateDescriptorPool;
502     PFN_vkDestroyDescriptorPool                                           vkDestroyDescriptorPool;
503     PFN_vkResetDescriptorPool                                             vkResetDescriptorPool;
504     PFN_vkAllocateDescriptorSets                                          vkAllocateDescriptorSets;
505     PFN_vkFreeDescriptorSets                                              vkFreeDescriptorSets;
506     PFN_vkUpdateDescriptorSets                                            vkUpdateDescriptorSets;
507     PFN_vkCreateFramebuffer                                               vkCreateFramebuffer;
508     PFN_vkDestroyFramebuffer                                              vkDestroyFramebuffer;
509     PFN_vkCreateRenderPass                                                vkCreateRenderPass;
510     PFN_vkDestroyRenderPass                                               vkDestroyRenderPass;
511     PFN_vkGetRenderAreaGranularity                                        vkGetRenderAreaGranularity;
512     PFN_vkCreateCommandPool                                               vkCreateCommandPool;
513     PFN_vkDestroyCommandPool                                              vkDestroyCommandPool;
514     PFN_vkResetCommandPool                                                vkResetCommandPool;
515     PFN_vkAllocateCommandBuffers                                          vkAllocateCommandBuffers;
516     PFN_vkFreeCommandBuffers                                              vkFreeCommandBuffers;
517     PFN_vkBeginCommandBuffer                                              vkBeginCommandBuffer;
518     PFN_vkEndCommandBuffer                                                vkEndCommandBuffer;
519     PFN_vkResetCommandBuffer                                              vkResetCommandBuffer;
520     PFN_vkCmdBindPipeline                                                 vkCmdBindPipeline;
521     PFN_vkCmdSetViewport                                                  vkCmdSetViewport;
522     PFN_vkCmdSetScissor                                                   vkCmdSetScissor;
523     PFN_vkCmdSetLineWidth                                                 vkCmdSetLineWidth;
524     PFN_vkCmdSetDepthBias                                                 vkCmdSetDepthBias;
525     PFN_vkCmdSetBlendConstants                                            vkCmdSetBlendConstants;
526     PFN_vkCmdSetDepthBounds                                               vkCmdSetDepthBounds;
527     PFN_vkCmdSetStencilCompareMask                                        vkCmdSetStencilCompareMask;
528     PFN_vkCmdSetStencilWriteMask                                          vkCmdSetStencilWriteMask;
529     PFN_vkCmdSetStencilReference                                          vkCmdSetStencilReference;
530     PFN_vkCmdBindDescriptorSets                                           vkCmdBindDescriptorSets;
531     PFN_vkCmdBindIndexBuffer                                              vkCmdBindIndexBuffer;
532     PFN_vkCmdBindVertexBuffers                                            vkCmdBindVertexBuffers;
533     PFN_vkCmdDraw                                                         vkCmdDraw;
534     PFN_vkCmdDrawIndexed                                                  vkCmdDrawIndexed;
535     PFN_vkCmdDrawIndirect                                                 vkCmdDrawIndirect;
536     PFN_vkCmdDrawIndexedIndirect                                          vkCmdDrawIndexedIndirect;
537     PFN_vkCmdDispatch                                                     vkCmdDispatch;
538     PFN_vkCmdDispatchIndirect                                             vkCmdDispatchIndirect;
539     PFN_vkCmdCopyBuffer                                                   vkCmdCopyBuffer;
540     PFN_vkCmdCopyImage                                                    vkCmdCopyImage;
541     PFN_vkCmdBlitImage                                                    vkCmdBlitImage;
542     PFN_vkCmdCopyBufferToImage                                            vkCmdCopyBufferToImage;
543     PFN_vkCmdCopyImageToBuffer                                            vkCmdCopyImageToBuffer;
544     PFN_vkCmdUpdateBuffer                                                 vkCmdUpdateBuffer;
545     PFN_vkCmdFillBuffer                                                   vkCmdFillBuffer;
546     PFN_vkCmdClearColorImage                                              vkCmdClearColorImage;
547     PFN_vkCmdClearDepthStencilImage                                       vkCmdClearDepthStencilImage;
548     PFN_vkCmdClearAttachments                                             vkCmdClearAttachments;
549     PFN_vkCmdResolveImage                                                 vkCmdResolveImage;
550     PFN_vkCmdSetEvent                                                     vkCmdSetEvent;
551     PFN_vkCmdResetEvent                                                   vkCmdResetEvent;
552     PFN_vkCmdWaitEvents                                                   vkCmdWaitEvents;
553     PFN_vkCmdPipelineBarrier                                              vkCmdPipelineBarrier;
554     PFN_vkCmdBeginQuery                                                   vkCmdBeginQuery;
555     PFN_vkCmdEndQuery                                                     vkCmdEndQuery;
556     PFN_vkCmdResetQueryPool                                               vkCmdResetQueryPool;
557     PFN_vkCmdWriteTimestamp                                               vkCmdWriteTimestamp;
558     PFN_vkCmdCopyQueryPoolResults                                         vkCmdCopyQueryPoolResults;
559     PFN_vkCmdPushConstants                                                vkCmdPushConstants;
560     PFN_vkCmdBeginRenderPass                                              vkCmdBeginRenderPass;
561     PFN_vkCmdNextSubpass                                                  vkCmdNextSubpass;
562     PFN_vkCmdEndRenderPass                                                vkCmdEndRenderPass;
563     PFN_vkCmdExecuteCommands                                              vkCmdExecuteCommands;
564 
565     // VK_VERSION_1_1
566     PFN_vkEnumerateInstanceVersion                                        vkEnumerateInstanceVersion;
567     PFN_vkBindBufferMemory2                                               vkBindBufferMemory2;
568     PFN_vkBindImageMemory2                                                vkBindImageMemory2;
569     PFN_vkGetDeviceGroupPeerMemoryFeatures                                vkGetDeviceGroupPeerMemoryFeatures;
570     PFN_vkCmdSetDeviceMask                                                vkCmdSetDeviceMask;
571     PFN_vkCmdDispatchBase                                                 vkCmdDispatchBase;
572     PFN_vkEnumeratePhysicalDeviceGroups                                   vkEnumeratePhysicalDeviceGroups;
573     PFN_vkGetImageMemoryRequirements2                                     vkGetImageMemoryRequirements2;
574     PFN_vkGetBufferMemoryRequirements2                                    vkGetBufferMemoryRequirements2;
575     PFN_vkGetImageSparseMemoryRequirements2                               vkGetImageSparseMemoryRequirements2;
576     PFN_vkGetPhysicalDeviceFeatures2                                      vkGetPhysicalDeviceFeatures2;
577     PFN_vkGetPhysicalDeviceProperties2                                    vkGetPhysicalDeviceProperties2;
578     PFN_vkGetPhysicalDeviceFormatProperties2                              vkGetPhysicalDeviceFormatProperties2;
579     PFN_vkGetPhysicalDeviceImageFormatProperties2                         vkGetPhysicalDeviceImageFormatProperties2;
580     PFN_vkGetPhysicalDeviceQueueFamilyProperties2                         vkGetPhysicalDeviceQueueFamilyProperties2;
581     PFN_vkGetPhysicalDeviceMemoryProperties2                              vkGetPhysicalDeviceMemoryProperties2;
582     PFN_vkGetPhysicalDeviceSparseImageFormatProperties2                   vkGetPhysicalDeviceSparseImageFormatProperties2;
583     PFN_vkTrimCommandPool                                                 vkTrimCommandPool;
584     PFN_vkGetDeviceQueue2                                                 vkGetDeviceQueue2;
585     PFN_vkCreateSamplerYcbcrConversion                                    vkCreateSamplerYcbcrConversion;
586     PFN_vkDestroySamplerYcbcrConversion                                   vkDestroySamplerYcbcrConversion;
587     PFN_vkCreateDescriptorUpdateTemplate                                  vkCreateDescriptorUpdateTemplate;
588     PFN_vkDestroyDescriptorUpdateTemplate                                 vkDestroyDescriptorUpdateTemplate;
589     PFN_vkUpdateDescriptorSetWithTemplate                                 vkUpdateDescriptorSetWithTemplate;
590     PFN_vkGetPhysicalDeviceExternalBufferProperties                       vkGetPhysicalDeviceExternalBufferProperties;
591     PFN_vkGetPhysicalDeviceExternalFenceProperties                        vkGetPhysicalDeviceExternalFenceProperties;
592     PFN_vkGetPhysicalDeviceExternalSemaphoreProperties                    vkGetPhysicalDeviceExternalSemaphoreProperties;
593     PFN_vkGetDescriptorSetLayoutSupport                                   vkGetDescriptorSetLayoutSupport;
594 
595     // VK_KHR_surface
596     PFN_vkDestroySurfaceKHR                                               vkDestroySurfaceKHR;
597     PFN_vkGetPhysicalDeviceSurfaceSupportKHR                              vkGetPhysicalDeviceSurfaceSupportKHR;
598     PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR                         vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
599     PFN_vkGetPhysicalDeviceSurfaceFormatsKHR                              vkGetPhysicalDeviceSurfaceFormatsKHR;
600     PFN_vkGetPhysicalDeviceSurfacePresentModesKHR                         vkGetPhysicalDeviceSurfacePresentModesKHR;
601 
602     // VK_KHR_swapchain
603     PFN_vkCreateSwapchainKHR                                              vkCreateSwapchainKHR;
604     PFN_vkDestroySwapchainKHR                                             vkDestroySwapchainKHR;
605     PFN_vkGetSwapchainImagesKHR                                           vkGetSwapchainImagesKHR;
606     PFN_vkAcquireNextImageKHR                                             vkAcquireNextImageKHR;
607     PFN_vkQueuePresentKHR                                                 vkQueuePresentKHR;
608     PFN_vkGetDeviceGroupPresentCapabilitiesKHR                            vkGetDeviceGroupPresentCapabilitiesKHR;
609     PFN_vkGetDeviceGroupSurfacePresentModesKHR                            vkGetDeviceGroupSurfacePresentModesKHR;
610     PFN_vkGetPhysicalDevicePresentRectanglesKHR                           vkGetPhysicalDevicePresentRectanglesKHR;
611     PFN_vkAcquireNextImage2KHR                                            vkAcquireNextImage2KHR;
612 
613     // VK_KHR_display
614     PFN_vkGetPhysicalDeviceDisplayPropertiesKHR                           vkGetPhysicalDeviceDisplayPropertiesKHR;
615     PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR                      vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
616     PFN_vkGetDisplayPlaneSupportedDisplaysKHR                             vkGetDisplayPlaneSupportedDisplaysKHR;
617     PFN_vkGetDisplayModePropertiesKHR                                     vkGetDisplayModePropertiesKHR;
618     PFN_vkCreateDisplayModeKHR                                            vkCreateDisplayModeKHR;
619     PFN_vkGetDisplayPlaneCapabilitiesKHR                                  vkGetDisplayPlaneCapabilitiesKHR;
620     PFN_vkCreateDisplayPlaneSurfaceKHR                                    vkCreateDisplayPlaneSurfaceKHR;
621 
622     // VK_KHR_display_swapchain
623     PFN_vkCreateSharedSwapchainsKHR                                       vkCreateSharedSwapchainsKHR;
624 
625     // VK_KHR_external_memory_fd
626     PFN_vkGetMemoryFdKHR                                                  vkGetMemoryFdKHR;
627     PFN_vkGetMemoryFdPropertiesKHR                                        vkGetMemoryFdPropertiesKHR;
628 
629     // VK_KHR_external_semaphore_fd
630     PFN_vkImportSemaphoreFdKHR                                            vkImportSemaphoreFdKHR;
631     PFN_vkGetSemaphoreFdKHR                                               vkGetSemaphoreFdKHR;
632 
633     // VK_KHR_push_descriptor
634     PFN_vkCmdPushDescriptorSetKHR                                         vkCmdPushDescriptorSetKHR;
635     PFN_vkCmdPushDescriptorSetWithTemplateKHR                             vkCmdPushDescriptorSetWithTemplateKHR;
636 
637     // VK_KHR_create_renderpass2
638     PFN_vkCreateRenderPass2KHR                                            vkCreateRenderPass2KHR;
639     PFN_vkCmdBeginRenderPass2KHR                                          vkCmdBeginRenderPass2KHR;
640     PFN_vkCmdNextSubpass2KHR                                              vkCmdNextSubpass2KHR;
641     PFN_vkCmdEndRenderPass2KHR                                            vkCmdEndRenderPass2KHR;
642 
643     // VK_KHR_shared_presentable_image
644     PFN_vkGetSwapchainStatusKHR                                           vkGetSwapchainStatusKHR;
645 
646     // VK_KHR_external_fence_fd
647     PFN_vkImportFenceFdKHR                                                vkImportFenceFdKHR;
648     PFN_vkGetFenceFdKHR                                                   vkGetFenceFdKHR;
649 
650     // VK_KHR_get_surface_capabilities2
651     PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR                        vkGetPhysicalDeviceSurfaceCapabilities2KHR;
652     PFN_vkGetPhysicalDeviceSurfaceFormats2KHR                             vkGetPhysicalDeviceSurfaceFormats2KHR;
653 
654     // VK_KHR_get_display_properties2
655     PFN_vkGetPhysicalDeviceDisplayProperties2KHR                          vkGetPhysicalDeviceDisplayProperties2KHR;
656     PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR                     vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
657     PFN_vkGetDisplayModeProperties2KHR                                    vkGetDisplayModeProperties2KHR;
658     PFN_vkGetDisplayPlaneCapabilities2KHR                                 vkGetDisplayPlaneCapabilities2KHR;
659 
660     // VK_KHR_draw_indirect_count
661     PFN_vkCmdDrawIndirectCountKHR                                         vkCmdDrawIndirectCountKHR;
662     PFN_vkCmdDrawIndexedIndirectCountKHR                                  vkCmdDrawIndexedIndirectCountKHR;
663 
664     // VK_EXT_debug_report
665     PFN_vkCreateDebugReportCallbackEXT                                    vkCreateDebugReportCallbackEXT;
666     PFN_vkDestroyDebugReportCallbackEXT                                   vkDestroyDebugReportCallbackEXT;
667     PFN_vkDebugReportMessageEXT                                           vkDebugReportMessageEXT;
668 
669     // VK_EXT_debug_marker
670     PFN_vkDebugMarkerSetObjectTagEXT                                      vkDebugMarkerSetObjectTagEXT;
671     PFN_vkDebugMarkerSetObjectNameEXT                                     vkDebugMarkerSetObjectNameEXT;
672     PFN_vkCmdDebugMarkerBeginEXT                                          vkCmdDebugMarkerBeginEXT;
673     PFN_vkCmdDebugMarkerEndEXT                                            vkCmdDebugMarkerEndEXT;
674     PFN_vkCmdDebugMarkerInsertEXT                                         vkCmdDebugMarkerInsertEXT;
675 
676     // VK_EXT_transform_feedback
677     PFN_vkCmdBindTransformFeedbackBuffersEXT                              vkCmdBindTransformFeedbackBuffersEXT;
678     PFN_vkCmdBeginTransformFeedbackEXT                                    vkCmdBeginTransformFeedbackEXT;
679     PFN_vkCmdEndTransformFeedbackEXT                                      vkCmdEndTransformFeedbackEXT;
680     PFN_vkCmdBeginQueryIndexedEXT                                         vkCmdBeginQueryIndexedEXT;
681     PFN_vkCmdEndQueryIndexedEXT                                           vkCmdEndQueryIndexedEXT;
682     PFN_vkCmdDrawIndirectByteCountEXT                                     vkCmdDrawIndirectByteCountEXT;
683 
684     // VK_NVX_image_view_handle
685     PFN_vkGetImageViewHandleNVX                                           vkGetImageViewHandleNVX;
686 
687     // VK_AMD_shader_info
688     PFN_vkGetShaderInfoAMD                                                vkGetShaderInfoAMD;
689 
690     // VK_NV_external_memory_capabilities
691     PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV                vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
692 
693     // VK_EXT_conditional_rendering
694     PFN_vkCmdBeginConditionalRenderingEXT                                 vkCmdBeginConditionalRenderingEXT;
695     PFN_vkCmdEndConditionalRenderingEXT                                   vkCmdEndConditionalRenderingEXT;
696 
697     // VK_NVX_device_generated_commands
698     PFN_vkCmdProcessCommandsNVX                                           vkCmdProcessCommandsNVX;
699     PFN_vkCmdReserveSpaceForCommandsNVX                                   vkCmdReserveSpaceForCommandsNVX;
700     PFN_vkCreateIndirectCommandsLayoutNVX                                 vkCreateIndirectCommandsLayoutNVX;
701     PFN_vkDestroyIndirectCommandsLayoutNVX                                vkDestroyIndirectCommandsLayoutNVX;
702     PFN_vkCreateObjectTableNVX                                            vkCreateObjectTableNVX;
703     PFN_vkDestroyObjectTableNVX                                           vkDestroyObjectTableNVX;
704     PFN_vkRegisterObjectsNVX                                              vkRegisterObjectsNVX;
705     PFN_vkUnregisterObjectsNVX                                            vkUnregisterObjectsNVX;
706     PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX                 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX;
707 
708     // VK_NV_clip_space_w_scaling
709     PFN_vkCmdSetViewportWScalingNV                                        vkCmdSetViewportWScalingNV;
710 
711     // VK_EXT_direct_mode_display
712     PFN_vkReleaseDisplayEXT                                               vkReleaseDisplayEXT;
713 
714     // VK_EXT_display_surface_counter
715     PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT                        vkGetPhysicalDeviceSurfaceCapabilities2EXT;
716 
717     // VK_EXT_display_control
718     PFN_vkDisplayPowerControlEXT                                          vkDisplayPowerControlEXT;
719     PFN_vkRegisterDeviceEventEXT                                          vkRegisterDeviceEventEXT;
720     PFN_vkRegisterDisplayEventEXT                                         vkRegisterDisplayEventEXT;
721     PFN_vkGetSwapchainCounterEXT                                          vkGetSwapchainCounterEXT;
722 
723     // VK_GOOGLE_display_timing
724     PFN_vkGetRefreshCycleDurationGOOGLE                                   vkGetRefreshCycleDurationGOOGLE;
725     PFN_vkGetPastPresentationTimingGOOGLE                                 vkGetPastPresentationTimingGOOGLE;
726 
727     // VK_EXT_discard_rectangles
728     PFN_vkCmdSetDiscardRectangleEXT                                       vkCmdSetDiscardRectangleEXT;
729 
730     // VK_EXT_hdr_metadata
731     PFN_vkSetHdrMetadataEXT                                               vkSetHdrMetadataEXT;
732 
733     // VK_EXT_debug_utils
734     PFN_vkSetDebugUtilsObjectNameEXT                                      vkSetDebugUtilsObjectNameEXT;
735     PFN_vkSetDebugUtilsObjectTagEXT                                       vkSetDebugUtilsObjectTagEXT;
736     PFN_vkQueueBeginDebugUtilsLabelEXT                                    vkQueueBeginDebugUtilsLabelEXT;
737     PFN_vkQueueEndDebugUtilsLabelEXT                                      vkQueueEndDebugUtilsLabelEXT;
738     PFN_vkQueueInsertDebugUtilsLabelEXT                                   vkQueueInsertDebugUtilsLabelEXT;
739     PFN_vkCmdBeginDebugUtilsLabelEXT                                      vkCmdBeginDebugUtilsLabelEXT;
740     PFN_vkCmdEndDebugUtilsLabelEXT                                        vkCmdEndDebugUtilsLabelEXT;
741     PFN_vkCmdInsertDebugUtilsLabelEXT                                     vkCmdInsertDebugUtilsLabelEXT;
742     PFN_vkCreateDebugUtilsMessengerEXT                                    vkCreateDebugUtilsMessengerEXT;
743     PFN_vkDestroyDebugUtilsMessengerEXT                                   vkDestroyDebugUtilsMessengerEXT;
744     PFN_vkSubmitDebugUtilsMessageEXT                                      vkSubmitDebugUtilsMessageEXT;
745 
746     // VK_EXT_sample_locations
747     PFN_vkCmdSetSampleLocationsEXT                                        vkCmdSetSampleLocationsEXT;
748     PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT                       vkGetPhysicalDeviceMultisamplePropertiesEXT;
749 
750     // VK_EXT_image_drm_format_modifier
751     PFN_vkGetImageDrmFormatModifierPropertiesEXT                          vkGetImageDrmFormatModifierPropertiesEXT;
752 
753     // VK_EXT_validation_cache
754     PFN_vkCreateValidationCacheEXT                                        vkCreateValidationCacheEXT;
755     PFN_vkDestroyValidationCacheEXT                                       vkDestroyValidationCacheEXT;
756     PFN_vkMergeValidationCachesEXT                                        vkMergeValidationCachesEXT;
757     PFN_vkGetValidationCacheDataEXT                                       vkGetValidationCacheDataEXT;
758 
759     // VK_NV_shading_rate_image
760     PFN_vkCmdBindShadingRateImageNV                                       vkCmdBindShadingRateImageNV;
761     PFN_vkCmdSetViewportShadingRatePaletteNV                              vkCmdSetViewportShadingRatePaletteNV;
762     PFN_vkCmdSetCoarseSampleOrderNV                                       vkCmdSetCoarseSampleOrderNV;
763 
764     // VK_NV_ray_tracing
765     PFN_vkCreateAccelerationStructureNV                                   vkCreateAccelerationStructureNV;
766     PFN_vkDestroyAccelerationStructureNV                                  vkDestroyAccelerationStructureNV;
767     PFN_vkGetAccelerationStructureMemoryRequirementsNV                    vkGetAccelerationStructureMemoryRequirementsNV;
768     PFN_vkBindAccelerationStructureMemoryNV                               vkBindAccelerationStructureMemoryNV;
769     PFN_vkCmdBuildAccelerationStructureNV                                 vkCmdBuildAccelerationStructureNV;
770     PFN_vkCmdCopyAccelerationStructureNV                                  vkCmdCopyAccelerationStructureNV;
771     PFN_vkCmdTraceRaysNV                                                  vkCmdTraceRaysNV;
772     PFN_vkCreateRayTracingPipelinesNV                                     vkCreateRayTracingPipelinesNV;
773     PFN_vkGetRayTracingShaderGroupHandlesNV                               vkGetRayTracingShaderGroupHandlesNV;
774     PFN_vkGetAccelerationStructureHandleNV                                vkGetAccelerationStructureHandleNV;
775     PFN_vkCmdWriteAccelerationStructuresPropertiesNV                      vkCmdWriteAccelerationStructuresPropertiesNV;
776     PFN_vkCompileDeferredNV                                               vkCompileDeferredNV;
777 
778     // VK_EXT_external_memory_host
779     PFN_vkGetMemoryHostPointerPropertiesEXT                               vkGetMemoryHostPointerPropertiesEXT;
780 
781     // VK_AMD_buffer_marker
782     PFN_vkCmdWriteBufferMarkerAMD                                         vkCmdWriteBufferMarkerAMD;
783 
784     // VK_EXT_calibrated_timestamps
785     PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT                    vkGetPhysicalDeviceCalibrateableTimeDomainsEXT;
786     PFN_vkGetCalibratedTimestampsEXT                                      vkGetCalibratedTimestampsEXT;
787 
788     // VK_NV_mesh_shader
789     PFN_vkCmdDrawMeshTasksNV                                              vkCmdDrawMeshTasksNV;
790     PFN_vkCmdDrawMeshTasksIndirectNV                                      vkCmdDrawMeshTasksIndirectNV;
791     PFN_vkCmdDrawMeshTasksIndirectCountNV                                 vkCmdDrawMeshTasksIndirectCountNV;
792 
793     // VK_NV_scissor_exclusive
794     PFN_vkCmdSetExclusiveScissorNV                                        vkCmdSetExclusiveScissorNV;
795 
796     // VK_NV_device_diagnostic_checkpoints
797     PFN_vkCmdSetCheckpointNV                                              vkCmdSetCheckpointNV;
798     PFN_vkGetQueueCheckpointDataNV                                        vkGetQueueCheckpointDataNV;
799 
800     // VK_INTEL_performance_query
801     PFN_vkInitializePerformanceApiINTEL                                   vkInitializePerformanceApiINTEL;
802     PFN_vkUninitializePerformanceApiINTEL                                 vkUninitializePerformanceApiINTEL;
803     PFN_vkCmdSetPerformanceMarkerINTEL                                    vkCmdSetPerformanceMarkerINTEL;
804     PFN_vkCmdSetPerformanceStreamMarkerINTEL                              vkCmdSetPerformanceStreamMarkerINTEL;
805     PFN_vkCmdSetPerformanceOverrideINTEL                                  vkCmdSetPerformanceOverrideINTEL;
806     PFN_vkAcquirePerformanceConfigurationINTEL                            vkAcquirePerformanceConfigurationINTEL;
807     PFN_vkReleasePerformanceConfigurationINTEL                            vkReleasePerformanceConfigurationINTEL;
808     PFN_vkQueueSetPerformanceConfigurationINTEL                           vkQueueSetPerformanceConfigurationINTEL;
809     PFN_vkGetPerformanceParameterINTEL                                    vkGetPerformanceParameterINTEL;
810 
811     // VK_AMD_display_native_hdr
812     PFN_vkSetLocalDimmingAMD                                              vkSetLocalDimmingAMD;
813 
814     // VK_EXT_buffer_device_address
815     PFN_vkGetBufferDeviceAddressEXT                                       vkGetBufferDeviceAddressEXT;
816 
817     // VK_NV_cooperative_matrix
818     PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV                  vkGetPhysicalDeviceCooperativeMatrixPropertiesNV;
819 
820     // VK_NV_coverage_reduction_mode
821     PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;
822 
823     // VK_EXT_headless_surface
824     PFN_vkCreateHeadlessSurfaceEXT                                        vkCreateHeadlessSurfaceEXT;
825 
826     // VK_EXT_host_query_reset
827     PFN_vkResetQueryPoolEXT                                               vkResetQueryPoolEXT;
828 
829     // VK_KHR_get_physical_device_properties2
830     alias vkGetPhysicalDeviceFeatures2KHR                                         = vkGetPhysicalDeviceFeatures2;
831     alias vkGetPhysicalDeviceProperties2KHR                                       = vkGetPhysicalDeviceProperties2;
832     alias vkGetPhysicalDeviceFormatProperties2KHR                                 = vkGetPhysicalDeviceFormatProperties2;
833     alias vkGetPhysicalDeviceImageFormatProperties2KHR                            = vkGetPhysicalDeviceImageFormatProperties2;
834     alias vkGetPhysicalDeviceQueueFamilyProperties2KHR                            = vkGetPhysicalDeviceQueueFamilyProperties2;
835     alias vkGetPhysicalDeviceMemoryProperties2KHR                                 = vkGetPhysicalDeviceMemoryProperties2;
836     alias vkGetPhysicalDeviceSparseImageFormatProperties2KHR                      = vkGetPhysicalDeviceSparseImageFormatProperties2;
837 
838     // VK_KHR_device_group
839     alias vkGetDeviceGroupPeerMemoryFeaturesKHR                                   = vkGetDeviceGroupPeerMemoryFeatures;
840     alias vkCmdSetDeviceMaskKHR                                                   = vkCmdSetDeviceMask;
841     alias vkCmdDispatchBaseKHR                                                    = vkCmdDispatchBase;
842 
843     // VK_KHR_maintenance1
844     alias vkTrimCommandPoolKHR                                                    = vkTrimCommandPool;
845 
846     // VK_KHR_device_group_creation
847     alias vkEnumeratePhysicalDeviceGroupsKHR                                      = vkEnumeratePhysicalDeviceGroups;
848 
849     // VK_KHR_external_memory_capabilities
850     alias vkGetPhysicalDeviceExternalBufferPropertiesKHR                          = vkGetPhysicalDeviceExternalBufferProperties;
851 
852     // VK_KHR_external_semaphore_capabilities
853     alias vkGetPhysicalDeviceExternalSemaphorePropertiesKHR                       = vkGetPhysicalDeviceExternalSemaphoreProperties;
854 
855     // VK_KHR_descriptor_update_template
856     alias vkCreateDescriptorUpdateTemplateKHR                                     = vkCreateDescriptorUpdateTemplate;
857     alias vkDestroyDescriptorUpdateTemplateKHR                                    = vkDestroyDescriptorUpdateTemplate;
858     alias vkUpdateDescriptorSetWithTemplateKHR                                    = vkUpdateDescriptorSetWithTemplate;
859 
860     // VK_KHR_external_fence_capabilities
861     alias vkGetPhysicalDeviceExternalFencePropertiesKHR                           = vkGetPhysicalDeviceExternalFenceProperties;
862 
863     // VK_KHR_get_memory_requirements2
864     alias vkGetImageMemoryRequirements2KHR                                        = vkGetImageMemoryRequirements2;
865     alias vkGetBufferMemoryRequirements2KHR                                       = vkGetBufferMemoryRequirements2;
866     alias vkGetImageSparseMemoryRequirements2KHR                                  = vkGetImageSparseMemoryRequirements2;
867 
868     // VK_KHR_sampler_ycbcr_conversion
869     alias vkCreateSamplerYcbcrConversionKHR                                       = vkCreateSamplerYcbcrConversion;
870     alias vkDestroySamplerYcbcrConversionKHR                                      = vkDestroySamplerYcbcrConversion;
871 
872     // VK_KHR_bind_memory2
873     alias vkBindBufferMemory2KHR                                                  = vkBindBufferMemory2;
874     alias vkBindImageMemory2KHR                                                   = vkBindImageMemory2;
875 
876     // VK_KHR_maintenance3
877     alias vkGetDescriptorSetLayoutSupportKHR                                      = vkGetDescriptorSetLayoutSupport;
878 
879     // VK_AMD_draw_indirect_count
880     alias vkCmdDrawIndirectCountAMD                                               = vkCmdDrawIndirectCountKHR;
881     alias vkCmdDrawIndexedIndirectCountAMD                                        = vkCmdDrawIndexedIndirectCountKHR;
882 }
883 
884 
885 /// sets vkCreateInstance function pointer and acquires basic functions to retrieve information about the implementation
886 /// and create an instance: vkEnumerateInstanceExtensionProperties, vkEnumerateInstanceLayerProperties, vkCreateInstance
887 void loadGlobalLevelFunctions( PFN_vkGetInstanceProcAddr getInstanceProcAddr ) {
888     vkGetInstanceProcAddr = getInstanceProcAddr;
889 
890     // VK_VERSION_1_0
891     vkCreateInstance                       = cast( PFN_vkCreateInstance                       ) vkGetInstanceProcAddr( null, "vkCreateInstance" );
892     vkEnumerateInstanceExtensionProperties = cast( PFN_vkEnumerateInstanceExtensionProperties ) vkGetInstanceProcAddr( null, "vkEnumerateInstanceExtensionProperties" );
893     vkEnumerateInstanceLayerProperties     = cast( PFN_vkEnumerateInstanceLayerProperties     ) vkGetInstanceProcAddr( null, "vkEnumerateInstanceLayerProperties" );
894 
895     // VK_VERSION_1_1
896     vkEnumerateInstanceVersion             = cast( PFN_vkEnumerateInstanceVersion             ) vkGetInstanceProcAddr( null, "vkEnumerateInstanceVersion" );
897 }
898 
899 
900 /// with a valid VkInstance call this function to retrieve additional VkInstance, VkPhysicalDevice, ... related functions
901 void loadInstanceLevelFunctions( VkInstance instance ) {
902     assert( vkGetInstanceProcAddr !is null, "Function pointer vkGetInstanceProcAddr is null!\nCall loadGlobalLevelFunctions -> loadInstanceLevelFunctions" );
903 
904     // VK_VERSION_1_0
905     vkDestroyInstance                                                 = cast( PFN_vkDestroyInstance                                                 ) vkGetInstanceProcAddr( instance, "vkDestroyInstance" );
906     vkEnumeratePhysicalDevices                                        = cast( PFN_vkEnumeratePhysicalDevices                                        ) vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDevices" );
907     vkGetPhysicalDeviceFeatures                                       = cast( PFN_vkGetPhysicalDeviceFeatures                                       ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures" );
908     vkGetPhysicalDeviceFormatProperties                               = cast( PFN_vkGetPhysicalDeviceFormatProperties                               ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties" );
909     vkGetPhysicalDeviceImageFormatProperties                          = cast( PFN_vkGetPhysicalDeviceImageFormatProperties                          ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties" );
910     vkGetPhysicalDeviceProperties                                     = cast( PFN_vkGetPhysicalDeviceProperties                                     ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties" );
911     vkGetPhysicalDeviceQueueFamilyProperties                          = cast( PFN_vkGetPhysicalDeviceQueueFamilyProperties                          ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties" );
912     vkGetPhysicalDeviceMemoryProperties                               = cast( PFN_vkGetPhysicalDeviceMemoryProperties                               ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties" );
913     vkGetDeviceProcAddr                                               = cast( PFN_vkGetDeviceProcAddr                                               ) vkGetInstanceProcAddr( instance, "vkGetDeviceProcAddr" );
914     vkCreateDevice                                                    = cast( PFN_vkCreateDevice                                                    ) vkGetInstanceProcAddr( instance, "vkCreateDevice" );
915     vkEnumerateDeviceExtensionProperties                              = cast( PFN_vkEnumerateDeviceExtensionProperties                              ) vkGetInstanceProcAddr( instance, "vkEnumerateDeviceExtensionProperties" );
916     vkEnumerateDeviceLayerProperties                                  = cast( PFN_vkEnumerateDeviceLayerProperties                                  ) vkGetInstanceProcAddr( instance, "vkEnumerateDeviceLayerProperties" );
917     vkGetPhysicalDeviceSparseImageFormatProperties                    = cast( PFN_vkGetPhysicalDeviceSparseImageFormatProperties                    ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties" );
918 
919     // VK_VERSION_1_1
920     vkEnumeratePhysicalDeviceGroups                                   = cast( PFN_vkEnumeratePhysicalDeviceGroups                                   ) vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceGroups" );
921     vkGetPhysicalDeviceFeatures2                                      = cast( PFN_vkGetPhysicalDeviceFeatures2                                      ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures2" );
922     vkGetPhysicalDeviceProperties2                                    = cast( PFN_vkGetPhysicalDeviceProperties2                                    ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties2" );
923     vkGetPhysicalDeviceFormatProperties2                              = cast( PFN_vkGetPhysicalDeviceFormatProperties2                              ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties2" );
924     vkGetPhysicalDeviceImageFormatProperties2                         = cast( PFN_vkGetPhysicalDeviceImageFormatProperties2                         ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties2" );
925     vkGetPhysicalDeviceQueueFamilyProperties2                         = cast( PFN_vkGetPhysicalDeviceQueueFamilyProperties2                         ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties2" );
926     vkGetPhysicalDeviceMemoryProperties2                              = cast( PFN_vkGetPhysicalDeviceMemoryProperties2                              ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties2" );
927     vkGetPhysicalDeviceSparseImageFormatProperties2                   = cast( PFN_vkGetPhysicalDeviceSparseImageFormatProperties2                   ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties2" );
928     vkGetPhysicalDeviceExternalBufferProperties                       = cast( PFN_vkGetPhysicalDeviceExternalBufferProperties                       ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalBufferProperties" );
929     vkGetPhysicalDeviceExternalFenceProperties                        = cast( PFN_vkGetPhysicalDeviceExternalFenceProperties                        ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalFenceProperties" );
930     vkGetPhysicalDeviceExternalSemaphoreProperties                    = cast( PFN_vkGetPhysicalDeviceExternalSemaphoreProperties                    ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalSemaphoreProperties" );
931 
932     // VK_KHR_surface
933     vkDestroySurfaceKHR                                               = cast( PFN_vkDestroySurfaceKHR                                               ) vkGetInstanceProcAddr( instance, "vkDestroySurfaceKHR" );
934     vkGetPhysicalDeviceSurfaceSupportKHR                              = cast( PFN_vkGetPhysicalDeviceSurfaceSupportKHR                              ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceSupportKHR" );
935     vkGetPhysicalDeviceSurfaceCapabilitiesKHR                         = cast( PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR                         ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" );
936     vkGetPhysicalDeviceSurfaceFormatsKHR                              = cast( PFN_vkGetPhysicalDeviceSurfaceFormatsKHR                              ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormatsKHR" );
937     vkGetPhysicalDeviceSurfacePresentModesKHR                         = cast( PFN_vkGetPhysicalDeviceSurfacePresentModesKHR                         ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfacePresentModesKHR" );
938 
939     // VK_KHR_swapchain
940     vkGetPhysicalDevicePresentRectanglesKHR                           = cast( PFN_vkGetPhysicalDevicePresentRectanglesKHR                           ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDevicePresentRectanglesKHR" );
941 
942     // VK_KHR_display
943     vkGetPhysicalDeviceDisplayPropertiesKHR                           = cast( PFN_vkGetPhysicalDeviceDisplayPropertiesKHR                           ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPropertiesKHR" );
944     vkGetPhysicalDeviceDisplayPlanePropertiesKHR                      = cast( PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR                      ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR" );
945     vkGetDisplayPlaneSupportedDisplaysKHR                             = cast( PFN_vkGetDisplayPlaneSupportedDisplaysKHR                             ) vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneSupportedDisplaysKHR" );
946     vkGetDisplayModePropertiesKHR                                     = cast( PFN_vkGetDisplayModePropertiesKHR                                     ) vkGetInstanceProcAddr( instance, "vkGetDisplayModePropertiesKHR" );
947     vkCreateDisplayModeKHR                                            = cast( PFN_vkCreateDisplayModeKHR                                            ) vkGetInstanceProcAddr( instance, "vkCreateDisplayModeKHR" );
948     vkGetDisplayPlaneCapabilitiesKHR                                  = cast( PFN_vkGetDisplayPlaneCapabilitiesKHR                                  ) vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilitiesKHR" );
949     vkCreateDisplayPlaneSurfaceKHR                                    = cast( PFN_vkCreateDisplayPlaneSurfaceKHR                                    ) vkGetInstanceProcAddr( instance, "vkCreateDisplayPlaneSurfaceKHR" );
950 
951     // VK_KHR_get_surface_capabilities2
952     vkGetPhysicalDeviceSurfaceCapabilities2KHR                        = cast( PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR                        ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR" );
953     vkGetPhysicalDeviceSurfaceFormats2KHR                             = cast( PFN_vkGetPhysicalDeviceSurfaceFormats2KHR                             ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormats2KHR" );
954 
955     // VK_KHR_get_display_properties2
956     vkGetPhysicalDeviceDisplayProperties2KHR                          = cast( PFN_vkGetPhysicalDeviceDisplayProperties2KHR                          ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayProperties2KHR" );
957     vkGetPhysicalDeviceDisplayPlaneProperties2KHR                     = cast( PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR                     ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR" );
958     vkGetDisplayModeProperties2KHR                                    = cast( PFN_vkGetDisplayModeProperties2KHR                                    ) vkGetInstanceProcAddr( instance, "vkGetDisplayModeProperties2KHR" );
959     vkGetDisplayPlaneCapabilities2KHR                                 = cast( PFN_vkGetDisplayPlaneCapabilities2KHR                                 ) vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilities2KHR" );
960 
961     // VK_EXT_debug_report
962     vkCreateDebugReportCallbackEXT                                    = cast( PFN_vkCreateDebugReportCallbackEXT                                    ) vkGetInstanceProcAddr( instance, "vkCreateDebugReportCallbackEXT" );
963     vkDestroyDebugReportCallbackEXT                                   = cast( PFN_vkDestroyDebugReportCallbackEXT                                   ) vkGetInstanceProcAddr( instance, "vkDestroyDebugReportCallbackEXT" );
964     vkDebugReportMessageEXT                                           = cast( PFN_vkDebugReportMessageEXT                                           ) vkGetInstanceProcAddr( instance, "vkDebugReportMessageEXT" );
965 
966     // VK_NV_external_memory_capabilities
967     vkGetPhysicalDeviceExternalImageFormatPropertiesNV                = cast( PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV                ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV" );
968 
969     // VK_NVX_device_generated_commands
970     vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX                 = cast( PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX                 ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX" );
971 
972     // VK_EXT_direct_mode_display
973     vkReleaseDisplayEXT                                               = cast( PFN_vkReleaseDisplayEXT                                               ) vkGetInstanceProcAddr( instance, "vkReleaseDisplayEXT" );
974 
975     // VK_EXT_display_surface_counter
976     vkGetPhysicalDeviceSurfaceCapabilities2EXT                        = cast( PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT                        ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2EXT" );
977 
978     // VK_EXT_debug_utils
979     vkCreateDebugUtilsMessengerEXT                                    = cast( PFN_vkCreateDebugUtilsMessengerEXT                                    ) vkGetInstanceProcAddr( instance, "vkCreateDebugUtilsMessengerEXT" );
980     vkDestroyDebugUtilsMessengerEXT                                   = cast( PFN_vkDestroyDebugUtilsMessengerEXT                                   ) vkGetInstanceProcAddr( instance, "vkDestroyDebugUtilsMessengerEXT" );
981     vkSubmitDebugUtilsMessageEXT                                      = cast( PFN_vkSubmitDebugUtilsMessageEXT                                      ) vkGetInstanceProcAddr( instance, "vkSubmitDebugUtilsMessageEXT" );
982 
983     // VK_EXT_sample_locations
984     vkGetPhysicalDeviceMultisamplePropertiesEXT                       = cast( PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT                       ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMultisamplePropertiesEXT" );
985 
986     // VK_EXT_calibrated_timestamps
987     vkGetPhysicalDeviceCalibrateableTimeDomainsEXT                    = cast( PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT                    ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT" );
988 
989     // VK_NV_cooperative_matrix
990     vkGetPhysicalDeviceCooperativeMatrixPropertiesNV                  = cast( PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV                  ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV" );
991 
992     // VK_NV_coverage_reduction_mode
993     vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = cast( PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV" );
994 
995     // VK_EXT_headless_surface
996     vkCreateHeadlessSurfaceEXT                                        = cast( PFN_vkCreateHeadlessSurfaceEXT                                        ) vkGetInstanceProcAddr( instance, "vkCreateHeadlessSurfaceEXT" );
997 }
998 
999 
1000 /// with a valid VkInstance call this function to retrieve VkDevice, VkQueue and VkCommandBuffer related functions
1001 /// the functions call indirectly through the VkInstance and will be internally dispatched by the implementation
1002 /// use loadDeviceLevelFunctions( VkDevice device ) bellow to avoid this indirection and get the pointers directly form a VkDevice
1003 void loadDeviceLevelFunctions( VkInstance instance ) {
1004     assert( vkGetInstanceProcAddr !is null, "Function pointer vkGetInstanceProcAddr is null!\nCall loadGlobalLevelFunctions -> loadDeviceLevelFunctions( instance )" );
1005 
1006     // VK_VERSION_1_0
1007     vkDestroyDevice                                = cast( PFN_vkDestroyDevice                                ) vkGetInstanceProcAddr( instance, "vkDestroyDevice" );
1008     vkGetDeviceQueue                               = cast( PFN_vkGetDeviceQueue                               ) vkGetInstanceProcAddr( instance, "vkGetDeviceQueue" );
1009     vkQueueSubmit                                  = cast( PFN_vkQueueSubmit                                  ) vkGetInstanceProcAddr( instance, "vkQueueSubmit" );
1010     vkQueueWaitIdle                                = cast( PFN_vkQueueWaitIdle                                ) vkGetInstanceProcAddr( instance, "vkQueueWaitIdle" );
1011     vkDeviceWaitIdle                               = cast( PFN_vkDeviceWaitIdle                               ) vkGetInstanceProcAddr( instance, "vkDeviceWaitIdle" );
1012     vkAllocateMemory                               = cast( PFN_vkAllocateMemory                               ) vkGetInstanceProcAddr( instance, "vkAllocateMemory" );
1013     vkFreeMemory                                   = cast( PFN_vkFreeMemory                                   ) vkGetInstanceProcAddr( instance, "vkFreeMemory" );
1014     vkMapMemory                                    = cast( PFN_vkMapMemory                                    ) vkGetInstanceProcAddr( instance, "vkMapMemory" );
1015     vkUnmapMemory                                  = cast( PFN_vkUnmapMemory                                  ) vkGetInstanceProcAddr( instance, "vkUnmapMemory" );
1016     vkFlushMappedMemoryRanges                      = cast( PFN_vkFlushMappedMemoryRanges                      ) vkGetInstanceProcAddr( instance, "vkFlushMappedMemoryRanges" );
1017     vkInvalidateMappedMemoryRanges                 = cast( PFN_vkInvalidateMappedMemoryRanges                 ) vkGetInstanceProcAddr( instance, "vkInvalidateMappedMemoryRanges" );
1018     vkGetDeviceMemoryCommitment                    = cast( PFN_vkGetDeviceMemoryCommitment                    ) vkGetInstanceProcAddr( instance, "vkGetDeviceMemoryCommitment" );
1019     vkBindBufferMemory                             = cast( PFN_vkBindBufferMemory                             ) vkGetInstanceProcAddr( instance, "vkBindBufferMemory" );
1020     vkBindImageMemory                              = cast( PFN_vkBindImageMemory                              ) vkGetInstanceProcAddr( instance, "vkBindImageMemory" );
1021     vkGetBufferMemoryRequirements                  = cast( PFN_vkGetBufferMemoryRequirements                  ) vkGetInstanceProcAddr( instance, "vkGetBufferMemoryRequirements" );
1022     vkGetImageMemoryRequirements                   = cast( PFN_vkGetImageMemoryRequirements                   ) vkGetInstanceProcAddr( instance, "vkGetImageMemoryRequirements" );
1023     vkGetImageSparseMemoryRequirements             = cast( PFN_vkGetImageSparseMemoryRequirements             ) vkGetInstanceProcAddr( instance, "vkGetImageSparseMemoryRequirements" );
1024     vkQueueBindSparse                              = cast( PFN_vkQueueBindSparse                              ) vkGetInstanceProcAddr( instance, "vkQueueBindSparse" );
1025     vkCreateFence                                  = cast( PFN_vkCreateFence                                  ) vkGetInstanceProcAddr( instance, "vkCreateFence" );
1026     vkDestroyFence                                 = cast( PFN_vkDestroyFence                                 ) vkGetInstanceProcAddr( instance, "vkDestroyFence" );
1027     vkResetFences                                  = cast( PFN_vkResetFences                                  ) vkGetInstanceProcAddr( instance, "vkResetFences" );
1028     vkGetFenceStatus                               = cast( PFN_vkGetFenceStatus                               ) vkGetInstanceProcAddr( instance, "vkGetFenceStatus" );
1029     vkWaitForFences                                = cast( PFN_vkWaitForFences                                ) vkGetInstanceProcAddr( instance, "vkWaitForFences" );
1030     vkCreateSemaphore                              = cast( PFN_vkCreateSemaphore                              ) vkGetInstanceProcAddr( instance, "vkCreateSemaphore" );
1031     vkDestroySemaphore                             = cast( PFN_vkDestroySemaphore                             ) vkGetInstanceProcAddr( instance, "vkDestroySemaphore" );
1032     vkCreateEvent                                  = cast( PFN_vkCreateEvent                                  ) vkGetInstanceProcAddr( instance, "vkCreateEvent" );
1033     vkDestroyEvent                                 = cast( PFN_vkDestroyEvent                                 ) vkGetInstanceProcAddr( instance, "vkDestroyEvent" );
1034     vkGetEventStatus                               = cast( PFN_vkGetEventStatus                               ) vkGetInstanceProcAddr( instance, "vkGetEventStatus" );
1035     vkSetEvent                                     = cast( PFN_vkSetEvent                                     ) vkGetInstanceProcAddr( instance, "vkSetEvent" );
1036     vkResetEvent                                   = cast( PFN_vkResetEvent                                   ) vkGetInstanceProcAddr( instance, "vkResetEvent" );
1037     vkCreateQueryPool                              = cast( PFN_vkCreateQueryPool                              ) vkGetInstanceProcAddr( instance, "vkCreateQueryPool" );
1038     vkDestroyQueryPool                             = cast( PFN_vkDestroyQueryPool                             ) vkGetInstanceProcAddr( instance, "vkDestroyQueryPool" );
1039     vkGetQueryPoolResults                          = cast( PFN_vkGetQueryPoolResults                          ) vkGetInstanceProcAddr( instance, "vkGetQueryPoolResults" );
1040     vkCreateBuffer                                 = cast( PFN_vkCreateBuffer                                 ) vkGetInstanceProcAddr( instance, "vkCreateBuffer" );
1041     vkDestroyBuffer                                = cast( PFN_vkDestroyBuffer                                ) vkGetInstanceProcAddr( instance, "vkDestroyBuffer" );
1042     vkCreateBufferView                             = cast( PFN_vkCreateBufferView                             ) vkGetInstanceProcAddr( instance, "vkCreateBufferView" );
1043     vkDestroyBufferView                            = cast( PFN_vkDestroyBufferView                            ) vkGetInstanceProcAddr( instance, "vkDestroyBufferView" );
1044     vkCreateImage                                  = cast( PFN_vkCreateImage                                  ) vkGetInstanceProcAddr( instance, "vkCreateImage" );
1045     vkDestroyImage                                 = cast( PFN_vkDestroyImage                                 ) vkGetInstanceProcAddr( instance, "vkDestroyImage" );
1046     vkGetImageSubresourceLayout                    = cast( PFN_vkGetImageSubresourceLayout                    ) vkGetInstanceProcAddr( instance, "vkGetImageSubresourceLayout" );
1047     vkCreateImageView                              = cast( PFN_vkCreateImageView                              ) vkGetInstanceProcAddr( instance, "vkCreateImageView" );
1048     vkDestroyImageView                             = cast( PFN_vkDestroyImageView                             ) vkGetInstanceProcAddr( instance, "vkDestroyImageView" );
1049     vkCreateShaderModule                           = cast( PFN_vkCreateShaderModule                           ) vkGetInstanceProcAddr( instance, "vkCreateShaderModule" );
1050     vkDestroyShaderModule                          = cast( PFN_vkDestroyShaderModule                          ) vkGetInstanceProcAddr( instance, "vkDestroyShaderModule" );
1051     vkCreatePipelineCache                          = cast( PFN_vkCreatePipelineCache                          ) vkGetInstanceProcAddr( instance, "vkCreatePipelineCache" );
1052     vkDestroyPipelineCache                         = cast( PFN_vkDestroyPipelineCache                         ) vkGetInstanceProcAddr( instance, "vkDestroyPipelineCache" );
1053     vkGetPipelineCacheData                         = cast( PFN_vkGetPipelineCacheData                         ) vkGetInstanceProcAddr( instance, "vkGetPipelineCacheData" );
1054     vkMergePipelineCaches                          = cast( PFN_vkMergePipelineCaches                          ) vkGetInstanceProcAddr( instance, "vkMergePipelineCaches" );
1055     vkCreateGraphicsPipelines                      = cast( PFN_vkCreateGraphicsPipelines                      ) vkGetInstanceProcAddr( instance, "vkCreateGraphicsPipelines" );
1056     vkCreateComputePipelines                       = cast( PFN_vkCreateComputePipelines                       ) vkGetInstanceProcAddr( instance, "vkCreateComputePipelines" );
1057     vkDestroyPipeline                              = cast( PFN_vkDestroyPipeline                              ) vkGetInstanceProcAddr( instance, "vkDestroyPipeline" );
1058     vkCreatePipelineLayout                         = cast( PFN_vkCreatePipelineLayout                         ) vkGetInstanceProcAddr( instance, "vkCreatePipelineLayout" );
1059     vkDestroyPipelineLayout                        = cast( PFN_vkDestroyPipelineLayout                        ) vkGetInstanceProcAddr( instance, "vkDestroyPipelineLayout" );
1060     vkCreateSampler                                = cast( PFN_vkCreateSampler                                ) vkGetInstanceProcAddr( instance, "vkCreateSampler" );
1061     vkDestroySampler                               = cast( PFN_vkDestroySampler                               ) vkGetInstanceProcAddr( instance, "vkDestroySampler" );
1062     vkCreateDescriptorSetLayout                    = cast( PFN_vkCreateDescriptorSetLayout                    ) vkGetInstanceProcAddr( instance, "vkCreateDescriptorSetLayout" );
1063     vkDestroyDescriptorSetLayout                   = cast( PFN_vkDestroyDescriptorSetLayout                   ) vkGetInstanceProcAddr( instance, "vkDestroyDescriptorSetLayout" );
1064     vkCreateDescriptorPool                         = cast( PFN_vkCreateDescriptorPool                         ) vkGetInstanceProcAddr( instance, "vkCreateDescriptorPool" );
1065     vkDestroyDescriptorPool                        = cast( PFN_vkDestroyDescriptorPool                        ) vkGetInstanceProcAddr( instance, "vkDestroyDescriptorPool" );
1066     vkResetDescriptorPool                          = cast( PFN_vkResetDescriptorPool                          ) vkGetInstanceProcAddr( instance, "vkResetDescriptorPool" );
1067     vkAllocateDescriptorSets                       = cast( PFN_vkAllocateDescriptorSets                       ) vkGetInstanceProcAddr( instance, "vkAllocateDescriptorSets" );
1068     vkFreeDescriptorSets                           = cast( PFN_vkFreeDescriptorSets                           ) vkGetInstanceProcAddr( instance, "vkFreeDescriptorSets" );
1069     vkUpdateDescriptorSets                         = cast( PFN_vkUpdateDescriptorSets                         ) vkGetInstanceProcAddr( instance, "vkUpdateDescriptorSets" );
1070     vkCreateFramebuffer                            = cast( PFN_vkCreateFramebuffer                            ) vkGetInstanceProcAddr( instance, "vkCreateFramebuffer" );
1071     vkDestroyFramebuffer                           = cast( PFN_vkDestroyFramebuffer                           ) vkGetInstanceProcAddr( instance, "vkDestroyFramebuffer" );
1072     vkCreateRenderPass                             = cast( PFN_vkCreateRenderPass                             ) vkGetInstanceProcAddr( instance, "vkCreateRenderPass" );
1073     vkDestroyRenderPass                            = cast( PFN_vkDestroyRenderPass                            ) vkGetInstanceProcAddr( instance, "vkDestroyRenderPass" );
1074     vkGetRenderAreaGranularity                     = cast( PFN_vkGetRenderAreaGranularity                     ) vkGetInstanceProcAddr( instance, "vkGetRenderAreaGranularity" );
1075     vkCreateCommandPool                            = cast( PFN_vkCreateCommandPool                            ) vkGetInstanceProcAddr( instance, "vkCreateCommandPool" );
1076     vkDestroyCommandPool                           = cast( PFN_vkDestroyCommandPool                           ) vkGetInstanceProcAddr( instance, "vkDestroyCommandPool" );
1077     vkResetCommandPool                             = cast( PFN_vkResetCommandPool                             ) vkGetInstanceProcAddr( instance, "vkResetCommandPool" );
1078     vkAllocateCommandBuffers                       = cast( PFN_vkAllocateCommandBuffers                       ) vkGetInstanceProcAddr( instance, "vkAllocateCommandBuffers" );
1079     vkFreeCommandBuffers                           = cast( PFN_vkFreeCommandBuffers                           ) vkGetInstanceProcAddr( instance, "vkFreeCommandBuffers" );
1080     vkBeginCommandBuffer                           = cast( PFN_vkBeginCommandBuffer                           ) vkGetInstanceProcAddr( instance, "vkBeginCommandBuffer" );
1081     vkEndCommandBuffer                             = cast( PFN_vkEndCommandBuffer                             ) vkGetInstanceProcAddr( instance, "vkEndCommandBuffer" );
1082     vkResetCommandBuffer                           = cast( PFN_vkResetCommandBuffer                           ) vkGetInstanceProcAddr( instance, "vkResetCommandBuffer" );
1083     vkCmdBindPipeline                              = cast( PFN_vkCmdBindPipeline                              ) vkGetInstanceProcAddr( instance, "vkCmdBindPipeline" );
1084     vkCmdSetViewport                               = cast( PFN_vkCmdSetViewport                               ) vkGetInstanceProcAddr( instance, "vkCmdSetViewport" );
1085     vkCmdSetScissor                                = cast( PFN_vkCmdSetScissor                                ) vkGetInstanceProcAddr( instance, "vkCmdSetScissor" );
1086     vkCmdSetLineWidth                              = cast( PFN_vkCmdSetLineWidth                              ) vkGetInstanceProcAddr( instance, "vkCmdSetLineWidth" );
1087     vkCmdSetDepthBias                              = cast( PFN_vkCmdSetDepthBias                              ) vkGetInstanceProcAddr( instance, "vkCmdSetDepthBias" );
1088     vkCmdSetBlendConstants                         = cast( PFN_vkCmdSetBlendConstants                         ) vkGetInstanceProcAddr( instance, "vkCmdSetBlendConstants" );
1089     vkCmdSetDepthBounds                            = cast( PFN_vkCmdSetDepthBounds                            ) vkGetInstanceProcAddr( instance, "vkCmdSetDepthBounds" );
1090     vkCmdSetStencilCompareMask                     = cast( PFN_vkCmdSetStencilCompareMask                     ) vkGetInstanceProcAddr( instance, "vkCmdSetStencilCompareMask" );
1091     vkCmdSetStencilWriteMask                       = cast( PFN_vkCmdSetStencilWriteMask                       ) vkGetInstanceProcAddr( instance, "vkCmdSetStencilWriteMask" );
1092     vkCmdSetStencilReference                       = cast( PFN_vkCmdSetStencilReference                       ) vkGetInstanceProcAddr( instance, "vkCmdSetStencilReference" );
1093     vkCmdBindDescriptorSets                        = cast( PFN_vkCmdBindDescriptorSets                        ) vkGetInstanceProcAddr( instance, "vkCmdBindDescriptorSets" );
1094     vkCmdBindIndexBuffer                           = cast( PFN_vkCmdBindIndexBuffer                           ) vkGetInstanceProcAddr( instance, "vkCmdBindIndexBuffer" );
1095     vkCmdBindVertexBuffers                         = cast( PFN_vkCmdBindVertexBuffers                         ) vkGetInstanceProcAddr( instance, "vkCmdBindVertexBuffers" );
1096     vkCmdDraw                                      = cast( PFN_vkCmdDraw                                      ) vkGetInstanceProcAddr( instance, "vkCmdDraw" );
1097     vkCmdDrawIndexed                               = cast( PFN_vkCmdDrawIndexed                               ) vkGetInstanceProcAddr( instance, "vkCmdDrawIndexed" );
1098     vkCmdDrawIndirect                              = cast( PFN_vkCmdDrawIndirect                              ) vkGetInstanceProcAddr( instance, "vkCmdDrawIndirect" );
1099     vkCmdDrawIndexedIndirect                       = cast( PFN_vkCmdDrawIndexedIndirect                       ) vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirect" );
1100     vkCmdDispatch                                  = cast( PFN_vkCmdDispatch                                  ) vkGetInstanceProcAddr( instance, "vkCmdDispatch" );
1101     vkCmdDispatchIndirect                          = cast( PFN_vkCmdDispatchIndirect                          ) vkGetInstanceProcAddr( instance, "vkCmdDispatchIndirect" );
1102     vkCmdCopyBuffer                                = cast( PFN_vkCmdCopyBuffer                                ) vkGetInstanceProcAddr( instance, "vkCmdCopyBuffer" );
1103     vkCmdCopyImage                                 = cast( PFN_vkCmdCopyImage                                 ) vkGetInstanceProcAddr( instance, "vkCmdCopyImage" );
1104     vkCmdBlitImage                                 = cast( PFN_vkCmdBlitImage                                 ) vkGetInstanceProcAddr( instance, "vkCmdBlitImage" );
1105     vkCmdCopyBufferToImage                         = cast( PFN_vkCmdCopyBufferToImage                         ) vkGetInstanceProcAddr( instance, "vkCmdCopyBufferToImage" );
1106     vkCmdCopyImageToBuffer                         = cast( PFN_vkCmdCopyImageToBuffer                         ) vkGetInstanceProcAddr( instance, "vkCmdCopyImageToBuffer" );
1107     vkCmdUpdateBuffer                              = cast( PFN_vkCmdUpdateBuffer                              ) vkGetInstanceProcAddr( instance, "vkCmdUpdateBuffer" );
1108     vkCmdFillBuffer                                = cast( PFN_vkCmdFillBuffer                                ) vkGetInstanceProcAddr( instance, "vkCmdFillBuffer" );
1109     vkCmdClearColorImage                           = cast( PFN_vkCmdClearColorImage                           ) vkGetInstanceProcAddr( instance, "vkCmdClearColorImage" );
1110     vkCmdClearDepthStencilImage                    = cast( PFN_vkCmdClearDepthStencilImage                    ) vkGetInstanceProcAddr( instance, "vkCmdClearDepthStencilImage" );
1111     vkCmdClearAttachments                          = cast( PFN_vkCmdClearAttachments                          ) vkGetInstanceProcAddr( instance, "vkCmdClearAttachments" );
1112     vkCmdResolveImage                              = cast( PFN_vkCmdResolveImage                              ) vkGetInstanceProcAddr( instance, "vkCmdResolveImage" );
1113     vkCmdSetEvent                                  = cast( PFN_vkCmdSetEvent                                  ) vkGetInstanceProcAddr( instance, "vkCmdSetEvent" );
1114     vkCmdResetEvent                                = cast( PFN_vkCmdResetEvent                                ) vkGetInstanceProcAddr( instance, "vkCmdResetEvent" );
1115     vkCmdWaitEvents                                = cast( PFN_vkCmdWaitEvents                                ) vkGetInstanceProcAddr( instance, "vkCmdWaitEvents" );
1116     vkCmdPipelineBarrier                           = cast( PFN_vkCmdPipelineBarrier                           ) vkGetInstanceProcAddr( instance, "vkCmdPipelineBarrier" );
1117     vkCmdBeginQuery                                = cast( PFN_vkCmdBeginQuery                                ) vkGetInstanceProcAddr( instance, "vkCmdBeginQuery" );
1118     vkCmdEndQuery                                  = cast( PFN_vkCmdEndQuery                                  ) vkGetInstanceProcAddr( instance, "vkCmdEndQuery" );
1119     vkCmdResetQueryPool                            = cast( PFN_vkCmdResetQueryPool                            ) vkGetInstanceProcAddr( instance, "vkCmdResetQueryPool" );
1120     vkCmdWriteTimestamp                            = cast( PFN_vkCmdWriteTimestamp                            ) vkGetInstanceProcAddr( instance, "vkCmdWriteTimestamp" );
1121     vkCmdCopyQueryPoolResults                      = cast( PFN_vkCmdCopyQueryPoolResults                      ) vkGetInstanceProcAddr( instance, "vkCmdCopyQueryPoolResults" );
1122     vkCmdPushConstants                             = cast( PFN_vkCmdPushConstants                             ) vkGetInstanceProcAddr( instance, "vkCmdPushConstants" );
1123     vkCmdBeginRenderPass                           = cast( PFN_vkCmdBeginRenderPass                           ) vkGetInstanceProcAddr( instance, "vkCmdBeginRenderPass" );
1124     vkCmdNextSubpass                               = cast( PFN_vkCmdNextSubpass                               ) vkGetInstanceProcAddr( instance, "vkCmdNextSubpass" );
1125     vkCmdEndRenderPass                             = cast( PFN_vkCmdEndRenderPass                             ) vkGetInstanceProcAddr( instance, "vkCmdEndRenderPass" );
1126     vkCmdExecuteCommands                           = cast( PFN_vkCmdExecuteCommands                           ) vkGetInstanceProcAddr( instance, "vkCmdExecuteCommands" );
1127 
1128     // VK_VERSION_1_1
1129     vkBindBufferMemory2                            = cast( PFN_vkBindBufferMemory2                            ) vkGetInstanceProcAddr( instance, "vkBindBufferMemory2" );
1130     vkBindImageMemory2                             = cast( PFN_vkBindImageMemory2                             ) vkGetInstanceProcAddr( instance, "vkBindImageMemory2" );
1131     vkGetDeviceGroupPeerMemoryFeatures             = cast( PFN_vkGetDeviceGroupPeerMemoryFeatures             ) vkGetInstanceProcAddr( instance, "vkGetDeviceGroupPeerMemoryFeatures" );
1132     vkCmdSetDeviceMask                             = cast( PFN_vkCmdSetDeviceMask                             ) vkGetInstanceProcAddr( instance, "vkCmdSetDeviceMask" );
1133     vkCmdDispatchBase                              = cast( PFN_vkCmdDispatchBase                              ) vkGetInstanceProcAddr( instance, "vkCmdDispatchBase" );
1134     vkGetImageMemoryRequirements2                  = cast( PFN_vkGetImageMemoryRequirements2                  ) vkGetInstanceProcAddr( instance, "vkGetImageMemoryRequirements2" );
1135     vkGetBufferMemoryRequirements2                 = cast( PFN_vkGetBufferMemoryRequirements2                 ) vkGetInstanceProcAddr( instance, "vkGetBufferMemoryRequirements2" );
1136     vkGetImageSparseMemoryRequirements2            = cast( PFN_vkGetImageSparseMemoryRequirements2            ) vkGetInstanceProcAddr( instance, "vkGetImageSparseMemoryRequirements2" );
1137     vkTrimCommandPool                              = cast( PFN_vkTrimCommandPool                              ) vkGetInstanceProcAddr( instance, "vkTrimCommandPool" );
1138     vkGetDeviceQueue2                              = cast( PFN_vkGetDeviceQueue2                              ) vkGetInstanceProcAddr( instance, "vkGetDeviceQueue2" );
1139     vkCreateSamplerYcbcrConversion                 = cast( PFN_vkCreateSamplerYcbcrConversion                 ) vkGetInstanceProcAddr( instance, "vkCreateSamplerYcbcrConversion" );
1140     vkDestroySamplerYcbcrConversion                = cast( PFN_vkDestroySamplerYcbcrConversion                ) vkGetInstanceProcAddr( instance, "vkDestroySamplerYcbcrConversion" );
1141     vkCreateDescriptorUpdateTemplate               = cast( PFN_vkCreateDescriptorUpdateTemplate               ) vkGetInstanceProcAddr( instance, "vkCreateDescriptorUpdateTemplate" );
1142     vkDestroyDescriptorUpdateTemplate              = cast( PFN_vkDestroyDescriptorUpdateTemplate              ) vkGetInstanceProcAddr( instance, "vkDestroyDescriptorUpdateTemplate" );
1143     vkUpdateDescriptorSetWithTemplate              = cast( PFN_vkUpdateDescriptorSetWithTemplate              ) vkGetInstanceProcAddr( instance, "vkUpdateDescriptorSetWithTemplate" );
1144     vkGetDescriptorSetLayoutSupport                = cast( PFN_vkGetDescriptorSetLayoutSupport                ) vkGetInstanceProcAddr( instance, "vkGetDescriptorSetLayoutSupport" );
1145 
1146     // VK_KHR_swapchain
1147     vkCreateSwapchainKHR                           = cast( PFN_vkCreateSwapchainKHR                           ) vkGetInstanceProcAddr( instance, "vkCreateSwapchainKHR" );
1148     vkDestroySwapchainKHR                          = cast( PFN_vkDestroySwapchainKHR                          ) vkGetInstanceProcAddr( instance, "vkDestroySwapchainKHR" );
1149     vkGetSwapchainImagesKHR                        = cast( PFN_vkGetSwapchainImagesKHR                        ) vkGetInstanceProcAddr( instance, "vkGetSwapchainImagesKHR" );
1150     vkAcquireNextImageKHR                          = cast( PFN_vkAcquireNextImageKHR                          ) vkGetInstanceProcAddr( instance, "vkAcquireNextImageKHR" );
1151     vkQueuePresentKHR                              = cast( PFN_vkQueuePresentKHR                              ) vkGetInstanceProcAddr( instance, "vkQueuePresentKHR" );
1152     vkGetDeviceGroupPresentCapabilitiesKHR         = cast( PFN_vkGetDeviceGroupPresentCapabilitiesKHR         ) vkGetInstanceProcAddr( instance, "vkGetDeviceGroupPresentCapabilitiesKHR" );
1153     vkGetDeviceGroupSurfacePresentModesKHR         = cast( PFN_vkGetDeviceGroupSurfacePresentModesKHR         ) vkGetInstanceProcAddr( instance, "vkGetDeviceGroupSurfacePresentModesKHR" );
1154     vkAcquireNextImage2KHR                         = cast( PFN_vkAcquireNextImage2KHR                         ) vkGetInstanceProcAddr( instance, "vkAcquireNextImage2KHR" );
1155 
1156     // VK_KHR_display_swapchain
1157     vkCreateSharedSwapchainsKHR                    = cast( PFN_vkCreateSharedSwapchainsKHR                    ) vkGetInstanceProcAddr( instance, "vkCreateSharedSwapchainsKHR" );
1158 
1159     // VK_KHR_external_memory_fd
1160     vkGetMemoryFdKHR                               = cast( PFN_vkGetMemoryFdKHR                               ) vkGetInstanceProcAddr( instance, "vkGetMemoryFdKHR" );
1161     vkGetMemoryFdPropertiesKHR                     = cast( PFN_vkGetMemoryFdPropertiesKHR                     ) vkGetInstanceProcAddr( instance, "vkGetMemoryFdPropertiesKHR" );
1162 
1163     // VK_KHR_external_semaphore_fd
1164     vkImportSemaphoreFdKHR                         = cast( PFN_vkImportSemaphoreFdKHR                         ) vkGetInstanceProcAddr( instance, "vkImportSemaphoreFdKHR" );
1165     vkGetSemaphoreFdKHR                            = cast( PFN_vkGetSemaphoreFdKHR                            ) vkGetInstanceProcAddr( instance, "vkGetSemaphoreFdKHR" );
1166 
1167     // VK_KHR_push_descriptor
1168     vkCmdPushDescriptorSetKHR                      = cast( PFN_vkCmdPushDescriptorSetKHR                      ) vkGetInstanceProcAddr( instance, "vkCmdPushDescriptorSetKHR" );
1169     vkCmdPushDescriptorSetWithTemplateKHR          = cast( PFN_vkCmdPushDescriptorSetWithTemplateKHR          ) vkGetInstanceProcAddr( instance, "vkCmdPushDescriptorSetWithTemplateKHR" );
1170 
1171     // VK_KHR_create_renderpass2
1172     vkCreateRenderPass2KHR                         = cast( PFN_vkCreateRenderPass2KHR                         ) vkGetInstanceProcAddr( instance, "vkCreateRenderPass2KHR" );
1173     vkCmdBeginRenderPass2KHR                       = cast( PFN_vkCmdBeginRenderPass2KHR                       ) vkGetInstanceProcAddr( instance, "vkCmdBeginRenderPass2KHR" );
1174     vkCmdNextSubpass2KHR                           = cast( PFN_vkCmdNextSubpass2KHR                           ) vkGetInstanceProcAddr( instance, "vkCmdNextSubpass2KHR" );
1175     vkCmdEndRenderPass2KHR                         = cast( PFN_vkCmdEndRenderPass2KHR                         ) vkGetInstanceProcAddr( instance, "vkCmdEndRenderPass2KHR" );
1176 
1177     // VK_KHR_shared_presentable_image
1178     vkGetSwapchainStatusKHR                        = cast( PFN_vkGetSwapchainStatusKHR                        ) vkGetInstanceProcAddr( instance, "vkGetSwapchainStatusKHR" );
1179 
1180     // VK_KHR_external_fence_fd
1181     vkImportFenceFdKHR                             = cast( PFN_vkImportFenceFdKHR                             ) vkGetInstanceProcAddr( instance, "vkImportFenceFdKHR" );
1182     vkGetFenceFdKHR                                = cast( PFN_vkGetFenceFdKHR                                ) vkGetInstanceProcAddr( instance, "vkGetFenceFdKHR" );
1183 
1184     // VK_KHR_draw_indirect_count
1185     vkCmdDrawIndirectCountKHR                      = cast( PFN_vkCmdDrawIndirectCountKHR                      ) vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectCountKHR" );
1186     vkCmdDrawIndexedIndirectCountKHR               = cast( PFN_vkCmdDrawIndexedIndirectCountKHR               ) vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirectCountKHR" );
1187 
1188     // VK_EXT_debug_marker
1189     vkDebugMarkerSetObjectTagEXT                   = cast( PFN_vkDebugMarkerSetObjectTagEXT                   ) vkGetInstanceProcAddr( instance, "vkDebugMarkerSetObjectTagEXT" );
1190     vkDebugMarkerSetObjectNameEXT                  = cast( PFN_vkDebugMarkerSetObjectNameEXT                  ) vkGetInstanceProcAddr( instance, "vkDebugMarkerSetObjectNameEXT" );
1191     vkCmdDebugMarkerBeginEXT                       = cast( PFN_vkCmdDebugMarkerBeginEXT                       ) vkGetInstanceProcAddr( instance, "vkCmdDebugMarkerBeginEXT" );
1192     vkCmdDebugMarkerEndEXT                         = cast( PFN_vkCmdDebugMarkerEndEXT                         ) vkGetInstanceProcAddr( instance, "vkCmdDebugMarkerEndEXT" );
1193     vkCmdDebugMarkerInsertEXT                      = cast( PFN_vkCmdDebugMarkerInsertEXT                      ) vkGetInstanceProcAddr( instance, "vkCmdDebugMarkerInsertEXT" );
1194 
1195     // VK_EXT_transform_feedback
1196     vkCmdBindTransformFeedbackBuffersEXT           = cast( PFN_vkCmdBindTransformFeedbackBuffersEXT           ) vkGetInstanceProcAddr( instance, "vkCmdBindTransformFeedbackBuffersEXT" );
1197     vkCmdBeginTransformFeedbackEXT                 = cast( PFN_vkCmdBeginTransformFeedbackEXT                 ) vkGetInstanceProcAddr( instance, "vkCmdBeginTransformFeedbackEXT" );
1198     vkCmdEndTransformFeedbackEXT                   = cast( PFN_vkCmdEndTransformFeedbackEXT                   ) vkGetInstanceProcAddr( instance, "vkCmdEndTransformFeedbackEXT" );
1199     vkCmdBeginQueryIndexedEXT                      = cast( PFN_vkCmdBeginQueryIndexedEXT                      ) vkGetInstanceProcAddr( instance, "vkCmdBeginQueryIndexedEXT" );
1200     vkCmdEndQueryIndexedEXT                        = cast( PFN_vkCmdEndQueryIndexedEXT                        ) vkGetInstanceProcAddr( instance, "vkCmdEndQueryIndexedEXT" );
1201     vkCmdDrawIndirectByteCountEXT                  = cast( PFN_vkCmdDrawIndirectByteCountEXT                  ) vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectByteCountEXT" );
1202 
1203     // VK_NVX_image_view_handle
1204     vkGetImageViewHandleNVX                        = cast( PFN_vkGetImageViewHandleNVX                        ) vkGetInstanceProcAddr( instance, "vkGetImageViewHandleNVX" );
1205 
1206     // VK_AMD_shader_info
1207     vkGetShaderInfoAMD                             = cast( PFN_vkGetShaderInfoAMD                             ) vkGetInstanceProcAddr( instance, "vkGetShaderInfoAMD" );
1208 
1209     // VK_EXT_conditional_rendering
1210     vkCmdBeginConditionalRenderingEXT              = cast( PFN_vkCmdBeginConditionalRenderingEXT              ) vkGetInstanceProcAddr( instance, "vkCmdBeginConditionalRenderingEXT" );
1211     vkCmdEndConditionalRenderingEXT                = cast( PFN_vkCmdEndConditionalRenderingEXT                ) vkGetInstanceProcAddr( instance, "vkCmdEndConditionalRenderingEXT" );
1212 
1213     // VK_NVX_device_generated_commands
1214     vkCmdProcessCommandsNVX                        = cast( PFN_vkCmdProcessCommandsNVX                        ) vkGetInstanceProcAddr( instance, "vkCmdProcessCommandsNVX" );
1215     vkCmdReserveSpaceForCommandsNVX                = cast( PFN_vkCmdReserveSpaceForCommandsNVX                ) vkGetInstanceProcAddr( instance, "vkCmdReserveSpaceForCommandsNVX" );
1216     vkCreateIndirectCommandsLayoutNVX              = cast( PFN_vkCreateIndirectCommandsLayoutNVX              ) vkGetInstanceProcAddr( instance, "vkCreateIndirectCommandsLayoutNVX" );
1217     vkDestroyIndirectCommandsLayoutNVX             = cast( PFN_vkDestroyIndirectCommandsLayoutNVX             ) vkGetInstanceProcAddr( instance, "vkDestroyIndirectCommandsLayoutNVX" );
1218     vkCreateObjectTableNVX                         = cast( PFN_vkCreateObjectTableNVX                         ) vkGetInstanceProcAddr( instance, "vkCreateObjectTableNVX" );
1219     vkDestroyObjectTableNVX                        = cast( PFN_vkDestroyObjectTableNVX                        ) vkGetInstanceProcAddr( instance, "vkDestroyObjectTableNVX" );
1220     vkRegisterObjectsNVX                           = cast( PFN_vkRegisterObjectsNVX                           ) vkGetInstanceProcAddr( instance, "vkRegisterObjectsNVX" );
1221     vkUnregisterObjectsNVX                         = cast( PFN_vkUnregisterObjectsNVX                         ) vkGetInstanceProcAddr( instance, "vkUnregisterObjectsNVX" );
1222 
1223     // VK_NV_clip_space_w_scaling
1224     vkCmdSetViewportWScalingNV                     = cast( PFN_vkCmdSetViewportWScalingNV                     ) vkGetInstanceProcAddr( instance, "vkCmdSetViewportWScalingNV" );
1225 
1226     // VK_EXT_display_control
1227     vkDisplayPowerControlEXT                       = cast( PFN_vkDisplayPowerControlEXT                       ) vkGetInstanceProcAddr( instance, "vkDisplayPowerControlEXT" );
1228     vkRegisterDeviceEventEXT                       = cast( PFN_vkRegisterDeviceEventEXT                       ) vkGetInstanceProcAddr( instance, "vkRegisterDeviceEventEXT" );
1229     vkRegisterDisplayEventEXT                      = cast( PFN_vkRegisterDisplayEventEXT                      ) vkGetInstanceProcAddr( instance, "vkRegisterDisplayEventEXT" );
1230     vkGetSwapchainCounterEXT                       = cast( PFN_vkGetSwapchainCounterEXT                       ) vkGetInstanceProcAddr( instance, "vkGetSwapchainCounterEXT" );
1231 
1232     // VK_GOOGLE_display_timing
1233     vkGetRefreshCycleDurationGOOGLE                = cast( PFN_vkGetRefreshCycleDurationGOOGLE                ) vkGetInstanceProcAddr( instance, "vkGetRefreshCycleDurationGOOGLE" );
1234     vkGetPastPresentationTimingGOOGLE              = cast( PFN_vkGetPastPresentationTimingGOOGLE              ) vkGetInstanceProcAddr( instance, "vkGetPastPresentationTimingGOOGLE" );
1235 
1236     // VK_EXT_discard_rectangles
1237     vkCmdSetDiscardRectangleEXT                    = cast( PFN_vkCmdSetDiscardRectangleEXT                    ) vkGetInstanceProcAddr( instance, "vkCmdSetDiscardRectangleEXT" );
1238 
1239     // VK_EXT_hdr_metadata
1240     vkSetHdrMetadataEXT                            = cast( PFN_vkSetHdrMetadataEXT                            ) vkGetInstanceProcAddr( instance, "vkSetHdrMetadataEXT" );
1241 
1242     // VK_EXT_debug_utils
1243     vkSetDebugUtilsObjectNameEXT                   = cast( PFN_vkSetDebugUtilsObjectNameEXT                   ) vkGetInstanceProcAddr( instance, "vkSetDebugUtilsObjectNameEXT" );
1244     vkSetDebugUtilsObjectTagEXT                    = cast( PFN_vkSetDebugUtilsObjectTagEXT                    ) vkGetInstanceProcAddr( instance, "vkSetDebugUtilsObjectTagEXT" );
1245     vkQueueBeginDebugUtilsLabelEXT                 = cast( PFN_vkQueueBeginDebugUtilsLabelEXT                 ) vkGetInstanceProcAddr( instance, "vkQueueBeginDebugUtilsLabelEXT" );
1246     vkQueueEndDebugUtilsLabelEXT                   = cast( PFN_vkQueueEndDebugUtilsLabelEXT                   ) vkGetInstanceProcAddr( instance, "vkQueueEndDebugUtilsLabelEXT" );
1247     vkQueueInsertDebugUtilsLabelEXT                = cast( PFN_vkQueueInsertDebugUtilsLabelEXT                ) vkGetInstanceProcAddr( instance, "vkQueueInsertDebugUtilsLabelEXT" );
1248     vkCmdBeginDebugUtilsLabelEXT                   = cast( PFN_vkCmdBeginDebugUtilsLabelEXT                   ) vkGetInstanceProcAddr( instance, "vkCmdBeginDebugUtilsLabelEXT" );
1249     vkCmdEndDebugUtilsLabelEXT                     = cast( PFN_vkCmdEndDebugUtilsLabelEXT                     ) vkGetInstanceProcAddr( instance, "vkCmdEndDebugUtilsLabelEXT" );
1250     vkCmdInsertDebugUtilsLabelEXT                  = cast( PFN_vkCmdInsertDebugUtilsLabelEXT                  ) vkGetInstanceProcAddr( instance, "vkCmdInsertDebugUtilsLabelEXT" );
1251 
1252     // VK_EXT_sample_locations
1253     vkCmdSetSampleLocationsEXT                     = cast( PFN_vkCmdSetSampleLocationsEXT                     ) vkGetInstanceProcAddr( instance, "vkCmdSetSampleLocationsEXT" );
1254 
1255     // VK_EXT_image_drm_format_modifier
1256     vkGetImageDrmFormatModifierPropertiesEXT       = cast( PFN_vkGetImageDrmFormatModifierPropertiesEXT       ) vkGetInstanceProcAddr( instance, "vkGetImageDrmFormatModifierPropertiesEXT" );
1257 
1258     // VK_EXT_validation_cache
1259     vkCreateValidationCacheEXT                     = cast( PFN_vkCreateValidationCacheEXT                     ) vkGetInstanceProcAddr( instance, "vkCreateValidationCacheEXT" );
1260     vkDestroyValidationCacheEXT                    = cast( PFN_vkDestroyValidationCacheEXT                    ) vkGetInstanceProcAddr( instance, "vkDestroyValidationCacheEXT" );
1261     vkMergeValidationCachesEXT                     = cast( PFN_vkMergeValidationCachesEXT                     ) vkGetInstanceProcAddr( instance, "vkMergeValidationCachesEXT" );
1262     vkGetValidationCacheDataEXT                    = cast( PFN_vkGetValidationCacheDataEXT                    ) vkGetInstanceProcAddr( instance, "vkGetValidationCacheDataEXT" );
1263 
1264     // VK_NV_shading_rate_image
1265     vkCmdBindShadingRateImageNV                    = cast( PFN_vkCmdBindShadingRateImageNV                    ) vkGetInstanceProcAddr( instance, "vkCmdBindShadingRateImageNV" );
1266     vkCmdSetViewportShadingRatePaletteNV           = cast( PFN_vkCmdSetViewportShadingRatePaletteNV           ) vkGetInstanceProcAddr( instance, "vkCmdSetViewportShadingRatePaletteNV" );
1267     vkCmdSetCoarseSampleOrderNV                    = cast( PFN_vkCmdSetCoarseSampleOrderNV                    ) vkGetInstanceProcAddr( instance, "vkCmdSetCoarseSampleOrderNV" );
1268 
1269     // VK_NV_ray_tracing
1270     vkCreateAccelerationStructureNV                = cast( PFN_vkCreateAccelerationStructureNV                ) vkGetInstanceProcAddr( instance, "vkCreateAccelerationStructureNV" );
1271     vkDestroyAccelerationStructureNV               = cast( PFN_vkDestroyAccelerationStructureNV               ) vkGetInstanceProcAddr( instance, "vkDestroyAccelerationStructureNV" );
1272     vkGetAccelerationStructureMemoryRequirementsNV = cast( PFN_vkGetAccelerationStructureMemoryRequirementsNV ) vkGetInstanceProcAddr( instance, "vkGetAccelerationStructureMemoryRequirementsNV" );
1273     vkBindAccelerationStructureMemoryNV            = cast( PFN_vkBindAccelerationStructureMemoryNV            ) vkGetInstanceProcAddr( instance, "vkBindAccelerationStructureMemoryNV" );
1274     vkCmdBuildAccelerationStructureNV              = cast( PFN_vkCmdBuildAccelerationStructureNV              ) vkGetInstanceProcAddr( instance, "vkCmdBuildAccelerationStructureNV" );
1275     vkCmdCopyAccelerationStructureNV               = cast( PFN_vkCmdCopyAccelerationStructureNV               ) vkGetInstanceProcAddr( instance, "vkCmdCopyAccelerationStructureNV" );
1276     vkCmdTraceRaysNV                               = cast( PFN_vkCmdTraceRaysNV                               ) vkGetInstanceProcAddr( instance, "vkCmdTraceRaysNV" );
1277     vkCreateRayTracingPipelinesNV                  = cast( PFN_vkCreateRayTracingPipelinesNV                  ) vkGetInstanceProcAddr( instance, "vkCreateRayTracingPipelinesNV" );
1278     vkGetRayTracingShaderGroupHandlesNV            = cast( PFN_vkGetRayTracingShaderGroupHandlesNV            ) vkGetInstanceProcAddr( instance, "vkGetRayTracingShaderGroupHandlesNV" );
1279     vkGetAccelerationStructureHandleNV             = cast( PFN_vkGetAccelerationStructureHandleNV             ) vkGetInstanceProcAddr( instance, "vkGetAccelerationStructureHandleNV" );
1280     vkCmdWriteAccelerationStructuresPropertiesNV   = cast( PFN_vkCmdWriteAccelerationStructuresPropertiesNV   ) vkGetInstanceProcAddr( instance, "vkCmdWriteAccelerationStructuresPropertiesNV" );
1281     vkCompileDeferredNV                            = cast( PFN_vkCompileDeferredNV                            ) vkGetInstanceProcAddr( instance, "vkCompileDeferredNV" );
1282 
1283     // VK_EXT_external_memory_host
1284     vkGetMemoryHostPointerPropertiesEXT            = cast( PFN_vkGetMemoryHostPointerPropertiesEXT            ) vkGetInstanceProcAddr( instance, "vkGetMemoryHostPointerPropertiesEXT" );
1285 
1286     // VK_AMD_buffer_marker
1287     vkCmdWriteBufferMarkerAMD                      = cast( PFN_vkCmdWriteBufferMarkerAMD                      ) vkGetInstanceProcAddr( instance, "vkCmdWriteBufferMarkerAMD" );
1288 
1289     // VK_EXT_calibrated_timestamps
1290     vkGetCalibratedTimestampsEXT                   = cast( PFN_vkGetCalibratedTimestampsEXT                   ) vkGetInstanceProcAddr( instance, "vkGetCalibratedTimestampsEXT" );
1291 
1292     // VK_NV_mesh_shader
1293     vkCmdDrawMeshTasksNV                           = cast( PFN_vkCmdDrawMeshTasksNV                           ) vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksNV" );
1294     vkCmdDrawMeshTasksIndirectNV                   = cast( PFN_vkCmdDrawMeshTasksIndirectNV                   ) vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksIndirectNV" );
1295     vkCmdDrawMeshTasksIndirectCountNV              = cast( PFN_vkCmdDrawMeshTasksIndirectCountNV              ) vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksIndirectCountNV" );
1296 
1297     // VK_NV_scissor_exclusive
1298     vkCmdSetExclusiveScissorNV                     = cast( PFN_vkCmdSetExclusiveScissorNV                     ) vkGetInstanceProcAddr( instance, "vkCmdSetExclusiveScissorNV" );
1299 
1300     // VK_NV_device_diagnostic_checkpoints
1301     vkCmdSetCheckpointNV                           = cast( PFN_vkCmdSetCheckpointNV                           ) vkGetInstanceProcAddr( instance, "vkCmdSetCheckpointNV" );
1302     vkGetQueueCheckpointDataNV                     = cast( PFN_vkGetQueueCheckpointDataNV                     ) vkGetInstanceProcAddr( instance, "vkGetQueueCheckpointDataNV" );
1303 
1304     // VK_INTEL_performance_query
1305     vkInitializePerformanceApiINTEL                = cast( PFN_vkInitializePerformanceApiINTEL                ) vkGetInstanceProcAddr( instance, "vkInitializePerformanceApiINTEL" );
1306     vkUninitializePerformanceApiINTEL              = cast( PFN_vkUninitializePerformanceApiINTEL              ) vkGetInstanceProcAddr( instance, "vkUninitializePerformanceApiINTEL" );
1307     vkCmdSetPerformanceMarkerINTEL                 = cast( PFN_vkCmdSetPerformanceMarkerINTEL                 ) vkGetInstanceProcAddr( instance, "vkCmdSetPerformanceMarkerINTEL" );
1308     vkCmdSetPerformanceStreamMarkerINTEL           = cast( PFN_vkCmdSetPerformanceStreamMarkerINTEL           ) vkGetInstanceProcAddr( instance, "vkCmdSetPerformanceStreamMarkerINTEL" );
1309     vkCmdSetPerformanceOverrideINTEL               = cast( PFN_vkCmdSetPerformanceOverrideINTEL               ) vkGetInstanceProcAddr( instance, "vkCmdSetPerformanceOverrideINTEL" );
1310     vkAcquirePerformanceConfigurationINTEL         = cast( PFN_vkAcquirePerformanceConfigurationINTEL         ) vkGetInstanceProcAddr( instance, "vkAcquirePerformanceConfigurationINTEL" );
1311     vkReleasePerformanceConfigurationINTEL         = cast( PFN_vkReleasePerformanceConfigurationINTEL         ) vkGetInstanceProcAddr( instance, "vkReleasePerformanceConfigurationINTEL" );
1312     vkQueueSetPerformanceConfigurationINTEL        = cast( PFN_vkQueueSetPerformanceConfigurationINTEL        ) vkGetInstanceProcAddr( instance, "vkQueueSetPerformanceConfigurationINTEL" );
1313     vkGetPerformanceParameterINTEL                 = cast( PFN_vkGetPerformanceParameterINTEL                 ) vkGetInstanceProcAddr( instance, "vkGetPerformanceParameterINTEL" );
1314 
1315     // VK_AMD_display_native_hdr
1316     vkSetLocalDimmingAMD                           = cast( PFN_vkSetLocalDimmingAMD                           ) vkGetInstanceProcAddr( instance, "vkSetLocalDimmingAMD" );
1317 
1318     // VK_EXT_buffer_device_address
1319     vkGetBufferDeviceAddressEXT                    = cast( PFN_vkGetBufferDeviceAddressEXT                    ) vkGetInstanceProcAddr( instance, "vkGetBufferDeviceAddressEXT" );
1320 
1321     // VK_EXT_host_query_reset
1322     vkResetQueryPoolEXT                            = cast( PFN_vkResetQueryPoolEXT                            ) vkGetInstanceProcAddr( instance, "vkResetQueryPoolEXT" );
1323 }
1324 
1325 
1326 /// with a valid VkDevice call this function to retrieve VkDevice, VkQueue and VkCommandBuffer related functions
1327 /// the functions call directly VkDevice and related resources and can be retrieved for one and only one VkDevice
1328 /// calling this function again with another VkDevices will overwrite the __gshared functions retrieved previously
1329 /// see module erupted.dispatch_device if multiple VkDevices will be used
1330 void loadDeviceLevelFunctions( VkDevice device ) {
1331     assert( vkGetDeviceProcAddr !is null, "Function pointer vkGetDeviceProcAddr is null!\nCall loadGlobalLevelFunctions -> loadInstanceLevelFunctions -> loadDeviceLevelFunctions( device )" );
1332 
1333     // VK_VERSION_1_0
1334     vkDestroyDevice                                = cast( PFN_vkDestroyDevice                                ) vkGetDeviceProcAddr( device, "vkDestroyDevice" );
1335     vkGetDeviceQueue                               = cast( PFN_vkGetDeviceQueue                               ) vkGetDeviceProcAddr( device, "vkGetDeviceQueue" );
1336     vkQueueSubmit                                  = cast( PFN_vkQueueSubmit                                  ) vkGetDeviceProcAddr( device, "vkQueueSubmit" );
1337     vkQueueWaitIdle                                = cast( PFN_vkQueueWaitIdle                                ) vkGetDeviceProcAddr( device, "vkQueueWaitIdle" );
1338     vkDeviceWaitIdle                               = cast( PFN_vkDeviceWaitIdle                               ) vkGetDeviceProcAddr( device, "vkDeviceWaitIdle" );
1339     vkAllocateMemory                               = cast( PFN_vkAllocateMemory                               ) vkGetDeviceProcAddr( device, "vkAllocateMemory" );
1340     vkFreeMemory                                   = cast( PFN_vkFreeMemory                                   ) vkGetDeviceProcAddr( device, "vkFreeMemory" );
1341     vkMapMemory                                    = cast( PFN_vkMapMemory                                    ) vkGetDeviceProcAddr( device, "vkMapMemory" );
1342     vkUnmapMemory                                  = cast( PFN_vkUnmapMemory                                  ) vkGetDeviceProcAddr( device, "vkUnmapMemory" );
1343     vkFlushMappedMemoryRanges                      = cast( PFN_vkFlushMappedMemoryRanges                      ) vkGetDeviceProcAddr( device, "vkFlushMappedMemoryRanges" );
1344     vkInvalidateMappedMemoryRanges                 = cast( PFN_vkInvalidateMappedMemoryRanges                 ) vkGetDeviceProcAddr( device, "vkInvalidateMappedMemoryRanges" );
1345     vkGetDeviceMemoryCommitment                    = cast( PFN_vkGetDeviceMemoryCommitment                    ) vkGetDeviceProcAddr( device, "vkGetDeviceMemoryCommitment" );
1346     vkBindBufferMemory                             = cast( PFN_vkBindBufferMemory                             ) vkGetDeviceProcAddr( device, "vkBindBufferMemory" );
1347     vkBindImageMemory                              = cast( PFN_vkBindImageMemory                              ) vkGetDeviceProcAddr( device, "vkBindImageMemory" );
1348     vkGetBufferMemoryRequirements                  = cast( PFN_vkGetBufferMemoryRequirements                  ) vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements" );
1349     vkGetImageMemoryRequirements                   = cast( PFN_vkGetImageMemoryRequirements                   ) vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements" );
1350     vkGetImageSparseMemoryRequirements             = cast( PFN_vkGetImageSparseMemoryRequirements             ) vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements" );
1351     vkQueueBindSparse                              = cast( PFN_vkQueueBindSparse                              ) vkGetDeviceProcAddr( device, "vkQueueBindSparse" );
1352     vkCreateFence                                  = cast( PFN_vkCreateFence                                  ) vkGetDeviceProcAddr( device, "vkCreateFence" );
1353     vkDestroyFence                                 = cast( PFN_vkDestroyFence                                 ) vkGetDeviceProcAddr( device, "vkDestroyFence" );
1354     vkResetFences                                  = cast( PFN_vkResetFences                                  ) vkGetDeviceProcAddr( device, "vkResetFences" );
1355     vkGetFenceStatus                               = cast( PFN_vkGetFenceStatus                               ) vkGetDeviceProcAddr( device, "vkGetFenceStatus" );
1356     vkWaitForFences                                = cast( PFN_vkWaitForFences                                ) vkGetDeviceProcAddr( device, "vkWaitForFences" );
1357     vkCreateSemaphore                              = cast( PFN_vkCreateSemaphore                              ) vkGetDeviceProcAddr( device, "vkCreateSemaphore" );
1358     vkDestroySemaphore                             = cast( PFN_vkDestroySemaphore                             ) vkGetDeviceProcAddr( device, "vkDestroySemaphore" );
1359     vkCreateEvent                                  = cast( PFN_vkCreateEvent                                  ) vkGetDeviceProcAddr( device, "vkCreateEvent" );
1360     vkDestroyEvent                                 = cast( PFN_vkDestroyEvent                                 ) vkGetDeviceProcAddr( device, "vkDestroyEvent" );
1361     vkGetEventStatus                               = cast( PFN_vkGetEventStatus                               ) vkGetDeviceProcAddr( device, "vkGetEventStatus" );
1362     vkSetEvent                                     = cast( PFN_vkSetEvent                                     ) vkGetDeviceProcAddr( device, "vkSetEvent" );
1363     vkResetEvent                                   = cast( PFN_vkResetEvent                                   ) vkGetDeviceProcAddr( device, "vkResetEvent" );
1364     vkCreateQueryPool                              = cast( PFN_vkCreateQueryPool                              ) vkGetDeviceProcAddr( device, "vkCreateQueryPool" );
1365     vkDestroyQueryPool                             = cast( PFN_vkDestroyQueryPool                             ) vkGetDeviceProcAddr( device, "vkDestroyQueryPool" );
1366     vkGetQueryPoolResults                          = cast( PFN_vkGetQueryPoolResults                          ) vkGetDeviceProcAddr( device, "vkGetQueryPoolResults" );
1367     vkCreateBuffer                                 = cast( PFN_vkCreateBuffer                                 ) vkGetDeviceProcAddr( device, "vkCreateBuffer" );
1368     vkDestroyBuffer                                = cast( PFN_vkDestroyBuffer                                ) vkGetDeviceProcAddr( device, "vkDestroyBuffer" );
1369     vkCreateBufferView                             = cast( PFN_vkCreateBufferView                             ) vkGetDeviceProcAddr( device, "vkCreateBufferView" );
1370     vkDestroyBufferView                            = cast( PFN_vkDestroyBufferView                            ) vkGetDeviceProcAddr( device, "vkDestroyBufferView" );
1371     vkCreateImage                                  = cast( PFN_vkCreateImage                                  ) vkGetDeviceProcAddr( device, "vkCreateImage" );
1372     vkDestroyImage                                 = cast( PFN_vkDestroyImage                                 ) vkGetDeviceProcAddr( device, "vkDestroyImage" );
1373     vkGetImageSubresourceLayout                    = cast( PFN_vkGetImageSubresourceLayout                    ) vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout" );
1374     vkCreateImageView                              = cast( PFN_vkCreateImageView                              ) vkGetDeviceProcAddr( device, "vkCreateImageView" );
1375     vkDestroyImageView                             = cast( PFN_vkDestroyImageView                             ) vkGetDeviceProcAddr( device, "vkDestroyImageView" );
1376     vkCreateShaderModule                           = cast( PFN_vkCreateShaderModule                           ) vkGetDeviceProcAddr( device, "vkCreateShaderModule" );
1377     vkDestroyShaderModule                          = cast( PFN_vkDestroyShaderModule                          ) vkGetDeviceProcAddr( device, "vkDestroyShaderModule" );
1378     vkCreatePipelineCache                          = cast( PFN_vkCreatePipelineCache                          ) vkGetDeviceProcAddr( device, "vkCreatePipelineCache" );
1379     vkDestroyPipelineCache                         = cast( PFN_vkDestroyPipelineCache                         ) vkGetDeviceProcAddr( device, "vkDestroyPipelineCache" );
1380     vkGetPipelineCacheData                         = cast( PFN_vkGetPipelineCacheData                         ) vkGetDeviceProcAddr( device, "vkGetPipelineCacheData" );
1381     vkMergePipelineCaches                          = cast( PFN_vkMergePipelineCaches                          ) vkGetDeviceProcAddr( device, "vkMergePipelineCaches" );
1382     vkCreateGraphicsPipelines                      = cast( PFN_vkCreateGraphicsPipelines                      ) vkGetDeviceProcAddr( device, "vkCreateGraphicsPipelines" );
1383     vkCreateComputePipelines                       = cast( PFN_vkCreateComputePipelines                       ) vkGetDeviceProcAddr( device, "vkCreateComputePipelines" );
1384     vkDestroyPipeline                              = cast( PFN_vkDestroyPipeline                              ) vkGetDeviceProcAddr( device, "vkDestroyPipeline" );
1385     vkCreatePipelineLayout                         = cast( PFN_vkCreatePipelineLayout                         ) vkGetDeviceProcAddr( device, "vkCreatePipelineLayout" );
1386     vkDestroyPipelineLayout                        = cast( PFN_vkDestroyPipelineLayout                        ) vkGetDeviceProcAddr( device, "vkDestroyPipelineLayout" );
1387     vkCreateSampler                                = cast( PFN_vkCreateSampler                                ) vkGetDeviceProcAddr( device, "vkCreateSampler" );
1388     vkDestroySampler                               = cast( PFN_vkDestroySampler                               ) vkGetDeviceProcAddr( device, "vkDestroySampler" );
1389     vkCreateDescriptorSetLayout                    = cast( PFN_vkCreateDescriptorSetLayout                    ) vkGetDeviceProcAddr( device, "vkCreateDescriptorSetLayout" );
1390     vkDestroyDescriptorSetLayout                   = cast( PFN_vkDestroyDescriptorSetLayout                   ) vkGetDeviceProcAddr( device, "vkDestroyDescriptorSetLayout" );
1391     vkCreateDescriptorPool                         = cast( PFN_vkCreateDescriptorPool                         ) vkGetDeviceProcAddr( device, "vkCreateDescriptorPool" );
1392     vkDestroyDescriptorPool                        = cast( PFN_vkDestroyDescriptorPool                        ) vkGetDeviceProcAddr( device, "vkDestroyDescriptorPool" );
1393     vkResetDescriptorPool                          = cast( PFN_vkResetDescriptorPool                          ) vkGetDeviceProcAddr( device, "vkResetDescriptorPool" );
1394     vkAllocateDescriptorSets                       = cast( PFN_vkAllocateDescriptorSets                       ) vkGetDeviceProcAddr( device, "vkAllocateDescriptorSets" );
1395     vkFreeDescriptorSets                           = cast( PFN_vkFreeDescriptorSets                           ) vkGetDeviceProcAddr( device, "vkFreeDescriptorSets" );
1396     vkUpdateDescriptorSets                         = cast( PFN_vkUpdateDescriptorSets                         ) vkGetDeviceProcAddr( device, "vkUpdateDescriptorSets" );
1397     vkCreateFramebuffer                            = cast( PFN_vkCreateFramebuffer                            ) vkGetDeviceProcAddr( device, "vkCreateFramebuffer" );
1398     vkDestroyFramebuffer                           = cast( PFN_vkDestroyFramebuffer                           ) vkGetDeviceProcAddr( device, "vkDestroyFramebuffer" );
1399     vkCreateRenderPass                             = cast( PFN_vkCreateRenderPass                             ) vkGetDeviceProcAddr( device, "vkCreateRenderPass" );
1400     vkDestroyRenderPass                            = cast( PFN_vkDestroyRenderPass                            ) vkGetDeviceProcAddr( device, "vkDestroyRenderPass" );
1401     vkGetRenderAreaGranularity                     = cast( PFN_vkGetRenderAreaGranularity                     ) vkGetDeviceProcAddr( device, "vkGetRenderAreaGranularity" );
1402     vkCreateCommandPool                            = cast( PFN_vkCreateCommandPool                            ) vkGetDeviceProcAddr( device, "vkCreateCommandPool" );
1403     vkDestroyCommandPool                           = cast( PFN_vkDestroyCommandPool                           ) vkGetDeviceProcAddr( device, "vkDestroyCommandPool" );
1404     vkResetCommandPool                             = cast( PFN_vkResetCommandPool                             ) vkGetDeviceProcAddr( device, "vkResetCommandPool" );
1405     vkAllocateCommandBuffers                       = cast( PFN_vkAllocateCommandBuffers                       ) vkGetDeviceProcAddr( device, "vkAllocateCommandBuffers" );
1406     vkFreeCommandBuffers                           = cast( PFN_vkFreeCommandBuffers                           ) vkGetDeviceProcAddr( device, "vkFreeCommandBuffers" );
1407     vkBeginCommandBuffer                           = cast( PFN_vkBeginCommandBuffer                           ) vkGetDeviceProcAddr( device, "vkBeginCommandBuffer" );
1408     vkEndCommandBuffer                             = cast( PFN_vkEndCommandBuffer                             ) vkGetDeviceProcAddr( device, "vkEndCommandBuffer" );
1409     vkResetCommandBuffer                           = cast( PFN_vkResetCommandBuffer                           ) vkGetDeviceProcAddr( device, "vkResetCommandBuffer" );
1410     vkCmdBindPipeline                              = cast( PFN_vkCmdBindPipeline                              ) vkGetDeviceProcAddr( device, "vkCmdBindPipeline" );
1411     vkCmdSetViewport                               = cast( PFN_vkCmdSetViewport                               ) vkGetDeviceProcAddr( device, "vkCmdSetViewport" );
1412     vkCmdSetScissor                                = cast( PFN_vkCmdSetScissor                                ) vkGetDeviceProcAddr( device, "vkCmdSetScissor" );
1413     vkCmdSetLineWidth                              = cast( PFN_vkCmdSetLineWidth                              ) vkGetDeviceProcAddr( device, "vkCmdSetLineWidth" );
1414     vkCmdSetDepthBias                              = cast( PFN_vkCmdSetDepthBias                              ) vkGetDeviceProcAddr( device, "vkCmdSetDepthBias" );
1415     vkCmdSetBlendConstants                         = cast( PFN_vkCmdSetBlendConstants                         ) vkGetDeviceProcAddr( device, "vkCmdSetBlendConstants" );
1416     vkCmdSetDepthBounds                            = cast( PFN_vkCmdSetDepthBounds                            ) vkGetDeviceProcAddr( device, "vkCmdSetDepthBounds" );
1417     vkCmdSetStencilCompareMask                     = cast( PFN_vkCmdSetStencilCompareMask                     ) vkGetDeviceProcAddr( device, "vkCmdSetStencilCompareMask" );
1418     vkCmdSetStencilWriteMask                       = cast( PFN_vkCmdSetStencilWriteMask                       ) vkGetDeviceProcAddr( device, "vkCmdSetStencilWriteMask" );
1419     vkCmdSetStencilReference                       = cast( PFN_vkCmdSetStencilReference                       ) vkGetDeviceProcAddr( device, "vkCmdSetStencilReference" );
1420     vkCmdBindDescriptorSets                        = cast( PFN_vkCmdBindDescriptorSets                        ) vkGetDeviceProcAddr( device, "vkCmdBindDescriptorSets" );
1421     vkCmdBindIndexBuffer                           = cast( PFN_vkCmdBindIndexBuffer                           ) vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer" );
1422     vkCmdBindVertexBuffers                         = cast( PFN_vkCmdBindVertexBuffers                         ) vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers" );
1423     vkCmdDraw                                      = cast( PFN_vkCmdDraw                                      ) vkGetDeviceProcAddr( device, "vkCmdDraw" );
1424     vkCmdDrawIndexed                               = cast( PFN_vkCmdDrawIndexed                               ) vkGetDeviceProcAddr( device, "vkCmdDrawIndexed" );
1425     vkCmdDrawIndirect                              = cast( PFN_vkCmdDrawIndirect                              ) vkGetDeviceProcAddr( device, "vkCmdDrawIndirect" );
1426     vkCmdDrawIndexedIndirect                       = cast( PFN_vkCmdDrawIndexedIndirect                       ) vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirect" );
1427     vkCmdDispatch                                  = cast( PFN_vkCmdDispatch                                  ) vkGetDeviceProcAddr( device, "vkCmdDispatch" );
1428     vkCmdDispatchIndirect                          = cast( PFN_vkCmdDispatchIndirect                          ) vkGetDeviceProcAddr( device, "vkCmdDispatchIndirect" );
1429     vkCmdCopyBuffer                                = cast( PFN_vkCmdCopyBuffer                                ) vkGetDeviceProcAddr( device, "vkCmdCopyBuffer" );
1430     vkCmdCopyImage                                 = cast( PFN_vkCmdCopyImage                                 ) vkGetDeviceProcAddr( device, "vkCmdCopyImage" );
1431     vkCmdBlitImage                                 = cast( PFN_vkCmdBlitImage                                 ) vkGetDeviceProcAddr( device, "vkCmdBlitImage" );
1432     vkCmdCopyBufferToImage                         = cast( PFN_vkCmdCopyBufferToImage                         ) vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage" );
1433     vkCmdCopyImageToBuffer                         = cast( PFN_vkCmdCopyImageToBuffer                         ) vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer" );
1434     vkCmdUpdateBuffer                              = cast( PFN_vkCmdUpdateBuffer                              ) vkGetDeviceProcAddr( device, "vkCmdUpdateBuffer" );
1435     vkCmdFillBuffer                                = cast( PFN_vkCmdFillBuffer                                ) vkGetDeviceProcAddr( device, "vkCmdFillBuffer" );
1436     vkCmdClearColorImage                           = cast( PFN_vkCmdClearColorImage                           ) vkGetDeviceProcAddr( device, "vkCmdClearColorImage" );
1437     vkCmdClearDepthStencilImage                    = cast( PFN_vkCmdClearDepthStencilImage                    ) vkGetDeviceProcAddr( device, "vkCmdClearDepthStencilImage" );
1438     vkCmdClearAttachments                          = cast( PFN_vkCmdClearAttachments                          ) vkGetDeviceProcAddr( device, "vkCmdClearAttachments" );
1439     vkCmdResolveImage                              = cast( PFN_vkCmdResolveImage                              ) vkGetDeviceProcAddr( device, "vkCmdResolveImage" );
1440     vkCmdSetEvent                                  = cast( PFN_vkCmdSetEvent                                  ) vkGetDeviceProcAddr( device, "vkCmdSetEvent" );
1441     vkCmdResetEvent                                = cast( PFN_vkCmdResetEvent                                ) vkGetDeviceProcAddr( device, "vkCmdResetEvent" );
1442     vkCmdWaitEvents                                = cast( PFN_vkCmdWaitEvents                                ) vkGetDeviceProcAddr( device, "vkCmdWaitEvents" );
1443     vkCmdPipelineBarrier                           = cast( PFN_vkCmdPipelineBarrier                           ) vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier" );
1444     vkCmdBeginQuery                                = cast( PFN_vkCmdBeginQuery                                ) vkGetDeviceProcAddr( device, "vkCmdBeginQuery" );
1445     vkCmdEndQuery                                  = cast( PFN_vkCmdEndQuery                                  ) vkGetDeviceProcAddr( device, "vkCmdEndQuery" );
1446     vkCmdResetQueryPool                            = cast( PFN_vkCmdResetQueryPool                            ) vkGetDeviceProcAddr( device, "vkCmdResetQueryPool" );
1447     vkCmdWriteTimestamp                            = cast( PFN_vkCmdWriteTimestamp                            ) vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp" );
1448     vkCmdCopyQueryPoolResults                      = cast( PFN_vkCmdCopyQueryPoolResults                      ) vkGetDeviceProcAddr( device, "vkCmdCopyQueryPoolResults" );
1449     vkCmdPushConstants                             = cast( PFN_vkCmdPushConstants                             ) vkGetDeviceProcAddr( device, "vkCmdPushConstants" );
1450     vkCmdBeginRenderPass                           = cast( PFN_vkCmdBeginRenderPass                           ) vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass" );
1451     vkCmdNextSubpass                               = cast( PFN_vkCmdNextSubpass                               ) vkGetDeviceProcAddr( device, "vkCmdNextSubpass" );
1452     vkCmdEndRenderPass                             = cast( PFN_vkCmdEndRenderPass                             ) vkGetDeviceProcAddr( device, "vkCmdEndRenderPass" );
1453     vkCmdExecuteCommands                           = cast( PFN_vkCmdExecuteCommands                           ) vkGetDeviceProcAddr( device, "vkCmdExecuteCommands" );
1454 
1455     // VK_VERSION_1_1
1456     vkBindBufferMemory2                            = cast( PFN_vkBindBufferMemory2                            ) vkGetDeviceProcAddr( device, "vkBindBufferMemory2" );
1457     vkBindImageMemory2                             = cast( PFN_vkBindImageMemory2                             ) vkGetDeviceProcAddr( device, "vkBindImageMemory2" );
1458     vkGetDeviceGroupPeerMemoryFeatures             = cast( PFN_vkGetDeviceGroupPeerMemoryFeatures             ) vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeatures" );
1459     vkCmdSetDeviceMask                             = cast( PFN_vkCmdSetDeviceMask                             ) vkGetDeviceProcAddr( device, "vkCmdSetDeviceMask" );
1460     vkCmdDispatchBase                              = cast( PFN_vkCmdDispatchBase                              ) vkGetDeviceProcAddr( device, "vkCmdDispatchBase" );
1461     vkGetImageMemoryRequirements2                  = cast( PFN_vkGetImageMemoryRequirements2                  ) vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2" );
1462     vkGetBufferMemoryRequirements2                 = cast( PFN_vkGetBufferMemoryRequirements2                 ) vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2" );
1463     vkGetImageSparseMemoryRequirements2            = cast( PFN_vkGetImageSparseMemoryRequirements2            ) vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2" );
1464     vkTrimCommandPool                              = cast( PFN_vkTrimCommandPool                              ) vkGetDeviceProcAddr( device, "vkTrimCommandPool" );
1465     vkGetDeviceQueue2                              = cast( PFN_vkGetDeviceQueue2                              ) vkGetDeviceProcAddr( device, "vkGetDeviceQueue2" );
1466     vkCreateSamplerYcbcrConversion                 = cast( PFN_vkCreateSamplerYcbcrConversion                 ) vkGetDeviceProcAddr( device, "vkCreateSamplerYcbcrConversion" );
1467     vkDestroySamplerYcbcrConversion                = cast( PFN_vkDestroySamplerYcbcrConversion                ) vkGetDeviceProcAddr( device, "vkDestroySamplerYcbcrConversion" );
1468     vkCreateDescriptorUpdateTemplate               = cast( PFN_vkCreateDescriptorUpdateTemplate               ) vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplate" );
1469     vkDestroyDescriptorUpdateTemplate              = cast( PFN_vkDestroyDescriptorUpdateTemplate              ) vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplate" );
1470     vkUpdateDescriptorSetWithTemplate              = cast( PFN_vkUpdateDescriptorSetWithTemplate              ) vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplate" );
1471     vkGetDescriptorSetLayoutSupport                = cast( PFN_vkGetDescriptorSetLayoutSupport                ) vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSupport" );
1472 
1473     // VK_KHR_swapchain
1474     vkCreateSwapchainKHR                           = cast( PFN_vkCreateSwapchainKHR                           ) vkGetDeviceProcAddr( device, "vkCreateSwapchainKHR" );
1475     vkDestroySwapchainKHR                          = cast( PFN_vkDestroySwapchainKHR                          ) vkGetDeviceProcAddr( device, "vkDestroySwapchainKHR" );
1476     vkGetSwapchainImagesKHR                        = cast( PFN_vkGetSwapchainImagesKHR                        ) vkGetDeviceProcAddr( device, "vkGetSwapchainImagesKHR" );
1477     vkAcquireNextImageKHR                          = cast( PFN_vkAcquireNextImageKHR                          ) vkGetDeviceProcAddr( device, "vkAcquireNextImageKHR" );
1478     vkQueuePresentKHR                              = cast( PFN_vkQueuePresentKHR                              ) vkGetDeviceProcAddr( device, "vkQueuePresentKHR" );
1479     vkGetDeviceGroupPresentCapabilitiesKHR         = cast( PFN_vkGetDeviceGroupPresentCapabilitiesKHR         ) vkGetDeviceProcAddr( device, "vkGetDeviceGroupPresentCapabilitiesKHR" );
1480     vkGetDeviceGroupSurfacePresentModesKHR         = cast( PFN_vkGetDeviceGroupSurfacePresentModesKHR         ) vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModesKHR" );
1481     vkAcquireNextImage2KHR                         = cast( PFN_vkAcquireNextImage2KHR                         ) vkGetDeviceProcAddr( device, "vkAcquireNextImage2KHR" );
1482 
1483     // VK_KHR_display_swapchain
1484     vkCreateSharedSwapchainsKHR                    = cast( PFN_vkCreateSharedSwapchainsKHR                    ) vkGetDeviceProcAddr( device, "vkCreateSharedSwapchainsKHR" );
1485 
1486     // VK_KHR_external_memory_fd
1487     vkGetMemoryFdKHR                               = cast( PFN_vkGetMemoryFdKHR                               ) vkGetDeviceProcAddr( device, "vkGetMemoryFdKHR" );
1488     vkGetMemoryFdPropertiesKHR                     = cast( PFN_vkGetMemoryFdPropertiesKHR                     ) vkGetDeviceProcAddr( device, "vkGetMemoryFdPropertiesKHR" );
1489 
1490     // VK_KHR_external_semaphore_fd
1491     vkImportSemaphoreFdKHR                         = cast( PFN_vkImportSemaphoreFdKHR                         ) vkGetDeviceProcAddr( device, "vkImportSemaphoreFdKHR" );
1492     vkGetSemaphoreFdKHR                            = cast( PFN_vkGetSemaphoreFdKHR                            ) vkGetDeviceProcAddr( device, "vkGetSemaphoreFdKHR" );
1493 
1494     // VK_KHR_push_descriptor
1495     vkCmdPushDescriptorSetKHR                      = cast( PFN_vkCmdPushDescriptorSetKHR                      ) vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetKHR" );
1496     vkCmdPushDescriptorSetWithTemplateKHR          = cast( PFN_vkCmdPushDescriptorSetWithTemplateKHR          ) vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplateKHR" );
1497 
1498     // VK_KHR_create_renderpass2
1499     vkCreateRenderPass2KHR                         = cast( PFN_vkCreateRenderPass2KHR                         ) vkGetDeviceProcAddr( device, "vkCreateRenderPass2KHR" );
1500     vkCmdBeginRenderPass2KHR                       = cast( PFN_vkCmdBeginRenderPass2KHR                       ) vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass2KHR" );
1501     vkCmdNextSubpass2KHR                           = cast( PFN_vkCmdNextSubpass2KHR                           ) vkGetDeviceProcAddr( device, "vkCmdNextSubpass2KHR" );
1502     vkCmdEndRenderPass2KHR                         = cast( PFN_vkCmdEndRenderPass2KHR                         ) vkGetDeviceProcAddr( device, "vkCmdEndRenderPass2KHR" );
1503 
1504     // VK_KHR_shared_presentable_image
1505     vkGetSwapchainStatusKHR                        = cast( PFN_vkGetSwapchainStatusKHR                        ) vkGetDeviceProcAddr( device, "vkGetSwapchainStatusKHR" );
1506 
1507     // VK_KHR_external_fence_fd
1508     vkImportFenceFdKHR                             = cast( PFN_vkImportFenceFdKHR                             ) vkGetDeviceProcAddr( device, "vkImportFenceFdKHR" );
1509     vkGetFenceFdKHR                                = cast( PFN_vkGetFenceFdKHR                                ) vkGetDeviceProcAddr( device, "vkGetFenceFdKHR" );
1510 
1511     // VK_KHR_draw_indirect_count
1512     vkCmdDrawIndirectCountKHR                      = cast( PFN_vkCmdDrawIndirectCountKHR                      ) vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountKHR" );
1513     vkCmdDrawIndexedIndirectCountKHR               = cast( PFN_vkCmdDrawIndexedIndirectCountKHR               ) vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountKHR" );
1514 
1515     // VK_EXT_debug_marker
1516     vkDebugMarkerSetObjectTagEXT                   = cast( PFN_vkDebugMarkerSetObjectTagEXT                   ) vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectTagEXT" );
1517     vkDebugMarkerSetObjectNameEXT                  = cast( PFN_vkDebugMarkerSetObjectNameEXT                  ) vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectNameEXT" );
1518     vkCmdDebugMarkerBeginEXT                       = cast( PFN_vkCmdDebugMarkerBeginEXT                       ) vkGetDeviceProcAddr( device, "vkCmdDebugMarkerBeginEXT" );
1519     vkCmdDebugMarkerEndEXT                         = cast( PFN_vkCmdDebugMarkerEndEXT                         ) vkGetDeviceProcAddr( device, "vkCmdDebugMarkerEndEXT" );
1520     vkCmdDebugMarkerInsertEXT                      = cast( PFN_vkCmdDebugMarkerInsertEXT                      ) vkGetDeviceProcAddr( device, "vkCmdDebugMarkerInsertEXT" );
1521 
1522     // VK_EXT_transform_feedback
1523     vkCmdBindTransformFeedbackBuffersEXT           = cast( PFN_vkCmdBindTransformFeedbackBuffersEXT           ) vkGetDeviceProcAddr( device, "vkCmdBindTransformFeedbackBuffersEXT" );
1524     vkCmdBeginTransformFeedbackEXT                 = cast( PFN_vkCmdBeginTransformFeedbackEXT                 ) vkGetDeviceProcAddr( device, "vkCmdBeginTransformFeedbackEXT" );
1525     vkCmdEndTransformFeedbackEXT                   = cast( PFN_vkCmdEndTransformFeedbackEXT                   ) vkGetDeviceProcAddr( device, "vkCmdEndTransformFeedbackEXT" );
1526     vkCmdBeginQueryIndexedEXT                      = cast( PFN_vkCmdBeginQueryIndexedEXT                      ) vkGetDeviceProcAddr( device, "vkCmdBeginQueryIndexedEXT" );
1527     vkCmdEndQueryIndexedEXT                        = cast( PFN_vkCmdEndQueryIndexedEXT                        ) vkGetDeviceProcAddr( device, "vkCmdEndQueryIndexedEXT" );
1528     vkCmdDrawIndirectByteCountEXT                  = cast( PFN_vkCmdDrawIndirectByteCountEXT                  ) vkGetDeviceProcAddr( device, "vkCmdDrawIndirectByteCountEXT" );
1529 
1530     // VK_NVX_image_view_handle
1531     vkGetImageViewHandleNVX                        = cast( PFN_vkGetImageViewHandleNVX                        ) vkGetDeviceProcAddr( device, "vkGetImageViewHandleNVX" );
1532 
1533     // VK_AMD_shader_info
1534     vkGetShaderInfoAMD                             = cast( PFN_vkGetShaderInfoAMD                             ) vkGetDeviceProcAddr( device, "vkGetShaderInfoAMD" );
1535 
1536     // VK_EXT_conditional_rendering
1537     vkCmdBeginConditionalRenderingEXT              = cast( PFN_vkCmdBeginConditionalRenderingEXT              ) vkGetDeviceProcAddr( device, "vkCmdBeginConditionalRenderingEXT" );
1538     vkCmdEndConditionalRenderingEXT                = cast( PFN_vkCmdEndConditionalRenderingEXT                ) vkGetDeviceProcAddr( device, "vkCmdEndConditionalRenderingEXT" );
1539 
1540     // VK_NVX_device_generated_commands
1541     vkCmdProcessCommandsNVX                        = cast( PFN_vkCmdProcessCommandsNVX                        ) vkGetDeviceProcAddr( device, "vkCmdProcessCommandsNVX" );
1542     vkCmdReserveSpaceForCommandsNVX                = cast( PFN_vkCmdReserveSpaceForCommandsNVX                ) vkGetDeviceProcAddr( device, "vkCmdReserveSpaceForCommandsNVX" );
1543     vkCreateIndirectCommandsLayoutNVX              = cast( PFN_vkCreateIndirectCommandsLayoutNVX              ) vkGetDeviceProcAddr( device, "vkCreateIndirectCommandsLayoutNVX" );
1544     vkDestroyIndirectCommandsLayoutNVX             = cast( PFN_vkDestroyIndirectCommandsLayoutNVX             ) vkGetDeviceProcAddr( device, "vkDestroyIndirectCommandsLayoutNVX" );
1545     vkCreateObjectTableNVX                         = cast( PFN_vkCreateObjectTableNVX                         ) vkGetDeviceProcAddr( device, "vkCreateObjectTableNVX" );
1546     vkDestroyObjectTableNVX                        = cast( PFN_vkDestroyObjectTableNVX                        ) vkGetDeviceProcAddr( device, "vkDestroyObjectTableNVX" );
1547     vkRegisterObjectsNVX                           = cast( PFN_vkRegisterObjectsNVX                           ) vkGetDeviceProcAddr( device, "vkRegisterObjectsNVX" );
1548     vkUnregisterObjectsNVX                         = cast( PFN_vkUnregisterObjectsNVX                         ) vkGetDeviceProcAddr( device, "vkUnregisterObjectsNVX" );
1549 
1550     // VK_NV_clip_space_w_scaling
1551     vkCmdSetViewportWScalingNV                     = cast( PFN_vkCmdSetViewportWScalingNV                     ) vkGetDeviceProcAddr( device, "vkCmdSetViewportWScalingNV" );
1552 
1553     // VK_EXT_display_control
1554     vkDisplayPowerControlEXT                       = cast( PFN_vkDisplayPowerControlEXT                       ) vkGetDeviceProcAddr( device, "vkDisplayPowerControlEXT" );
1555     vkRegisterDeviceEventEXT                       = cast( PFN_vkRegisterDeviceEventEXT                       ) vkGetDeviceProcAddr( device, "vkRegisterDeviceEventEXT" );
1556     vkRegisterDisplayEventEXT                      = cast( PFN_vkRegisterDisplayEventEXT                      ) vkGetDeviceProcAddr( device, "vkRegisterDisplayEventEXT" );
1557     vkGetSwapchainCounterEXT                       = cast( PFN_vkGetSwapchainCounterEXT                       ) vkGetDeviceProcAddr( device, "vkGetSwapchainCounterEXT" );
1558 
1559     // VK_GOOGLE_display_timing
1560     vkGetRefreshCycleDurationGOOGLE                = cast( PFN_vkGetRefreshCycleDurationGOOGLE                ) vkGetDeviceProcAddr( device, "vkGetRefreshCycleDurationGOOGLE" );
1561     vkGetPastPresentationTimingGOOGLE              = cast( PFN_vkGetPastPresentationTimingGOOGLE              ) vkGetDeviceProcAddr( device, "vkGetPastPresentationTimingGOOGLE" );
1562 
1563     // VK_EXT_discard_rectangles
1564     vkCmdSetDiscardRectangleEXT                    = cast( PFN_vkCmdSetDiscardRectangleEXT                    ) vkGetDeviceProcAddr( device, "vkCmdSetDiscardRectangleEXT" );
1565 
1566     // VK_EXT_hdr_metadata
1567     vkSetHdrMetadataEXT                            = cast( PFN_vkSetHdrMetadataEXT                            ) vkGetDeviceProcAddr( device, "vkSetHdrMetadataEXT" );
1568 
1569     // VK_EXT_debug_utils
1570     vkSetDebugUtilsObjectNameEXT                   = cast( PFN_vkSetDebugUtilsObjectNameEXT                   ) vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectNameEXT" );
1571     vkSetDebugUtilsObjectTagEXT                    = cast( PFN_vkSetDebugUtilsObjectTagEXT                    ) vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectTagEXT" );
1572     vkQueueBeginDebugUtilsLabelEXT                 = cast( PFN_vkQueueBeginDebugUtilsLabelEXT                 ) vkGetDeviceProcAddr( device, "vkQueueBeginDebugUtilsLabelEXT" );
1573     vkQueueEndDebugUtilsLabelEXT                   = cast( PFN_vkQueueEndDebugUtilsLabelEXT                   ) vkGetDeviceProcAddr( device, "vkQueueEndDebugUtilsLabelEXT" );
1574     vkQueueInsertDebugUtilsLabelEXT                = cast( PFN_vkQueueInsertDebugUtilsLabelEXT                ) vkGetDeviceProcAddr( device, "vkQueueInsertDebugUtilsLabelEXT" );
1575     vkCmdBeginDebugUtilsLabelEXT                   = cast( PFN_vkCmdBeginDebugUtilsLabelEXT                   ) vkGetDeviceProcAddr( device, "vkCmdBeginDebugUtilsLabelEXT" );
1576     vkCmdEndDebugUtilsLabelEXT                     = cast( PFN_vkCmdEndDebugUtilsLabelEXT                     ) vkGetDeviceProcAddr( device, "vkCmdEndDebugUtilsLabelEXT" );
1577     vkCmdInsertDebugUtilsLabelEXT                  = cast( PFN_vkCmdInsertDebugUtilsLabelEXT                  ) vkGetDeviceProcAddr( device, "vkCmdInsertDebugUtilsLabelEXT" );
1578 
1579     // VK_EXT_sample_locations
1580     vkCmdSetSampleLocationsEXT                     = cast( PFN_vkCmdSetSampleLocationsEXT                     ) vkGetDeviceProcAddr( device, "vkCmdSetSampleLocationsEXT" );
1581 
1582     // VK_EXT_image_drm_format_modifier
1583     vkGetImageDrmFormatModifierPropertiesEXT       = cast( PFN_vkGetImageDrmFormatModifierPropertiesEXT       ) vkGetDeviceProcAddr( device, "vkGetImageDrmFormatModifierPropertiesEXT" );
1584 
1585     // VK_EXT_validation_cache
1586     vkCreateValidationCacheEXT                     = cast( PFN_vkCreateValidationCacheEXT                     ) vkGetDeviceProcAddr( device, "vkCreateValidationCacheEXT" );
1587     vkDestroyValidationCacheEXT                    = cast( PFN_vkDestroyValidationCacheEXT                    ) vkGetDeviceProcAddr( device, "vkDestroyValidationCacheEXT" );
1588     vkMergeValidationCachesEXT                     = cast( PFN_vkMergeValidationCachesEXT                     ) vkGetDeviceProcAddr( device, "vkMergeValidationCachesEXT" );
1589     vkGetValidationCacheDataEXT                    = cast( PFN_vkGetValidationCacheDataEXT                    ) vkGetDeviceProcAddr( device, "vkGetValidationCacheDataEXT" );
1590 
1591     // VK_NV_shading_rate_image
1592     vkCmdBindShadingRateImageNV                    = cast( PFN_vkCmdBindShadingRateImageNV                    ) vkGetDeviceProcAddr( device, "vkCmdBindShadingRateImageNV" );
1593     vkCmdSetViewportShadingRatePaletteNV           = cast( PFN_vkCmdSetViewportShadingRatePaletteNV           ) vkGetDeviceProcAddr( device, "vkCmdSetViewportShadingRatePaletteNV" );
1594     vkCmdSetCoarseSampleOrderNV                    = cast( PFN_vkCmdSetCoarseSampleOrderNV                    ) vkGetDeviceProcAddr( device, "vkCmdSetCoarseSampleOrderNV" );
1595 
1596     // VK_NV_ray_tracing
1597     vkCreateAccelerationStructureNV                = cast( PFN_vkCreateAccelerationStructureNV                ) vkGetDeviceProcAddr( device, "vkCreateAccelerationStructureNV" );
1598     vkDestroyAccelerationStructureNV               = cast( PFN_vkDestroyAccelerationStructureNV               ) vkGetDeviceProcAddr( device, "vkDestroyAccelerationStructureNV" );
1599     vkGetAccelerationStructureMemoryRequirementsNV = cast( PFN_vkGetAccelerationStructureMemoryRequirementsNV ) vkGetDeviceProcAddr( device, "vkGetAccelerationStructureMemoryRequirementsNV" );
1600     vkBindAccelerationStructureMemoryNV            = cast( PFN_vkBindAccelerationStructureMemoryNV            ) vkGetDeviceProcAddr( device, "vkBindAccelerationStructureMemoryNV" );
1601     vkCmdBuildAccelerationStructureNV              = cast( PFN_vkCmdBuildAccelerationStructureNV              ) vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructureNV" );
1602     vkCmdCopyAccelerationStructureNV               = cast( PFN_vkCmdCopyAccelerationStructureNV               ) vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureNV" );
1603     vkCmdTraceRaysNV                               = cast( PFN_vkCmdTraceRaysNV                               ) vkGetDeviceProcAddr( device, "vkCmdTraceRaysNV" );
1604     vkCreateRayTracingPipelinesNV                  = cast( PFN_vkCreateRayTracingPipelinesNV                  ) vkGetDeviceProcAddr( device, "vkCreateRayTracingPipelinesNV" );
1605     vkGetRayTracingShaderGroupHandlesNV            = cast( PFN_vkGetRayTracingShaderGroupHandlesNV            ) vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupHandlesNV" );
1606     vkGetAccelerationStructureHandleNV             = cast( PFN_vkGetAccelerationStructureHandleNV             ) vkGetDeviceProcAddr( device, "vkGetAccelerationStructureHandleNV" );
1607     vkCmdWriteAccelerationStructuresPropertiesNV   = cast( PFN_vkCmdWriteAccelerationStructuresPropertiesNV   ) vkGetDeviceProcAddr( device, "vkCmdWriteAccelerationStructuresPropertiesNV" );
1608     vkCompileDeferredNV                            = cast( PFN_vkCompileDeferredNV                            ) vkGetDeviceProcAddr( device, "vkCompileDeferredNV" );
1609 
1610     // VK_EXT_external_memory_host
1611     vkGetMemoryHostPointerPropertiesEXT            = cast( PFN_vkGetMemoryHostPointerPropertiesEXT            ) vkGetDeviceProcAddr( device, "vkGetMemoryHostPointerPropertiesEXT" );
1612 
1613     // VK_AMD_buffer_marker
1614     vkCmdWriteBufferMarkerAMD                      = cast( PFN_vkCmdWriteBufferMarkerAMD                      ) vkGetDeviceProcAddr( device, "vkCmdWriteBufferMarkerAMD" );
1615 
1616     // VK_EXT_calibrated_timestamps
1617     vkGetCalibratedTimestampsEXT                   = cast( PFN_vkGetCalibratedTimestampsEXT                   ) vkGetDeviceProcAddr( device, "vkGetCalibratedTimestampsEXT" );
1618 
1619     // VK_NV_mesh_shader
1620     vkCmdDrawMeshTasksNV                           = cast( PFN_vkCmdDrawMeshTasksNV                           ) vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksNV" );
1621     vkCmdDrawMeshTasksIndirectNV                   = cast( PFN_vkCmdDrawMeshTasksIndirectNV                   ) vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectNV" );
1622     vkCmdDrawMeshTasksIndirectCountNV              = cast( PFN_vkCmdDrawMeshTasksIndirectCountNV              ) vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectCountNV" );
1623 
1624     // VK_NV_scissor_exclusive
1625     vkCmdSetExclusiveScissorNV                     = cast( PFN_vkCmdSetExclusiveScissorNV                     ) vkGetDeviceProcAddr( device, "vkCmdSetExclusiveScissorNV" );
1626 
1627     // VK_NV_device_diagnostic_checkpoints
1628     vkCmdSetCheckpointNV                           = cast( PFN_vkCmdSetCheckpointNV                           ) vkGetDeviceProcAddr( device, "vkCmdSetCheckpointNV" );
1629     vkGetQueueCheckpointDataNV                     = cast( PFN_vkGetQueueCheckpointDataNV                     ) vkGetDeviceProcAddr( device, "vkGetQueueCheckpointDataNV" );
1630 
1631     // VK_INTEL_performance_query
1632     vkInitializePerformanceApiINTEL                = cast( PFN_vkInitializePerformanceApiINTEL                ) vkGetDeviceProcAddr( device, "vkInitializePerformanceApiINTEL" );
1633     vkUninitializePerformanceApiINTEL              = cast( PFN_vkUninitializePerformanceApiINTEL              ) vkGetDeviceProcAddr( device, "vkUninitializePerformanceApiINTEL" );
1634     vkCmdSetPerformanceMarkerINTEL                 = cast( PFN_vkCmdSetPerformanceMarkerINTEL                 ) vkGetDeviceProcAddr( device, "vkCmdSetPerformanceMarkerINTEL" );
1635     vkCmdSetPerformanceStreamMarkerINTEL           = cast( PFN_vkCmdSetPerformanceStreamMarkerINTEL           ) vkGetDeviceProcAddr( device, "vkCmdSetPerformanceStreamMarkerINTEL" );
1636     vkCmdSetPerformanceOverrideINTEL               = cast( PFN_vkCmdSetPerformanceOverrideINTEL               ) vkGetDeviceProcAddr( device, "vkCmdSetPerformanceOverrideINTEL" );
1637     vkAcquirePerformanceConfigurationINTEL         = cast( PFN_vkAcquirePerformanceConfigurationINTEL         ) vkGetDeviceProcAddr( device, "vkAcquirePerformanceConfigurationINTEL" );
1638     vkReleasePerformanceConfigurationINTEL         = cast( PFN_vkReleasePerformanceConfigurationINTEL         ) vkGetDeviceProcAddr( device, "vkReleasePerformanceConfigurationINTEL" );
1639     vkQueueSetPerformanceConfigurationINTEL        = cast( PFN_vkQueueSetPerformanceConfigurationINTEL        ) vkGetDeviceProcAddr( device, "vkQueueSetPerformanceConfigurationINTEL" );
1640     vkGetPerformanceParameterINTEL                 = cast( PFN_vkGetPerformanceParameterINTEL                 ) vkGetDeviceProcAddr( device, "vkGetPerformanceParameterINTEL" );
1641 
1642     // VK_AMD_display_native_hdr
1643     vkSetLocalDimmingAMD                           = cast( PFN_vkSetLocalDimmingAMD                           ) vkGetDeviceProcAddr( device, "vkSetLocalDimmingAMD" );
1644 
1645     // VK_EXT_buffer_device_address
1646     vkGetBufferDeviceAddressEXT                    = cast( PFN_vkGetBufferDeviceAddressEXT                    ) vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddressEXT" );
1647 
1648     // VK_EXT_host_query_reset
1649     vkResetQueryPoolEXT                            = cast( PFN_vkResetQueryPoolEXT                            ) vkGetDeviceProcAddr( device, "vkResetQueryPoolEXT" );
1650 }
1651