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_device_group
218     alias PFN_vkGetDeviceGroupSurfacePresentModes2EXT            = VkResult  function( VkDevice device, const( VkPhysicalDeviceSurfaceInfo2KHR )* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes );
219 
220     // VK_KHR_external_memory_fd
221     alias PFN_vkGetMemoryFdKHR                                   = VkResult  function( VkDevice device, const( VkMemoryGetFdInfoKHR )* pGetFdInfo, int* pFd );
222     alias PFN_vkGetMemoryFdPropertiesKHR                         = VkResult  function( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties );
223 
224     // VK_KHR_external_semaphore_fd
225     alias PFN_vkImportSemaphoreFdKHR                             = VkResult  function( VkDevice device, const( VkImportSemaphoreFdInfoKHR )* pImportSemaphoreFdInfo );
226     alias PFN_vkGetSemaphoreFdKHR                                = VkResult  function( VkDevice device, const( VkSemaphoreGetFdInfoKHR )* pGetFdInfo, int* pFd );
227 
228     // VK_KHR_push_descriptor
229     alias PFN_vkCmdPushDescriptorSetKHR                          = void      function( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const( VkWriteDescriptorSet )* pDescriptorWrites );
230     alias PFN_vkCmdPushDescriptorSetWithTemplateKHR              = void      function( VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const( void )* pData );
231 
232     // VK_KHR_create_renderpass2
233     alias PFN_vkCreateRenderPass2KHR                             = VkResult  function( VkDevice device, const( VkRenderPassCreateInfo2KHR )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkRenderPass* pRenderPass );
234     alias PFN_vkCmdBeginRenderPass2KHR                           = void      function( VkCommandBuffer commandBuffer, const( VkRenderPassBeginInfo )* pRenderPassBegin, const( VkSubpassBeginInfoKHR )* pSubpassBeginInfo );
235     alias PFN_vkCmdNextSubpass2KHR                               = void      function( VkCommandBuffer commandBuffer, const( VkSubpassBeginInfoKHR )* pSubpassBeginInfo, const( VkSubpassEndInfoKHR )* pSubpassEndInfo );
236     alias PFN_vkCmdEndRenderPass2KHR                             = void      function( VkCommandBuffer commandBuffer, const( VkSubpassEndInfoKHR )* pSubpassEndInfo );
237 
238     // VK_KHR_shared_presentable_image
239     alias PFN_vkGetSwapchainStatusKHR                            = VkResult  function( VkDevice device, VkSwapchainKHR swapchain );
240 
241     // VK_KHR_external_fence_fd
242     alias PFN_vkImportFenceFdKHR                                 = VkResult  function( VkDevice device, const( VkImportFenceFdInfoKHR )* pImportFenceFdInfo );
243     alias PFN_vkGetFenceFdKHR                                    = VkResult  function( VkDevice device, const( VkFenceGetFdInfoKHR )* pGetFdInfo, int* pFd );
244 
245     // VK_KHR_get_surface_capabilities2
246     alias PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR         = VkResult  function( VkPhysicalDevice physicalDevice, const( VkPhysicalDeviceSurfaceInfo2KHR )* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities );
247     alias PFN_vkGetPhysicalDeviceSurfaceFormats2KHR              = VkResult  function( VkPhysicalDevice physicalDevice, const( VkPhysicalDeviceSurfaceInfo2KHR )* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats );
248 
249     // VK_KHR_get_display_properties2
250     alias PFN_vkGetPhysicalDeviceDisplayProperties2KHR           = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayProperties2KHR* pProperties );
251     alias PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR      = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties );
252     alias PFN_vkGetDisplayModeProperties2KHR                     = VkResult  function( VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModeProperties2KHR* pProperties );
253     alias PFN_vkGetDisplayPlaneCapabilities2KHR                  = VkResult  function( VkPhysicalDevice physicalDevice, const( VkDisplayPlaneInfo2KHR )* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities );
254 
255     // VK_KHR_draw_indirect_count
256     alias PFN_vkCmdDrawIndirectCountKHR                          = void      function( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride );
257     alias PFN_vkCmdDrawIndexedIndirectCountKHR                   = void      function( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride );
258 
259     // VK_EXT_debug_report
260     alias PFN_vkCreateDebugReportCallbackEXT                     = VkResult  function( VkInstance instance, const( VkDebugReportCallbackCreateInfoEXT )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkDebugReportCallbackEXT* pCallback );
261     alias PFN_vkDestroyDebugReportCallbackEXT                    = void      function( VkInstance instance, VkDebugReportCallbackEXT callback, const( VkAllocationCallbacks )* pAllocator );
262     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 );
263 
264     // VK_EXT_debug_marker
265     alias PFN_vkDebugMarkerSetObjectTagEXT                       = VkResult  function( VkDevice device, const( VkDebugMarkerObjectTagInfoEXT )* pTagInfo );
266     alias PFN_vkDebugMarkerSetObjectNameEXT                      = VkResult  function( VkDevice device, const( VkDebugMarkerObjectNameInfoEXT )* pNameInfo );
267     alias PFN_vkCmdDebugMarkerBeginEXT                           = void      function( VkCommandBuffer commandBuffer, const( VkDebugMarkerMarkerInfoEXT )* pMarkerInfo );
268     alias PFN_vkCmdDebugMarkerEndEXT                             = void      function( VkCommandBuffer commandBuffer );
269     alias PFN_vkCmdDebugMarkerInsertEXT                          = void      function( VkCommandBuffer commandBuffer, const( VkDebugMarkerMarkerInfoEXT )* pMarkerInfo );
270 
271     // VK_EXT_transform_feedback
272     alias PFN_vkCmdBindTransformFeedbackBuffersEXT               = void      function( VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const( VkBuffer )* pBuffers, const( VkDeviceSize )* pOffsets, const( VkDeviceSize )* pSizes );
273     alias PFN_vkCmdBeginTransformFeedbackEXT                     = void      function( VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const( VkBuffer )* pCounterBuffers, const( VkDeviceSize )* pCounterBufferOffsets );
274     alias PFN_vkCmdEndTransformFeedbackEXT                       = void      function( VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const( VkBuffer )* pCounterBuffers, const( VkDeviceSize )* pCounterBufferOffsets );
275     alias PFN_vkCmdBeginQueryIndexedEXT                          = void      function( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags, uint32_t index );
276     alias PFN_vkCmdEndQueryIndexedEXT                            = void      function( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, uint32_t index );
277     alias PFN_vkCmdDrawIndirectByteCountEXT                      = void      function( VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride );
278 
279     // VK_NVX_image_view_handle
280     alias PFN_vkGetImageViewHandleNVX                            = uint32_t  function( VkDevice device, const( VkImageViewHandleInfoNVX )* pInfo );
281 
282     // VK_AMD_draw_indirect_count
283     alias PFN_vkCmdDrawIndirectCountAMD                          = void      function( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride );
284     alias PFN_vkCmdDrawIndexedIndirectCountAMD                   = void      function( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride );
285 
286     // VK_AMD_shader_info
287     alias PFN_vkGetShaderInfoAMD                                 = VkResult  function( VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo );
288 
289     // VK_NV_external_memory_capabilities
290     alias PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = VkResult  function( VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties );
291 
292     // VK_EXT_conditional_rendering
293     alias PFN_vkCmdBeginConditionalRenderingEXT                  = void      function( VkCommandBuffer commandBuffer, const( VkConditionalRenderingBeginInfoEXT )* pConditionalRenderingBegin );
294     alias PFN_vkCmdEndConditionalRenderingEXT                    = void      function( VkCommandBuffer commandBuffer );
295 
296     // VK_NVX_device_generated_commands
297     alias PFN_vkCmdProcessCommandsNVX                            = void      function( VkCommandBuffer commandBuffer, const( VkCmdProcessCommandsInfoNVX )* pProcessCommandsInfo );
298     alias PFN_vkCmdReserveSpaceForCommandsNVX                    = void      function( VkCommandBuffer commandBuffer, const( VkCmdReserveSpaceForCommandsInfoNVX )* pReserveSpaceInfo );
299     alias PFN_vkCreateIndirectCommandsLayoutNVX                  = VkResult  function( VkDevice device, const( VkIndirectCommandsLayoutCreateInfoNVX )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout );
300     alias PFN_vkDestroyIndirectCommandsLayoutNVX                 = void      function( VkDevice device, VkIndirectCommandsLayoutNVX indirectCommandsLayout, const( VkAllocationCallbacks )* pAllocator );
301     alias PFN_vkCreateObjectTableNVX                             = VkResult  function( VkDevice device, const( VkObjectTableCreateInfoNVX )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkObjectTableNVX* pObjectTable );
302     alias PFN_vkDestroyObjectTableNVX                            = void      function( VkDevice device, VkObjectTableNVX objectTable, const( VkAllocationCallbacks )* pAllocator );
303     alias PFN_vkRegisterObjectsNVX                               = VkResult  function( VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const( VkObjectTableEntryNVX* )* ppObjectTableEntries, const( uint32_t )* pObjectIndices );
304     alias PFN_vkUnregisterObjectsNVX                             = VkResult  function( VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const( VkObjectEntryTypeNVX )* pObjectEntryTypes, const( uint32_t )* pObjectIndices );
305     alias PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX  = void      function( VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits );
306 
307     // VK_NV_clip_space_w_scaling
308     alias PFN_vkCmdSetViewportWScalingNV                         = void      function( VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const( VkViewportWScalingNV )* pViewportWScalings );
309 
310     // VK_EXT_direct_mode_display
311     alias PFN_vkReleaseDisplayEXT                                = VkResult  function( VkPhysicalDevice physicalDevice, VkDisplayKHR display );
312 
313     // VK_EXT_display_surface_counter
314     alias PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT         = VkResult  function( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities );
315 
316     // VK_EXT_display_control
317     alias PFN_vkDisplayPowerControlEXT                           = VkResult  function( VkDevice device, VkDisplayKHR display, const( VkDisplayPowerInfoEXT )* pDisplayPowerInfo );
318     alias PFN_vkRegisterDeviceEventEXT                           = VkResult  function( VkDevice device, const( VkDeviceEventInfoEXT )* pDeviceEventInfo, const( VkAllocationCallbacks )* pAllocator, VkFence* pFence );
319     alias PFN_vkRegisterDisplayEventEXT                          = VkResult  function( VkDevice device, VkDisplayKHR display, const( VkDisplayEventInfoEXT )* pDisplayEventInfo, const( VkAllocationCallbacks )* pAllocator, VkFence* pFence );
320     alias PFN_vkGetSwapchainCounterEXT                           = VkResult  function( VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue );
321 
322     // VK_GOOGLE_display_timing
323     alias PFN_vkGetRefreshCycleDurationGOOGLE                    = VkResult  function( VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties );
324     alias PFN_vkGetPastPresentationTimingGOOGLE                  = VkResult  function( VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings );
325 
326     // VK_EXT_discard_rectangles
327     alias PFN_vkCmdSetDiscardRectangleEXT                        = void      function( VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const( VkRect2D )* pDiscardRectangles );
328 
329     // VK_EXT_hdr_metadata
330     alias PFN_vkSetHdrMetadataEXT                                = void      function( VkDevice device, uint32_t swapchainCount, const( VkSwapchainKHR )* pSwapchains, const( VkHdrMetadataEXT )* pMetadata );
331 
332     // VK_EXT_debug_utils
333     alias PFN_vkSetDebugUtilsObjectNameEXT                       = VkResult  function( VkDevice device, const( VkDebugUtilsObjectNameInfoEXT )* pNameInfo );
334     alias PFN_vkSetDebugUtilsObjectTagEXT                        = VkResult  function( VkDevice device, const( VkDebugUtilsObjectTagInfoEXT )* pTagInfo );
335     alias PFN_vkQueueBeginDebugUtilsLabelEXT                     = void      function( VkQueue queue, const( VkDebugUtilsLabelEXT )* pLabelInfo );
336     alias PFN_vkQueueEndDebugUtilsLabelEXT                       = void      function( VkQueue queue );
337     alias PFN_vkQueueInsertDebugUtilsLabelEXT                    = void      function( VkQueue queue, const( VkDebugUtilsLabelEXT )* pLabelInfo );
338     alias PFN_vkCmdBeginDebugUtilsLabelEXT                       = void      function( VkCommandBuffer commandBuffer, const( VkDebugUtilsLabelEXT )* pLabelInfo );
339     alias PFN_vkCmdEndDebugUtilsLabelEXT                         = void      function( VkCommandBuffer commandBuffer );
340     alias PFN_vkCmdInsertDebugUtilsLabelEXT                      = void      function( VkCommandBuffer commandBuffer, const( VkDebugUtilsLabelEXT )* pLabelInfo );
341     alias PFN_vkCreateDebugUtilsMessengerEXT                     = VkResult  function( VkInstance instance, const( VkDebugUtilsMessengerCreateInfoEXT )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkDebugUtilsMessengerEXT* pMessenger );
342     alias PFN_vkDestroyDebugUtilsMessengerEXT                    = void      function( VkInstance instance, VkDebugUtilsMessengerEXT messenger, const( VkAllocationCallbacks )* pAllocator );
343     alias PFN_vkSubmitDebugUtilsMessageEXT                       = void      function( VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const( VkDebugUtilsMessengerCallbackDataEXT )* pCallbackData );
344 
345     // VK_EXT_sample_locations
346     alias PFN_vkCmdSetSampleLocationsEXT                         = void      function( VkCommandBuffer commandBuffer, const( VkSampleLocationsInfoEXT )* pSampleLocationsInfo );
347     alias PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT        = void      function( VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties );
348 
349     // VK_EXT_image_drm_format_modifier
350     alias PFN_vkGetImageDrmFormatModifierPropertiesEXT           = VkResult  function( VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties );
351 
352     // VK_EXT_validation_cache
353     alias PFN_vkCreateValidationCacheEXT                         = VkResult  function( VkDevice device, const( VkValidationCacheCreateInfoEXT )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkValidationCacheEXT* pValidationCache );
354     alias PFN_vkDestroyValidationCacheEXT                        = void      function( VkDevice device, VkValidationCacheEXT validationCache, const( VkAllocationCallbacks )* pAllocator );
355     alias PFN_vkMergeValidationCachesEXT                         = VkResult  function( VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const( VkValidationCacheEXT )* pSrcCaches );
356     alias PFN_vkGetValidationCacheDataEXT                        = VkResult  function( VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData );
357 
358     // VK_NV_shading_rate_image
359     alias PFN_vkCmdBindShadingRateImageNV                        = void      function( VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout );
360     alias PFN_vkCmdSetViewportShadingRatePaletteNV               = void      function( VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const( VkShadingRatePaletteNV )* pShadingRatePalettes );
361     alias PFN_vkCmdSetCoarseSampleOrderNV                        = void      function( VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, const( VkCoarseSampleOrderCustomNV )* pCustomSampleOrders );
362 
363     // VK_NV_ray_tracing
364     alias PFN_vkCreateAccelerationStructureNV                    = VkResult  function( VkDevice device, const( VkAccelerationStructureCreateInfoNV )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkAccelerationStructureNV* pAccelerationStructure );
365     alias PFN_vkDestroyAccelerationStructureNV                   = void      function( VkDevice device, VkAccelerationStructureNV accelerationStructure, const( VkAllocationCallbacks )* pAllocator );
366     alias PFN_vkGetAccelerationStructureMemoryRequirementsNV     = void      function( VkDevice device, const( VkAccelerationStructureMemoryRequirementsInfoNV )* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements );
367     alias PFN_vkBindAccelerationStructureMemoryNV                = VkResult  function( VkDevice device, uint32_t bindInfoCount, const( VkBindAccelerationStructureMemoryInfoNV )* pBindInfos );
368     alias PFN_vkCmdBuildAccelerationStructureNV                  = void      function( VkCommandBuffer commandBuffer, const( VkAccelerationStructureInfoNV )* pInfo, VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch, VkDeviceSize scratchOffset );
369     alias PFN_vkCmdCopyAccelerationStructureNV                   = void      function( VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkCopyAccelerationStructureModeNV mode );
370     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 );
371     alias PFN_vkCreateRayTracingPipelinesNV                      = VkResult  function( VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const( VkRayTracingPipelineCreateInfoNV )* pCreateInfos, const( VkAllocationCallbacks )* pAllocator, VkPipeline* pPipelines );
372     alias PFN_vkGetRayTracingShaderGroupHandlesNV                = VkResult  function( VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData );
373     alias PFN_vkGetAccelerationStructureHandleNV                 = VkResult  function( VkDevice device, VkAccelerationStructureNV accelerationStructure, size_t dataSize, void* pData );
374     alias PFN_vkCmdWriteAccelerationStructuresPropertiesNV       = void      function( VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const( VkAccelerationStructureNV )* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery );
375     alias PFN_vkCompileDeferredNV                                = VkResult  function( VkDevice device, VkPipeline pipeline, uint32_t shader );
376 
377     // VK_EXT_external_memory_host
378     alias PFN_vkGetMemoryHostPointerPropertiesEXT                = VkResult  function( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const( void )* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties );
379 
380     // VK_AMD_buffer_marker
381     alias PFN_vkCmdWriteBufferMarkerAMD                          = void      function( VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker );
382 
383     // VK_EXT_calibrated_timestamps
384     alias PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT     = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains );
385     alias PFN_vkGetCalibratedTimestampsEXT                       = VkResult  function( VkDevice device, uint32_t timestampCount, const( VkCalibratedTimestampInfoEXT )* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation );
386 
387     // VK_NV_mesh_shader
388     alias PFN_vkCmdDrawMeshTasksNV                               = void      function( VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask );
389     alias PFN_vkCmdDrawMeshTasksIndirectNV                       = void      function( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride );
390     alias PFN_vkCmdDrawMeshTasksIndirectCountNV                  = void      function( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride );
391 
392     // VK_NV_scissor_exclusive
393     alias PFN_vkCmdSetExclusiveScissorNV                         = void      function( VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const( VkRect2D )* pExclusiveScissors );
394 
395     // VK_NV_device_diagnostic_checkpoints
396     alias PFN_vkCmdSetCheckpointNV                               = void      function( VkCommandBuffer commandBuffer, const( void )* pCheckpointMarker );
397     alias PFN_vkGetQueueCheckpointDataNV                         = void      function( VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData );
398 
399     // VK_AMD_display_native_hdr
400     alias PFN_vkSetLocalDimmingAMD                               = void      function( VkSwapchainKHR swapChain, VkBool32 localDimmingEnable );
401 
402     // VK_EXT_buffer_device_address
403     alias PFN_vkGetBufferDeviceAddressEXT                        = VkDeviceAddress  function( VkDevice device, const( VkBufferDeviceAddressInfoEXT )* pInfo );
404 
405     // VK_NV_cooperative_matrix
406     alias PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV   = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties );
407 
408     // VK_EXT_host_query_reset
409     alias PFN_vkResetQueryPoolEXT                                = void      function( VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount );
410 }
411 
412 
413 /// function declarations
414 __gshared {
415 
416     // VK_VERSION_1_0
417     PFN_vkCreateInstance                                   vkCreateInstance;
418     PFN_vkDestroyInstance                                  vkDestroyInstance;
419     PFN_vkEnumeratePhysicalDevices                         vkEnumeratePhysicalDevices;
420     PFN_vkGetPhysicalDeviceFeatures                        vkGetPhysicalDeviceFeatures;
421     PFN_vkGetPhysicalDeviceFormatProperties                vkGetPhysicalDeviceFormatProperties;
422     PFN_vkGetPhysicalDeviceImageFormatProperties           vkGetPhysicalDeviceImageFormatProperties;
423     PFN_vkGetPhysicalDeviceProperties                      vkGetPhysicalDeviceProperties;
424     PFN_vkGetPhysicalDeviceQueueFamilyProperties           vkGetPhysicalDeviceQueueFamilyProperties;
425     PFN_vkGetPhysicalDeviceMemoryProperties                vkGetPhysicalDeviceMemoryProperties;
426     PFN_vkGetInstanceProcAddr                              vkGetInstanceProcAddr;
427     PFN_vkGetDeviceProcAddr                                vkGetDeviceProcAddr;
428     PFN_vkCreateDevice                                     vkCreateDevice;
429     PFN_vkDestroyDevice                                    vkDestroyDevice;
430     PFN_vkEnumerateInstanceExtensionProperties             vkEnumerateInstanceExtensionProperties;
431     PFN_vkEnumerateDeviceExtensionProperties               vkEnumerateDeviceExtensionProperties;
432     PFN_vkEnumerateInstanceLayerProperties                 vkEnumerateInstanceLayerProperties;
433     PFN_vkEnumerateDeviceLayerProperties                   vkEnumerateDeviceLayerProperties;
434     PFN_vkGetDeviceQueue                                   vkGetDeviceQueue;
435     PFN_vkQueueSubmit                                      vkQueueSubmit;
436     PFN_vkQueueWaitIdle                                    vkQueueWaitIdle;
437     PFN_vkDeviceWaitIdle                                   vkDeviceWaitIdle;
438     PFN_vkAllocateMemory                                   vkAllocateMemory;
439     PFN_vkFreeMemory                                       vkFreeMemory;
440     PFN_vkMapMemory                                        vkMapMemory;
441     PFN_vkUnmapMemory                                      vkUnmapMemory;
442     PFN_vkFlushMappedMemoryRanges                          vkFlushMappedMemoryRanges;
443     PFN_vkInvalidateMappedMemoryRanges                     vkInvalidateMappedMemoryRanges;
444     PFN_vkGetDeviceMemoryCommitment                        vkGetDeviceMemoryCommitment;
445     PFN_vkBindBufferMemory                                 vkBindBufferMemory;
446     PFN_vkBindImageMemory                                  vkBindImageMemory;
447     PFN_vkGetBufferMemoryRequirements                      vkGetBufferMemoryRequirements;
448     PFN_vkGetImageMemoryRequirements                       vkGetImageMemoryRequirements;
449     PFN_vkGetImageSparseMemoryRequirements                 vkGetImageSparseMemoryRequirements;
450     PFN_vkGetPhysicalDeviceSparseImageFormatProperties     vkGetPhysicalDeviceSparseImageFormatProperties;
451     PFN_vkQueueBindSparse                                  vkQueueBindSparse;
452     PFN_vkCreateFence                                      vkCreateFence;
453     PFN_vkDestroyFence                                     vkDestroyFence;
454     PFN_vkResetFences                                      vkResetFences;
455     PFN_vkGetFenceStatus                                   vkGetFenceStatus;
456     PFN_vkWaitForFences                                    vkWaitForFences;
457     PFN_vkCreateSemaphore                                  vkCreateSemaphore;
458     PFN_vkDestroySemaphore                                 vkDestroySemaphore;
459     PFN_vkCreateEvent                                      vkCreateEvent;
460     PFN_vkDestroyEvent                                     vkDestroyEvent;
461     PFN_vkGetEventStatus                                   vkGetEventStatus;
462     PFN_vkSetEvent                                         vkSetEvent;
463     PFN_vkResetEvent                                       vkResetEvent;
464     PFN_vkCreateQueryPool                                  vkCreateQueryPool;
465     PFN_vkDestroyQueryPool                                 vkDestroyQueryPool;
466     PFN_vkGetQueryPoolResults                              vkGetQueryPoolResults;
467     PFN_vkCreateBuffer                                     vkCreateBuffer;
468     PFN_vkDestroyBuffer                                    vkDestroyBuffer;
469     PFN_vkCreateBufferView                                 vkCreateBufferView;
470     PFN_vkDestroyBufferView                                vkDestroyBufferView;
471     PFN_vkCreateImage                                      vkCreateImage;
472     PFN_vkDestroyImage                                     vkDestroyImage;
473     PFN_vkGetImageSubresourceLayout                        vkGetImageSubresourceLayout;
474     PFN_vkCreateImageView                                  vkCreateImageView;
475     PFN_vkDestroyImageView                                 vkDestroyImageView;
476     PFN_vkCreateShaderModule                               vkCreateShaderModule;
477     PFN_vkDestroyShaderModule                              vkDestroyShaderModule;
478     PFN_vkCreatePipelineCache                              vkCreatePipelineCache;
479     PFN_vkDestroyPipelineCache                             vkDestroyPipelineCache;
480     PFN_vkGetPipelineCacheData                             vkGetPipelineCacheData;
481     PFN_vkMergePipelineCaches                              vkMergePipelineCaches;
482     PFN_vkCreateGraphicsPipelines                          vkCreateGraphicsPipelines;
483     PFN_vkCreateComputePipelines                           vkCreateComputePipelines;
484     PFN_vkDestroyPipeline                                  vkDestroyPipeline;
485     PFN_vkCreatePipelineLayout                             vkCreatePipelineLayout;
486     PFN_vkDestroyPipelineLayout                            vkDestroyPipelineLayout;
487     PFN_vkCreateSampler                                    vkCreateSampler;
488     PFN_vkDestroySampler                                   vkDestroySampler;
489     PFN_vkCreateDescriptorSetLayout                        vkCreateDescriptorSetLayout;
490     PFN_vkDestroyDescriptorSetLayout                       vkDestroyDescriptorSetLayout;
491     PFN_vkCreateDescriptorPool                             vkCreateDescriptorPool;
492     PFN_vkDestroyDescriptorPool                            vkDestroyDescriptorPool;
493     PFN_vkResetDescriptorPool                              vkResetDescriptorPool;
494     PFN_vkAllocateDescriptorSets                           vkAllocateDescriptorSets;
495     PFN_vkFreeDescriptorSets                               vkFreeDescriptorSets;
496     PFN_vkUpdateDescriptorSets                             vkUpdateDescriptorSets;
497     PFN_vkCreateFramebuffer                                vkCreateFramebuffer;
498     PFN_vkDestroyFramebuffer                               vkDestroyFramebuffer;
499     PFN_vkCreateRenderPass                                 vkCreateRenderPass;
500     PFN_vkDestroyRenderPass                                vkDestroyRenderPass;
501     PFN_vkGetRenderAreaGranularity                         vkGetRenderAreaGranularity;
502     PFN_vkCreateCommandPool                                vkCreateCommandPool;
503     PFN_vkDestroyCommandPool                               vkDestroyCommandPool;
504     PFN_vkResetCommandPool                                 vkResetCommandPool;
505     PFN_vkAllocateCommandBuffers                           vkAllocateCommandBuffers;
506     PFN_vkFreeCommandBuffers                               vkFreeCommandBuffers;
507     PFN_vkBeginCommandBuffer                               vkBeginCommandBuffer;
508     PFN_vkEndCommandBuffer                                 vkEndCommandBuffer;
509     PFN_vkResetCommandBuffer                               vkResetCommandBuffer;
510     PFN_vkCmdBindPipeline                                  vkCmdBindPipeline;
511     PFN_vkCmdSetViewport                                   vkCmdSetViewport;
512     PFN_vkCmdSetScissor                                    vkCmdSetScissor;
513     PFN_vkCmdSetLineWidth                                  vkCmdSetLineWidth;
514     PFN_vkCmdSetDepthBias                                  vkCmdSetDepthBias;
515     PFN_vkCmdSetBlendConstants                             vkCmdSetBlendConstants;
516     PFN_vkCmdSetDepthBounds                                vkCmdSetDepthBounds;
517     PFN_vkCmdSetStencilCompareMask                         vkCmdSetStencilCompareMask;
518     PFN_vkCmdSetStencilWriteMask                           vkCmdSetStencilWriteMask;
519     PFN_vkCmdSetStencilReference                           vkCmdSetStencilReference;
520     PFN_vkCmdBindDescriptorSets                            vkCmdBindDescriptorSets;
521     PFN_vkCmdBindIndexBuffer                               vkCmdBindIndexBuffer;
522     PFN_vkCmdBindVertexBuffers                             vkCmdBindVertexBuffers;
523     PFN_vkCmdDraw                                          vkCmdDraw;
524     PFN_vkCmdDrawIndexed                                   vkCmdDrawIndexed;
525     PFN_vkCmdDrawIndirect                                  vkCmdDrawIndirect;
526     PFN_vkCmdDrawIndexedIndirect                           vkCmdDrawIndexedIndirect;
527     PFN_vkCmdDispatch                                      vkCmdDispatch;
528     PFN_vkCmdDispatchIndirect                              vkCmdDispatchIndirect;
529     PFN_vkCmdCopyBuffer                                    vkCmdCopyBuffer;
530     PFN_vkCmdCopyImage                                     vkCmdCopyImage;
531     PFN_vkCmdBlitImage                                     vkCmdBlitImage;
532     PFN_vkCmdCopyBufferToImage                             vkCmdCopyBufferToImage;
533     PFN_vkCmdCopyImageToBuffer                             vkCmdCopyImageToBuffer;
534     PFN_vkCmdUpdateBuffer                                  vkCmdUpdateBuffer;
535     PFN_vkCmdFillBuffer                                    vkCmdFillBuffer;
536     PFN_vkCmdClearColorImage                               vkCmdClearColorImage;
537     PFN_vkCmdClearDepthStencilImage                        vkCmdClearDepthStencilImage;
538     PFN_vkCmdClearAttachments                              vkCmdClearAttachments;
539     PFN_vkCmdResolveImage                                  vkCmdResolveImage;
540     PFN_vkCmdSetEvent                                      vkCmdSetEvent;
541     PFN_vkCmdResetEvent                                    vkCmdResetEvent;
542     PFN_vkCmdWaitEvents                                    vkCmdWaitEvents;
543     PFN_vkCmdPipelineBarrier                               vkCmdPipelineBarrier;
544     PFN_vkCmdBeginQuery                                    vkCmdBeginQuery;
545     PFN_vkCmdEndQuery                                      vkCmdEndQuery;
546     PFN_vkCmdResetQueryPool                                vkCmdResetQueryPool;
547     PFN_vkCmdWriteTimestamp                                vkCmdWriteTimestamp;
548     PFN_vkCmdCopyQueryPoolResults                          vkCmdCopyQueryPoolResults;
549     PFN_vkCmdPushConstants                                 vkCmdPushConstants;
550     PFN_vkCmdBeginRenderPass                               vkCmdBeginRenderPass;
551     PFN_vkCmdNextSubpass                                   vkCmdNextSubpass;
552     PFN_vkCmdEndRenderPass                                 vkCmdEndRenderPass;
553     PFN_vkCmdExecuteCommands                               vkCmdExecuteCommands;
554 
555     // VK_VERSION_1_1
556     PFN_vkEnumerateInstanceVersion                         vkEnumerateInstanceVersion;
557     PFN_vkBindBufferMemory2                                vkBindBufferMemory2;
558     PFN_vkBindImageMemory2                                 vkBindImageMemory2;
559     PFN_vkGetDeviceGroupPeerMemoryFeatures                 vkGetDeviceGroupPeerMemoryFeatures;
560     PFN_vkCmdSetDeviceMask                                 vkCmdSetDeviceMask;
561     PFN_vkCmdDispatchBase                                  vkCmdDispatchBase;
562     PFN_vkEnumeratePhysicalDeviceGroups                    vkEnumeratePhysicalDeviceGroups;
563     PFN_vkGetImageMemoryRequirements2                      vkGetImageMemoryRequirements2;
564     PFN_vkGetBufferMemoryRequirements2                     vkGetBufferMemoryRequirements2;
565     PFN_vkGetImageSparseMemoryRequirements2                vkGetImageSparseMemoryRequirements2;
566     PFN_vkGetPhysicalDeviceFeatures2                       vkGetPhysicalDeviceFeatures2;
567     PFN_vkGetPhysicalDeviceProperties2                     vkGetPhysicalDeviceProperties2;
568     PFN_vkGetPhysicalDeviceFormatProperties2               vkGetPhysicalDeviceFormatProperties2;
569     PFN_vkGetPhysicalDeviceImageFormatProperties2          vkGetPhysicalDeviceImageFormatProperties2;
570     PFN_vkGetPhysicalDeviceQueueFamilyProperties2          vkGetPhysicalDeviceQueueFamilyProperties2;
571     PFN_vkGetPhysicalDeviceMemoryProperties2               vkGetPhysicalDeviceMemoryProperties2;
572     PFN_vkGetPhysicalDeviceSparseImageFormatProperties2    vkGetPhysicalDeviceSparseImageFormatProperties2;
573     PFN_vkTrimCommandPool                                  vkTrimCommandPool;
574     PFN_vkGetDeviceQueue2                                  vkGetDeviceQueue2;
575     PFN_vkCreateSamplerYcbcrConversion                     vkCreateSamplerYcbcrConversion;
576     PFN_vkDestroySamplerYcbcrConversion                    vkDestroySamplerYcbcrConversion;
577     PFN_vkCreateDescriptorUpdateTemplate                   vkCreateDescriptorUpdateTemplate;
578     PFN_vkDestroyDescriptorUpdateTemplate                  vkDestroyDescriptorUpdateTemplate;
579     PFN_vkUpdateDescriptorSetWithTemplate                  vkUpdateDescriptorSetWithTemplate;
580     PFN_vkGetPhysicalDeviceExternalBufferProperties        vkGetPhysicalDeviceExternalBufferProperties;
581     PFN_vkGetPhysicalDeviceExternalFenceProperties         vkGetPhysicalDeviceExternalFenceProperties;
582     PFN_vkGetPhysicalDeviceExternalSemaphoreProperties     vkGetPhysicalDeviceExternalSemaphoreProperties;
583     PFN_vkGetDescriptorSetLayoutSupport                    vkGetDescriptorSetLayoutSupport;
584 
585     // VK_KHR_surface
586     PFN_vkDestroySurfaceKHR                                vkDestroySurfaceKHR;
587     PFN_vkGetPhysicalDeviceSurfaceSupportKHR               vkGetPhysicalDeviceSurfaceSupportKHR;
588     PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR          vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
589     PFN_vkGetPhysicalDeviceSurfaceFormatsKHR               vkGetPhysicalDeviceSurfaceFormatsKHR;
590     PFN_vkGetPhysicalDeviceSurfacePresentModesKHR          vkGetPhysicalDeviceSurfacePresentModesKHR;
591 
592     // VK_KHR_swapchain
593     PFN_vkCreateSwapchainKHR                               vkCreateSwapchainKHR;
594     PFN_vkDestroySwapchainKHR                              vkDestroySwapchainKHR;
595     PFN_vkGetSwapchainImagesKHR                            vkGetSwapchainImagesKHR;
596     PFN_vkAcquireNextImageKHR                              vkAcquireNextImageKHR;
597     PFN_vkQueuePresentKHR                                  vkQueuePresentKHR;
598     PFN_vkGetDeviceGroupPresentCapabilitiesKHR             vkGetDeviceGroupPresentCapabilitiesKHR;
599     PFN_vkGetDeviceGroupSurfacePresentModesKHR             vkGetDeviceGroupSurfacePresentModesKHR;
600     PFN_vkGetPhysicalDevicePresentRectanglesKHR            vkGetPhysicalDevicePresentRectanglesKHR;
601     PFN_vkAcquireNextImage2KHR                             vkAcquireNextImage2KHR;
602 
603     // VK_KHR_display
604     PFN_vkGetPhysicalDeviceDisplayPropertiesKHR            vkGetPhysicalDeviceDisplayPropertiesKHR;
605     PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR       vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
606     PFN_vkGetDisplayPlaneSupportedDisplaysKHR              vkGetDisplayPlaneSupportedDisplaysKHR;
607     PFN_vkGetDisplayModePropertiesKHR                      vkGetDisplayModePropertiesKHR;
608     PFN_vkCreateDisplayModeKHR                             vkCreateDisplayModeKHR;
609     PFN_vkGetDisplayPlaneCapabilitiesKHR                   vkGetDisplayPlaneCapabilitiesKHR;
610     PFN_vkCreateDisplayPlaneSurfaceKHR                     vkCreateDisplayPlaneSurfaceKHR;
611 
612     // VK_KHR_display_swapchain
613     PFN_vkCreateSharedSwapchainsKHR                        vkCreateSharedSwapchainsKHR;
614 
615     // VK_KHR_device_group
616     PFN_vkGetDeviceGroupSurfacePresentModes2EXT            vkGetDeviceGroupSurfacePresentModes2EXT;
617 
618     // VK_KHR_external_memory_fd
619     PFN_vkGetMemoryFdKHR                                   vkGetMemoryFdKHR;
620     PFN_vkGetMemoryFdPropertiesKHR                         vkGetMemoryFdPropertiesKHR;
621 
622     // VK_KHR_external_semaphore_fd
623     PFN_vkImportSemaphoreFdKHR                             vkImportSemaphoreFdKHR;
624     PFN_vkGetSemaphoreFdKHR                                vkGetSemaphoreFdKHR;
625 
626     // VK_KHR_push_descriptor
627     PFN_vkCmdPushDescriptorSetKHR                          vkCmdPushDescriptorSetKHR;
628     PFN_vkCmdPushDescriptorSetWithTemplateKHR              vkCmdPushDescriptorSetWithTemplateKHR;
629 
630     // VK_KHR_create_renderpass2
631     PFN_vkCreateRenderPass2KHR                             vkCreateRenderPass2KHR;
632     PFN_vkCmdBeginRenderPass2KHR                           vkCmdBeginRenderPass2KHR;
633     PFN_vkCmdNextSubpass2KHR                               vkCmdNextSubpass2KHR;
634     PFN_vkCmdEndRenderPass2KHR                             vkCmdEndRenderPass2KHR;
635 
636     // VK_KHR_shared_presentable_image
637     PFN_vkGetSwapchainStatusKHR                            vkGetSwapchainStatusKHR;
638 
639     // VK_KHR_external_fence_fd
640     PFN_vkImportFenceFdKHR                                 vkImportFenceFdKHR;
641     PFN_vkGetFenceFdKHR                                    vkGetFenceFdKHR;
642 
643     // VK_KHR_get_surface_capabilities2
644     PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR         vkGetPhysicalDeviceSurfaceCapabilities2KHR;
645     PFN_vkGetPhysicalDeviceSurfaceFormats2KHR              vkGetPhysicalDeviceSurfaceFormats2KHR;
646 
647     // VK_KHR_get_display_properties2
648     PFN_vkGetPhysicalDeviceDisplayProperties2KHR           vkGetPhysicalDeviceDisplayProperties2KHR;
649     PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR      vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
650     PFN_vkGetDisplayModeProperties2KHR                     vkGetDisplayModeProperties2KHR;
651     PFN_vkGetDisplayPlaneCapabilities2KHR                  vkGetDisplayPlaneCapabilities2KHR;
652 
653     // VK_KHR_draw_indirect_count
654     PFN_vkCmdDrawIndirectCountKHR                          vkCmdDrawIndirectCountKHR;
655     PFN_vkCmdDrawIndexedIndirectCountKHR                   vkCmdDrawIndexedIndirectCountKHR;
656 
657     // VK_EXT_debug_report
658     PFN_vkCreateDebugReportCallbackEXT                     vkCreateDebugReportCallbackEXT;
659     PFN_vkDestroyDebugReportCallbackEXT                    vkDestroyDebugReportCallbackEXT;
660     PFN_vkDebugReportMessageEXT                            vkDebugReportMessageEXT;
661 
662     // VK_EXT_debug_marker
663     PFN_vkDebugMarkerSetObjectTagEXT                       vkDebugMarkerSetObjectTagEXT;
664     PFN_vkDebugMarkerSetObjectNameEXT                      vkDebugMarkerSetObjectNameEXT;
665     PFN_vkCmdDebugMarkerBeginEXT                           vkCmdDebugMarkerBeginEXT;
666     PFN_vkCmdDebugMarkerEndEXT                             vkCmdDebugMarkerEndEXT;
667     PFN_vkCmdDebugMarkerInsertEXT                          vkCmdDebugMarkerInsertEXT;
668 
669     // VK_EXT_transform_feedback
670     PFN_vkCmdBindTransformFeedbackBuffersEXT               vkCmdBindTransformFeedbackBuffersEXT;
671     PFN_vkCmdBeginTransformFeedbackEXT                     vkCmdBeginTransformFeedbackEXT;
672     PFN_vkCmdEndTransformFeedbackEXT                       vkCmdEndTransformFeedbackEXT;
673     PFN_vkCmdBeginQueryIndexedEXT                          vkCmdBeginQueryIndexedEXT;
674     PFN_vkCmdEndQueryIndexedEXT                            vkCmdEndQueryIndexedEXT;
675     PFN_vkCmdDrawIndirectByteCountEXT                      vkCmdDrawIndirectByteCountEXT;
676 
677     // VK_NVX_image_view_handle
678     PFN_vkGetImageViewHandleNVX                            vkGetImageViewHandleNVX;
679 
680     // VK_AMD_draw_indirect_count
681     PFN_vkCmdDrawIndirectCountAMD                          vkCmdDrawIndirectCountAMD;
682     PFN_vkCmdDrawIndexedIndirectCountAMD                   vkCmdDrawIndexedIndirectCountAMD;
683 
684     // VK_AMD_shader_info
685     PFN_vkGetShaderInfoAMD                                 vkGetShaderInfoAMD;
686 
687     // VK_NV_external_memory_capabilities
688     PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
689 
690     // VK_EXT_conditional_rendering
691     PFN_vkCmdBeginConditionalRenderingEXT                  vkCmdBeginConditionalRenderingEXT;
692     PFN_vkCmdEndConditionalRenderingEXT                    vkCmdEndConditionalRenderingEXT;
693 
694     // VK_NVX_device_generated_commands
695     PFN_vkCmdProcessCommandsNVX                            vkCmdProcessCommandsNVX;
696     PFN_vkCmdReserveSpaceForCommandsNVX                    vkCmdReserveSpaceForCommandsNVX;
697     PFN_vkCreateIndirectCommandsLayoutNVX                  vkCreateIndirectCommandsLayoutNVX;
698     PFN_vkDestroyIndirectCommandsLayoutNVX                 vkDestroyIndirectCommandsLayoutNVX;
699     PFN_vkCreateObjectTableNVX                             vkCreateObjectTableNVX;
700     PFN_vkDestroyObjectTableNVX                            vkDestroyObjectTableNVX;
701     PFN_vkRegisterObjectsNVX                               vkRegisterObjectsNVX;
702     PFN_vkUnregisterObjectsNVX                             vkUnregisterObjectsNVX;
703     PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX  vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX;
704 
705     // VK_NV_clip_space_w_scaling
706     PFN_vkCmdSetViewportWScalingNV                         vkCmdSetViewportWScalingNV;
707 
708     // VK_EXT_direct_mode_display
709     PFN_vkReleaseDisplayEXT                                vkReleaseDisplayEXT;
710 
711     // VK_EXT_display_surface_counter
712     PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT         vkGetPhysicalDeviceSurfaceCapabilities2EXT;
713 
714     // VK_EXT_display_control
715     PFN_vkDisplayPowerControlEXT                           vkDisplayPowerControlEXT;
716     PFN_vkRegisterDeviceEventEXT                           vkRegisterDeviceEventEXT;
717     PFN_vkRegisterDisplayEventEXT                          vkRegisterDisplayEventEXT;
718     PFN_vkGetSwapchainCounterEXT                           vkGetSwapchainCounterEXT;
719 
720     // VK_GOOGLE_display_timing
721     PFN_vkGetRefreshCycleDurationGOOGLE                    vkGetRefreshCycleDurationGOOGLE;
722     PFN_vkGetPastPresentationTimingGOOGLE                  vkGetPastPresentationTimingGOOGLE;
723 
724     // VK_EXT_discard_rectangles
725     PFN_vkCmdSetDiscardRectangleEXT                        vkCmdSetDiscardRectangleEXT;
726 
727     // VK_EXT_hdr_metadata
728     PFN_vkSetHdrMetadataEXT                                vkSetHdrMetadataEXT;
729 
730     // VK_EXT_debug_utils
731     PFN_vkSetDebugUtilsObjectNameEXT                       vkSetDebugUtilsObjectNameEXT;
732     PFN_vkSetDebugUtilsObjectTagEXT                        vkSetDebugUtilsObjectTagEXT;
733     PFN_vkQueueBeginDebugUtilsLabelEXT                     vkQueueBeginDebugUtilsLabelEXT;
734     PFN_vkQueueEndDebugUtilsLabelEXT                       vkQueueEndDebugUtilsLabelEXT;
735     PFN_vkQueueInsertDebugUtilsLabelEXT                    vkQueueInsertDebugUtilsLabelEXT;
736     PFN_vkCmdBeginDebugUtilsLabelEXT                       vkCmdBeginDebugUtilsLabelEXT;
737     PFN_vkCmdEndDebugUtilsLabelEXT                         vkCmdEndDebugUtilsLabelEXT;
738     PFN_vkCmdInsertDebugUtilsLabelEXT                      vkCmdInsertDebugUtilsLabelEXT;
739     PFN_vkCreateDebugUtilsMessengerEXT                     vkCreateDebugUtilsMessengerEXT;
740     PFN_vkDestroyDebugUtilsMessengerEXT                    vkDestroyDebugUtilsMessengerEXT;
741     PFN_vkSubmitDebugUtilsMessageEXT                       vkSubmitDebugUtilsMessageEXT;
742 
743     // VK_EXT_sample_locations
744     PFN_vkCmdSetSampleLocationsEXT                         vkCmdSetSampleLocationsEXT;
745     PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT        vkGetPhysicalDeviceMultisamplePropertiesEXT;
746 
747     // VK_EXT_image_drm_format_modifier
748     PFN_vkGetImageDrmFormatModifierPropertiesEXT           vkGetImageDrmFormatModifierPropertiesEXT;
749 
750     // VK_EXT_validation_cache
751     PFN_vkCreateValidationCacheEXT                         vkCreateValidationCacheEXT;
752     PFN_vkDestroyValidationCacheEXT                        vkDestroyValidationCacheEXT;
753     PFN_vkMergeValidationCachesEXT                         vkMergeValidationCachesEXT;
754     PFN_vkGetValidationCacheDataEXT                        vkGetValidationCacheDataEXT;
755 
756     // VK_NV_shading_rate_image
757     PFN_vkCmdBindShadingRateImageNV                        vkCmdBindShadingRateImageNV;
758     PFN_vkCmdSetViewportShadingRatePaletteNV               vkCmdSetViewportShadingRatePaletteNV;
759     PFN_vkCmdSetCoarseSampleOrderNV                        vkCmdSetCoarseSampleOrderNV;
760 
761     // VK_NV_ray_tracing
762     PFN_vkCreateAccelerationStructureNV                    vkCreateAccelerationStructureNV;
763     PFN_vkDestroyAccelerationStructureNV                   vkDestroyAccelerationStructureNV;
764     PFN_vkGetAccelerationStructureMemoryRequirementsNV     vkGetAccelerationStructureMemoryRequirementsNV;
765     PFN_vkBindAccelerationStructureMemoryNV                vkBindAccelerationStructureMemoryNV;
766     PFN_vkCmdBuildAccelerationStructureNV                  vkCmdBuildAccelerationStructureNV;
767     PFN_vkCmdCopyAccelerationStructureNV                   vkCmdCopyAccelerationStructureNV;
768     PFN_vkCmdTraceRaysNV                                   vkCmdTraceRaysNV;
769     PFN_vkCreateRayTracingPipelinesNV                      vkCreateRayTracingPipelinesNV;
770     PFN_vkGetRayTracingShaderGroupHandlesNV                vkGetRayTracingShaderGroupHandlesNV;
771     PFN_vkGetAccelerationStructureHandleNV                 vkGetAccelerationStructureHandleNV;
772     PFN_vkCmdWriteAccelerationStructuresPropertiesNV       vkCmdWriteAccelerationStructuresPropertiesNV;
773     PFN_vkCompileDeferredNV                                vkCompileDeferredNV;
774 
775     // VK_EXT_external_memory_host
776     PFN_vkGetMemoryHostPointerPropertiesEXT                vkGetMemoryHostPointerPropertiesEXT;
777 
778     // VK_AMD_buffer_marker
779     PFN_vkCmdWriteBufferMarkerAMD                          vkCmdWriteBufferMarkerAMD;
780 
781     // VK_EXT_calibrated_timestamps
782     PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT     vkGetPhysicalDeviceCalibrateableTimeDomainsEXT;
783     PFN_vkGetCalibratedTimestampsEXT                       vkGetCalibratedTimestampsEXT;
784 
785     // VK_NV_mesh_shader
786     PFN_vkCmdDrawMeshTasksNV                               vkCmdDrawMeshTasksNV;
787     PFN_vkCmdDrawMeshTasksIndirectNV                       vkCmdDrawMeshTasksIndirectNV;
788     PFN_vkCmdDrawMeshTasksIndirectCountNV                  vkCmdDrawMeshTasksIndirectCountNV;
789 
790     // VK_NV_scissor_exclusive
791     PFN_vkCmdSetExclusiveScissorNV                         vkCmdSetExclusiveScissorNV;
792 
793     // VK_NV_device_diagnostic_checkpoints
794     PFN_vkCmdSetCheckpointNV                               vkCmdSetCheckpointNV;
795     PFN_vkGetQueueCheckpointDataNV                         vkGetQueueCheckpointDataNV;
796 
797     // VK_AMD_display_native_hdr
798     PFN_vkSetLocalDimmingAMD                               vkSetLocalDimmingAMD;
799 
800     // VK_EXT_buffer_device_address
801     PFN_vkGetBufferDeviceAddressEXT                        vkGetBufferDeviceAddressEXT;
802 
803     // VK_NV_cooperative_matrix
804     PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV   vkGetPhysicalDeviceCooperativeMatrixPropertiesNV;
805 
806     // VK_EXT_host_query_reset
807     PFN_vkResetQueryPoolEXT                                vkResetQueryPoolEXT;
808 
809     // VK_KHR_get_physical_device_properties2
810     alias vkGetPhysicalDeviceFeatures2KHR                          = vkGetPhysicalDeviceFeatures2;
811     alias vkGetPhysicalDeviceProperties2KHR                        = vkGetPhysicalDeviceProperties2;
812     alias vkGetPhysicalDeviceFormatProperties2KHR                  = vkGetPhysicalDeviceFormatProperties2;
813     alias vkGetPhysicalDeviceImageFormatProperties2KHR             = vkGetPhysicalDeviceImageFormatProperties2;
814     alias vkGetPhysicalDeviceQueueFamilyProperties2KHR             = vkGetPhysicalDeviceQueueFamilyProperties2;
815     alias vkGetPhysicalDeviceMemoryProperties2KHR                  = vkGetPhysicalDeviceMemoryProperties2;
816     alias vkGetPhysicalDeviceSparseImageFormatProperties2KHR       = vkGetPhysicalDeviceSparseImageFormatProperties2;
817 
818     // VK_KHR_device_group
819     alias vkGetDeviceGroupPeerMemoryFeaturesKHR                    = vkGetDeviceGroupPeerMemoryFeatures;
820     alias vkCmdSetDeviceMaskKHR                                    = vkCmdSetDeviceMask;
821     alias vkCmdDispatchBaseKHR                                     = vkCmdDispatchBase;
822 
823     // VK_KHR_maintenance1
824     alias vkTrimCommandPoolKHR                                     = vkTrimCommandPool;
825 
826     // VK_KHR_device_group_creation
827     alias vkEnumeratePhysicalDeviceGroupsKHR                       = vkEnumeratePhysicalDeviceGroups;
828 
829     // VK_KHR_external_memory_capabilities
830     alias vkGetPhysicalDeviceExternalBufferPropertiesKHR           = vkGetPhysicalDeviceExternalBufferProperties;
831 
832     // VK_KHR_external_semaphore_capabilities
833     alias vkGetPhysicalDeviceExternalSemaphorePropertiesKHR        = vkGetPhysicalDeviceExternalSemaphoreProperties;
834 
835     // VK_KHR_descriptor_update_template
836     alias vkCreateDescriptorUpdateTemplateKHR                      = vkCreateDescriptorUpdateTemplate;
837     alias vkDestroyDescriptorUpdateTemplateKHR                     = vkDestroyDescriptorUpdateTemplate;
838     alias vkUpdateDescriptorSetWithTemplateKHR                     = vkUpdateDescriptorSetWithTemplate;
839 
840     // VK_KHR_external_fence_capabilities
841     alias vkGetPhysicalDeviceExternalFencePropertiesKHR            = vkGetPhysicalDeviceExternalFenceProperties;
842 
843     // VK_KHR_get_memory_requirements2
844     alias vkGetImageMemoryRequirements2KHR                         = vkGetImageMemoryRequirements2;
845     alias vkGetBufferMemoryRequirements2KHR                        = vkGetBufferMemoryRequirements2;
846     alias vkGetImageSparseMemoryRequirements2KHR                   = vkGetImageSparseMemoryRequirements2;
847 
848     // VK_KHR_sampler_ycbcr_conversion
849     alias vkCreateSamplerYcbcrConversionKHR                        = vkCreateSamplerYcbcrConversion;
850     alias vkDestroySamplerYcbcrConversionKHR                       = vkDestroySamplerYcbcrConversion;
851 
852     // VK_KHR_bind_memory2
853     alias vkBindBufferMemory2KHR                                   = vkBindBufferMemory2;
854     alias vkBindImageMemory2KHR                                    = vkBindImageMemory2;
855 
856     // VK_KHR_maintenance3
857     alias vkGetDescriptorSetLayoutSupportKHR                       = vkGetDescriptorSetLayoutSupport;
858 }
859 
860 
861 /// sets vkCreateInstance function pointer and acquires basic functions to retrieve information about the implementation
862 /// and create an instance: vkEnumerateInstanceExtensionProperties, vkEnumerateInstanceLayerProperties, vkCreateInstance
863 void loadGlobalLevelFunctions( PFN_vkGetInstanceProcAddr getInstanceProcAddr ) {
864     vkGetInstanceProcAddr = getInstanceProcAddr;
865 
866     // VK_VERSION_1_0
867     vkCreateInstance                       = cast( PFN_vkCreateInstance                       ) vkGetInstanceProcAddr( null, "vkCreateInstance" );
868     vkEnumerateInstanceExtensionProperties = cast( PFN_vkEnumerateInstanceExtensionProperties ) vkGetInstanceProcAddr( null, "vkEnumerateInstanceExtensionProperties" );
869     vkEnumerateInstanceLayerProperties     = cast( PFN_vkEnumerateInstanceLayerProperties     ) vkGetInstanceProcAddr( null, "vkEnumerateInstanceLayerProperties" );
870 
871     // VK_VERSION_1_1
872     vkEnumerateInstanceVersion             = cast( PFN_vkEnumerateInstanceVersion             ) vkGetInstanceProcAddr( null, "vkEnumerateInstanceVersion" );
873 
874     // VK_AMD_display_native_hdr
875     vkSetLocalDimmingAMD                   = cast( PFN_vkSetLocalDimmingAMD                   ) vkGetInstanceProcAddr( null, "vkSetLocalDimmingAMD" );
876 }
877 
878 
879 /// with a valid VkInstance call this function to retrieve additional VkInstance, VkPhysicalDevice, ... related functions
880 void loadInstanceLevelFunctions( VkInstance instance ) {
881     assert( vkGetInstanceProcAddr !is null, "Function pointer vkGetInstanceProcAddr is null!\nCall loadGlobalLevelFunctions -> loadInstanceLevelFunctions" );
882 
883     // VK_VERSION_1_0
884     vkDestroyInstance                                  = cast( PFN_vkDestroyInstance                                  ) vkGetInstanceProcAddr( instance, "vkDestroyInstance" );
885     vkEnumeratePhysicalDevices                         = cast( PFN_vkEnumeratePhysicalDevices                         ) vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDevices" );
886     vkGetPhysicalDeviceFeatures                        = cast( PFN_vkGetPhysicalDeviceFeatures                        ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures" );
887     vkGetPhysicalDeviceFormatProperties                = cast( PFN_vkGetPhysicalDeviceFormatProperties                ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties" );
888     vkGetPhysicalDeviceImageFormatProperties           = cast( PFN_vkGetPhysicalDeviceImageFormatProperties           ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties" );
889     vkGetPhysicalDeviceProperties                      = cast( PFN_vkGetPhysicalDeviceProperties                      ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties" );
890     vkGetPhysicalDeviceQueueFamilyProperties           = cast( PFN_vkGetPhysicalDeviceQueueFamilyProperties           ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties" );
891     vkGetPhysicalDeviceMemoryProperties                = cast( PFN_vkGetPhysicalDeviceMemoryProperties                ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties" );
892     vkGetDeviceProcAddr                                = cast( PFN_vkGetDeviceProcAddr                                ) vkGetInstanceProcAddr( instance, "vkGetDeviceProcAddr" );
893     vkCreateDevice                                     = cast( PFN_vkCreateDevice                                     ) vkGetInstanceProcAddr( instance, "vkCreateDevice" );
894     vkEnumerateDeviceExtensionProperties               = cast( PFN_vkEnumerateDeviceExtensionProperties               ) vkGetInstanceProcAddr( instance, "vkEnumerateDeviceExtensionProperties" );
895     vkEnumerateDeviceLayerProperties                   = cast( PFN_vkEnumerateDeviceLayerProperties                   ) vkGetInstanceProcAddr( instance, "vkEnumerateDeviceLayerProperties" );
896     vkGetPhysicalDeviceSparseImageFormatProperties     = cast( PFN_vkGetPhysicalDeviceSparseImageFormatProperties     ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties" );
897 
898     // VK_VERSION_1_1
899     vkEnumeratePhysicalDeviceGroups                    = cast( PFN_vkEnumeratePhysicalDeviceGroups                    ) vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceGroups" );
900     vkGetPhysicalDeviceFeatures2                       = cast( PFN_vkGetPhysicalDeviceFeatures2                       ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures2" );
901     vkGetPhysicalDeviceProperties2                     = cast( PFN_vkGetPhysicalDeviceProperties2                     ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties2" );
902     vkGetPhysicalDeviceFormatProperties2               = cast( PFN_vkGetPhysicalDeviceFormatProperties2               ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties2" );
903     vkGetPhysicalDeviceImageFormatProperties2          = cast( PFN_vkGetPhysicalDeviceImageFormatProperties2          ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties2" );
904     vkGetPhysicalDeviceQueueFamilyProperties2          = cast( PFN_vkGetPhysicalDeviceQueueFamilyProperties2          ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties2" );
905     vkGetPhysicalDeviceMemoryProperties2               = cast( PFN_vkGetPhysicalDeviceMemoryProperties2               ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties2" );
906     vkGetPhysicalDeviceSparseImageFormatProperties2    = cast( PFN_vkGetPhysicalDeviceSparseImageFormatProperties2    ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties2" );
907     vkGetPhysicalDeviceExternalBufferProperties        = cast( PFN_vkGetPhysicalDeviceExternalBufferProperties        ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalBufferProperties" );
908     vkGetPhysicalDeviceExternalFenceProperties         = cast( PFN_vkGetPhysicalDeviceExternalFenceProperties         ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalFenceProperties" );
909     vkGetPhysicalDeviceExternalSemaphoreProperties     = cast( PFN_vkGetPhysicalDeviceExternalSemaphoreProperties     ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalSemaphoreProperties" );
910 
911     // VK_KHR_surface
912     vkDestroySurfaceKHR                                = cast( PFN_vkDestroySurfaceKHR                                ) vkGetInstanceProcAddr( instance, "vkDestroySurfaceKHR" );
913     vkGetPhysicalDeviceSurfaceSupportKHR               = cast( PFN_vkGetPhysicalDeviceSurfaceSupportKHR               ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceSupportKHR" );
914     vkGetPhysicalDeviceSurfaceCapabilitiesKHR          = cast( PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR          ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" );
915     vkGetPhysicalDeviceSurfaceFormatsKHR               = cast( PFN_vkGetPhysicalDeviceSurfaceFormatsKHR               ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormatsKHR" );
916     vkGetPhysicalDeviceSurfacePresentModesKHR          = cast( PFN_vkGetPhysicalDeviceSurfacePresentModesKHR          ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfacePresentModesKHR" );
917 
918     // VK_KHR_swapchain
919     vkGetPhysicalDevicePresentRectanglesKHR            = cast( PFN_vkGetPhysicalDevicePresentRectanglesKHR            ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDevicePresentRectanglesKHR" );
920 
921     // VK_KHR_display
922     vkGetPhysicalDeviceDisplayPropertiesKHR            = cast( PFN_vkGetPhysicalDeviceDisplayPropertiesKHR            ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPropertiesKHR" );
923     vkGetPhysicalDeviceDisplayPlanePropertiesKHR       = cast( PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR       ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR" );
924     vkGetDisplayPlaneSupportedDisplaysKHR              = cast( PFN_vkGetDisplayPlaneSupportedDisplaysKHR              ) vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneSupportedDisplaysKHR" );
925     vkGetDisplayModePropertiesKHR                      = cast( PFN_vkGetDisplayModePropertiesKHR                      ) vkGetInstanceProcAddr( instance, "vkGetDisplayModePropertiesKHR" );
926     vkCreateDisplayModeKHR                             = cast( PFN_vkCreateDisplayModeKHR                             ) vkGetInstanceProcAddr( instance, "vkCreateDisplayModeKHR" );
927     vkGetDisplayPlaneCapabilitiesKHR                   = cast( PFN_vkGetDisplayPlaneCapabilitiesKHR                   ) vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilitiesKHR" );
928     vkCreateDisplayPlaneSurfaceKHR                     = cast( PFN_vkCreateDisplayPlaneSurfaceKHR                     ) vkGetInstanceProcAddr( instance, "vkCreateDisplayPlaneSurfaceKHR" );
929 
930     // VK_KHR_get_surface_capabilities2
931     vkGetPhysicalDeviceSurfaceCapabilities2KHR         = cast( PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR         ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR" );
932     vkGetPhysicalDeviceSurfaceFormats2KHR              = cast( PFN_vkGetPhysicalDeviceSurfaceFormats2KHR              ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormats2KHR" );
933 
934     // VK_KHR_get_display_properties2
935     vkGetPhysicalDeviceDisplayProperties2KHR           = cast( PFN_vkGetPhysicalDeviceDisplayProperties2KHR           ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayProperties2KHR" );
936     vkGetPhysicalDeviceDisplayPlaneProperties2KHR      = cast( PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR      ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR" );
937     vkGetDisplayModeProperties2KHR                     = cast( PFN_vkGetDisplayModeProperties2KHR                     ) vkGetInstanceProcAddr( instance, "vkGetDisplayModeProperties2KHR" );
938     vkGetDisplayPlaneCapabilities2KHR                  = cast( PFN_vkGetDisplayPlaneCapabilities2KHR                  ) vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilities2KHR" );
939 
940     // VK_EXT_debug_report
941     vkCreateDebugReportCallbackEXT                     = cast( PFN_vkCreateDebugReportCallbackEXT                     ) vkGetInstanceProcAddr( instance, "vkCreateDebugReportCallbackEXT" );
942     vkDestroyDebugReportCallbackEXT                    = cast( PFN_vkDestroyDebugReportCallbackEXT                    ) vkGetInstanceProcAddr( instance, "vkDestroyDebugReportCallbackEXT" );
943     vkDebugReportMessageEXT                            = cast( PFN_vkDebugReportMessageEXT                            ) vkGetInstanceProcAddr( instance, "vkDebugReportMessageEXT" );
944 
945     // VK_NV_external_memory_capabilities
946     vkGetPhysicalDeviceExternalImageFormatPropertiesNV = cast( PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV" );
947 
948     // VK_NVX_device_generated_commands
949     vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX  = cast( PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX  ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX" );
950 
951     // VK_EXT_direct_mode_display
952     vkReleaseDisplayEXT                                = cast( PFN_vkReleaseDisplayEXT                                ) vkGetInstanceProcAddr( instance, "vkReleaseDisplayEXT" );
953 
954     // VK_EXT_display_surface_counter
955     vkGetPhysicalDeviceSurfaceCapabilities2EXT         = cast( PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT         ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2EXT" );
956 
957     // VK_EXT_debug_utils
958     vkCreateDebugUtilsMessengerEXT                     = cast( PFN_vkCreateDebugUtilsMessengerEXT                     ) vkGetInstanceProcAddr( instance, "vkCreateDebugUtilsMessengerEXT" );
959     vkDestroyDebugUtilsMessengerEXT                    = cast( PFN_vkDestroyDebugUtilsMessengerEXT                    ) vkGetInstanceProcAddr( instance, "vkDestroyDebugUtilsMessengerEXT" );
960     vkSubmitDebugUtilsMessageEXT                       = cast( PFN_vkSubmitDebugUtilsMessageEXT                       ) vkGetInstanceProcAddr( instance, "vkSubmitDebugUtilsMessageEXT" );
961 
962     // VK_EXT_sample_locations
963     vkGetPhysicalDeviceMultisamplePropertiesEXT        = cast( PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT        ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMultisamplePropertiesEXT" );
964 
965     // VK_EXT_calibrated_timestamps
966     vkGetPhysicalDeviceCalibrateableTimeDomainsEXT     = cast( PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT     ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT" );
967 
968     // VK_NV_cooperative_matrix
969     vkGetPhysicalDeviceCooperativeMatrixPropertiesNV   = cast( PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV   ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV" );
970 }
971 
972 
973 /// with a valid VkInstance call this function to retrieve VkDevice, VkQueue and VkCommandBuffer related functions
974 /// the functions call indirectly through the VkInstance and will be internally dispatched by the implementation
975 /// use loadDeviceLevelFunctions( VkDevice device ) bellow to avoid this indirection and get the pointers directly form a VkDevice
976 void loadDeviceLevelFunctions( VkInstance instance ) {
977     assert( vkGetInstanceProcAddr !is null, "Function pointer vkGetInstanceProcAddr is null!\nCall loadGlobalLevelFunctions -> loadDeviceLevelFunctions( instance )" );
978 
979     // VK_VERSION_1_0
980     vkDestroyDevice                                = cast( PFN_vkDestroyDevice                                ) vkGetInstanceProcAddr( instance, "vkDestroyDevice" );
981     vkGetDeviceQueue                               = cast( PFN_vkGetDeviceQueue                               ) vkGetInstanceProcAddr( instance, "vkGetDeviceQueue" );
982     vkQueueSubmit                                  = cast( PFN_vkQueueSubmit                                  ) vkGetInstanceProcAddr( instance, "vkQueueSubmit" );
983     vkQueueWaitIdle                                = cast( PFN_vkQueueWaitIdle                                ) vkGetInstanceProcAddr( instance, "vkQueueWaitIdle" );
984     vkDeviceWaitIdle                               = cast( PFN_vkDeviceWaitIdle                               ) vkGetInstanceProcAddr( instance, "vkDeviceWaitIdle" );
985     vkAllocateMemory                               = cast( PFN_vkAllocateMemory                               ) vkGetInstanceProcAddr( instance, "vkAllocateMemory" );
986     vkFreeMemory                                   = cast( PFN_vkFreeMemory                                   ) vkGetInstanceProcAddr( instance, "vkFreeMemory" );
987     vkMapMemory                                    = cast( PFN_vkMapMemory                                    ) vkGetInstanceProcAddr( instance, "vkMapMemory" );
988     vkUnmapMemory                                  = cast( PFN_vkUnmapMemory                                  ) vkGetInstanceProcAddr( instance, "vkUnmapMemory" );
989     vkFlushMappedMemoryRanges                      = cast( PFN_vkFlushMappedMemoryRanges                      ) vkGetInstanceProcAddr( instance, "vkFlushMappedMemoryRanges" );
990     vkInvalidateMappedMemoryRanges                 = cast( PFN_vkInvalidateMappedMemoryRanges                 ) vkGetInstanceProcAddr( instance, "vkInvalidateMappedMemoryRanges" );
991     vkGetDeviceMemoryCommitment                    = cast( PFN_vkGetDeviceMemoryCommitment                    ) vkGetInstanceProcAddr( instance, "vkGetDeviceMemoryCommitment" );
992     vkBindBufferMemory                             = cast( PFN_vkBindBufferMemory                             ) vkGetInstanceProcAddr( instance, "vkBindBufferMemory" );
993     vkBindImageMemory                              = cast( PFN_vkBindImageMemory                              ) vkGetInstanceProcAddr( instance, "vkBindImageMemory" );
994     vkGetBufferMemoryRequirements                  = cast( PFN_vkGetBufferMemoryRequirements                  ) vkGetInstanceProcAddr( instance, "vkGetBufferMemoryRequirements" );
995     vkGetImageMemoryRequirements                   = cast( PFN_vkGetImageMemoryRequirements                   ) vkGetInstanceProcAddr( instance, "vkGetImageMemoryRequirements" );
996     vkGetImageSparseMemoryRequirements             = cast( PFN_vkGetImageSparseMemoryRequirements             ) vkGetInstanceProcAddr( instance, "vkGetImageSparseMemoryRequirements" );
997     vkQueueBindSparse                              = cast( PFN_vkQueueBindSparse                              ) vkGetInstanceProcAddr( instance, "vkQueueBindSparse" );
998     vkCreateFence                                  = cast( PFN_vkCreateFence                                  ) vkGetInstanceProcAddr( instance, "vkCreateFence" );
999     vkDestroyFence                                 = cast( PFN_vkDestroyFence                                 ) vkGetInstanceProcAddr( instance, "vkDestroyFence" );
1000     vkResetFences                                  = cast( PFN_vkResetFences                                  ) vkGetInstanceProcAddr( instance, "vkResetFences" );
1001     vkGetFenceStatus                               = cast( PFN_vkGetFenceStatus                               ) vkGetInstanceProcAddr( instance, "vkGetFenceStatus" );
1002     vkWaitForFences                                = cast( PFN_vkWaitForFences                                ) vkGetInstanceProcAddr( instance, "vkWaitForFences" );
1003     vkCreateSemaphore                              = cast( PFN_vkCreateSemaphore                              ) vkGetInstanceProcAddr( instance, "vkCreateSemaphore" );
1004     vkDestroySemaphore                             = cast( PFN_vkDestroySemaphore                             ) vkGetInstanceProcAddr( instance, "vkDestroySemaphore" );
1005     vkCreateEvent                                  = cast( PFN_vkCreateEvent                                  ) vkGetInstanceProcAddr( instance, "vkCreateEvent" );
1006     vkDestroyEvent                                 = cast( PFN_vkDestroyEvent                                 ) vkGetInstanceProcAddr( instance, "vkDestroyEvent" );
1007     vkGetEventStatus                               = cast( PFN_vkGetEventStatus                               ) vkGetInstanceProcAddr( instance, "vkGetEventStatus" );
1008     vkSetEvent                                     = cast( PFN_vkSetEvent                                     ) vkGetInstanceProcAddr( instance, "vkSetEvent" );
1009     vkResetEvent                                   = cast( PFN_vkResetEvent                                   ) vkGetInstanceProcAddr( instance, "vkResetEvent" );
1010     vkCreateQueryPool                              = cast( PFN_vkCreateQueryPool                              ) vkGetInstanceProcAddr( instance, "vkCreateQueryPool" );
1011     vkDestroyQueryPool                             = cast( PFN_vkDestroyQueryPool                             ) vkGetInstanceProcAddr( instance, "vkDestroyQueryPool" );
1012     vkGetQueryPoolResults                          = cast( PFN_vkGetQueryPoolResults                          ) vkGetInstanceProcAddr( instance, "vkGetQueryPoolResults" );
1013     vkCreateBuffer                                 = cast( PFN_vkCreateBuffer                                 ) vkGetInstanceProcAddr( instance, "vkCreateBuffer" );
1014     vkDestroyBuffer                                = cast( PFN_vkDestroyBuffer                                ) vkGetInstanceProcAddr( instance, "vkDestroyBuffer" );
1015     vkCreateBufferView                             = cast( PFN_vkCreateBufferView                             ) vkGetInstanceProcAddr( instance, "vkCreateBufferView" );
1016     vkDestroyBufferView                            = cast( PFN_vkDestroyBufferView                            ) vkGetInstanceProcAddr( instance, "vkDestroyBufferView" );
1017     vkCreateImage                                  = cast( PFN_vkCreateImage                                  ) vkGetInstanceProcAddr( instance, "vkCreateImage" );
1018     vkDestroyImage                                 = cast( PFN_vkDestroyImage                                 ) vkGetInstanceProcAddr( instance, "vkDestroyImage" );
1019     vkGetImageSubresourceLayout                    = cast( PFN_vkGetImageSubresourceLayout                    ) vkGetInstanceProcAddr( instance, "vkGetImageSubresourceLayout" );
1020     vkCreateImageView                              = cast( PFN_vkCreateImageView                              ) vkGetInstanceProcAddr( instance, "vkCreateImageView" );
1021     vkDestroyImageView                             = cast( PFN_vkDestroyImageView                             ) vkGetInstanceProcAddr( instance, "vkDestroyImageView" );
1022     vkCreateShaderModule                           = cast( PFN_vkCreateShaderModule                           ) vkGetInstanceProcAddr( instance, "vkCreateShaderModule" );
1023     vkDestroyShaderModule                          = cast( PFN_vkDestroyShaderModule                          ) vkGetInstanceProcAddr( instance, "vkDestroyShaderModule" );
1024     vkCreatePipelineCache                          = cast( PFN_vkCreatePipelineCache                          ) vkGetInstanceProcAddr( instance, "vkCreatePipelineCache" );
1025     vkDestroyPipelineCache                         = cast( PFN_vkDestroyPipelineCache                         ) vkGetInstanceProcAddr( instance, "vkDestroyPipelineCache" );
1026     vkGetPipelineCacheData                         = cast( PFN_vkGetPipelineCacheData                         ) vkGetInstanceProcAddr( instance, "vkGetPipelineCacheData" );
1027     vkMergePipelineCaches                          = cast( PFN_vkMergePipelineCaches                          ) vkGetInstanceProcAddr( instance, "vkMergePipelineCaches" );
1028     vkCreateGraphicsPipelines                      = cast( PFN_vkCreateGraphicsPipelines                      ) vkGetInstanceProcAddr( instance, "vkCreateGraphicsPipelines" );
1029     vkCreateComputePipelines                       = cast( PFN_vkCreateComputePipelines                       ) vkGetInstanceProcAddr( instance, "vkCreateComputePipelines" );
1030     vkDestroyPipeline                              = cast( PFN_vkDestroyPipeline                              ) vkGetInstanceProcAddr( instance, "vkDestroyPipeline" );
1031     vkCreatePipelineLayout                         = cast( PFN_vkCreatePipelineLayout                         ) vkGetInstanceProcAddr( instance, "vkCreatePipelineLayout" );
1032     vkDestroyPipelineLayout                        = cast( PFN_vkDestroyPipelineLayout                        ) vkGetInstanceProcAddr( instance, "vkDestroyPipelineLayout" );
1033     vkCreateSampler                                = cast( PFN_vkCreateSampler                                ) vkGetInstanceProcAddr( instance, "vkCreateSampler" );
1034     vkDestroySampler                               = cast( PFN_vkDestroySampler                               ) vkGetInstanceProcAddr( instance, "vkDestroySampler" );
1035     vkCreateDescriptorSetLayout                    = cast( PFN_vkCreateDescriptorSetLayout                    ) vkGetInstanceProcAddr( instance, "vkCreateDescriptorSetLayout" );
1036     vkDestroyDescriptorSetLayout                   = cast( PFN_vkDestroyDescriptorSetLayout                   ) vkGetInstanceProcAddr( instance, "vkDestroyDescriptorSetLayout" );
1037     vkCreateDescriptorPool                         = cast( PFN_vkCreateDescriptorPool                         ) vkGetInstanceProcAddr( instance, "vkCreateDescriptorPool" );
1038     vkDestroyDescriptorPool                        = cast( PFN_vkDestroyDescriptorPool                        ) vkGetInstanceProcAddr( instance, "vkDestroyDescriptorPool" );
1039     vkResetDescriptorPool                          = cast( PFN_vkResetDescriptorPool                          ) vkGetInstanceProcAddr( instance, "vkResetDescriptorPool" );
1040     vkAllocateDescriptorSets                       = cast( PFN_vkAllocateDescriptorSets                       ) vkGetInstanceProcAddr( instance, "vkAllocateDescriptorSets" );
1041     vkFreeDescriptorSets                           = cast( PFN_vkFreeDescriptorSets                           ) vkGetInstanceProcAddr( instance, "vkFreeDescriptorSets" );
1042     vkUpdateDescriptorSets                         = cast( PFN_vkUpdateDescriptorSets                         ) vkGetInstanceProcAddr( instance, "vkUpdateDescriptorSets" );
1043     vkCreateFramebuffer                            = cast( PFN_vkCreateFramebuffer                            ) vkGetInstanceProcAddr( instance, "vkCreateFramebuffer" );
1044     vkDestroyFramebuffer                           = cast( PFN_vkDestroyFramebuffer                           ) vkGetInstanceProcAddr( instance, "vkDestroyFramebuffer" );
1045     vkCreateRenderPass                             = cast( PFN_vkCreateRenderPass                             ) vkGetInstanceProcAddr( instance, "vkCreateRenderPass" );
1046     vkDestroyRenderPass                            = cast( PFN_vkDestroyRenderPass                            ) vkGetInstanceProcAddr( instance, "vkDestroyRenderPass" );
1047     vkGetRenderAreaGranularity                     = cast( PFN_vkGetRenderAreaGranularity                     ) vkGetInstanceProcAddr( instance, "vkGetRenderAreaGranularity" );
1048     vkCreateCommandPool                            = cast( PFN_vkCreateCommandPool                            ) vkGetInstanceProcAddr( instance, "vkCreateCommandPool" );
1049     vkDestroyCommandPool                           = cast( PFN_vkDestroyCommandPool                           ) vkGetInstanceProcAddr( instance, "vkDestroyCommandPool" );
1050     vkResetCommandPool                             = cast( PFN_vkResetCommandPool                             ) vkGetInstanceProcAddr( instance, "vkResetCommandPool" );
1051     vkAllocateCommandBuffers                       = cast( PFN_vkAllocateCommandBuffers                       ) vkGetInstanceProcAddr( instance, "vkAllocateCommandBuffers" );
1052     vkFreeCommandBuffers                           = cast( PFN_vkFreeCommandBuffers                           ) vkGetInstanceProcAddr( instance, "vkFreeCommandBuffers" );
1053     vkBeginCommandBuffer                           = cast( PFN_vkBeginCommandBuffer                           ) vkGetInstanceProcAddr( instance, "vkBeginCommandBuffer" );
1054     vkEndCommandBuffer                             = cast( PFN_vkEndCommandBuffer                             ) vkGetInstanceProcAddr( instance, "vkEndCommandBuffer" );
1055     vkResetCommandBuffer                           = cast( PFN_vkResetCommandBuffer                           ) vkGetInstanceProcAddr( instance, "vkResetCommandBuffer" );
1056     vkCmdBindPipeline                              = cast( PFN_vkCmdBindPipeline                              ) vkGetInstanceProcAddr( instance, "vkCmdBindPipeline" );
1057     vkCmdSetViewport                               = cast( PFN_vkCmdSetViewport                               ) vkGetInstanceProcAddr( instance, "vkCmdSetViewport" );
1058     vkCmdSetScissor                                = cast( PFN_vkCmdSetScissor                                ) vkGetInstanceProcAddr( instance, "vkCmdSetScissor" );
1059     vkCmdSetLineWidth                              = cast( PFN_vkCmdSetLineWidth                              ) vkGetInstanceProcAddr( instance, "vkCmdSetLineWidth" );
1060     vkCmdSetDepthBias                              = cast( PFN_vkCmdSetDepthBias                              ) vkGetInstanceProcAddr( instance, "vkCmdSetDepthBias" );
1061     vkCmdSetBlendConstants                         = cast( PFN_vkCmdSetBlendConstants                         ) vkGetInstanceProcAddr( instance, "vkCmdSetBlendConstants" );
1062     vkCmdSetDepthBounds                            = cast( PFN_vkCmdSetDepthBounds                            ) vkGetInstanceProcAddr( instance, "vkCmdSetDepthBounds" );
1063     vkCmdSetStencilCompareMask                     = cast( PFN_vkCmdSetStencilCompareMask                     ) vkGetInstanceProcAddr( instance, "vkCmdSetStencilCompareMask" );
1064     vkCmdSetStencilWriteMask                       = cast( PFN_vkCmdSetStencilWriteMask                       ) vkGetInstanceProcAddr( instance, "vkCmdSetStencilWriteMask" );
1065     vkCmdSetStencilReference                       = cast( PFN_vkCmdSetStencilReference                       ) vkGetInstanceProcAddr( instance, "vkCmdSetStencilReference" );
1066     vkCmdBindDescriptorSets                        = cast( PFN_vkCmdBindDescriptorSets                        ) vkGetInstanceProcAddr( instance, "vkCmdBindDescriptorSets" );
1067     vkCmdBindIndexBuffer                           = cast( PFN_vkCmdBindIndexBuffer                           ) vkGetInstanceProcAddr( instance, "vkCmdBindIndexBuffer" );
1068     vkCmdBindVertexBuffers                         = cast( PFN_vkCmdBindVertexBuffers                         ) vkGetInstanceProcAddr( instance, "vkCmdBindVertexBuffers" );
1069     vkCmdDraw                                      = cast( PFN_vkCmdDraw                                      ) vkGetInstanceProcAddr( instance, "vkCmdDraw" );
1070     vkCmdDrawIndexed                               = cast( PFN_vkCmdDrawIndexed                               ) vkGetInstanceProcAddr( instance, "vkCmdDrawIndexed" );
1071     vkCmdDrawIndirect                              = cast( PFN_vkCmdDrawIndirect                              ) vkGetInstanceProcAddr( instance, "vkCmdDrawIndirect" );
1072     vkCmdDrawIndexedIndirect                       = cast( PFN_vkCmdDrawIndexedIndirect                       ) vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirect" );
1073     vkCmdDispatch                                  = cast( PFN_vkCmdDispatch                                  ) vkGetInstanceProcAddr( instance, "vkCmdDispatch" );
1074     vkCmdDispatchIndirect                          = cast( PFN_vkCmdDispatchIndirect                          ) vkGetInstanceProcAddr( instance, "vkCmdDispatchIndirect" );
1075     vkCmdCopyBuffer                                = cast( PFN_vkCmdCopyBuffer                                ) vkGetInstanceProcAddr( instance, "vkCmdCopyBuffer" );
1076     vkCmdCopyImage                                 = cast( PFN_vkCmdCopyImage                                 ) vkGetInstanceProcAddr( instance, "vkCmdCopyImage" );
1077     vkCmdBlitImage                                 = cast( PFN_vkCmdBlitImage                                 ) vkGetInstanceProcAddr( instance, "vkCmdBlitImage" );
1078     vkCmdCopyBufferToImage                         = cast( PFN_vkCmdCopyBufferToImage                         ) vkGetInstanceProcAddr( instance, "vkCmdCopyBufferToImage" );
1079     vkCmdCopyImageToBuffer                         = cast( PFN_vkCmdCopyImageToBuffer                         ) vkGetInstanceProcAddr( instance, "vkCmdCopyImageToBuffer" );
1080     vkCmdUpdateBuffer                              = cast( PFN_vkCmdUpdateBuffer                              ) vkGetInstanceProcAddr( instance, "vkCmdUpdateBuffer" );
1081     vkCmdFillBuffer                                = cast( PFN_vkCmdFillBuffer                                ) vkGetInstanceProcAddr( instance, "vkCmdFillBuffer" );
1082     vkCmdClearColorImage                           = cast( PFN_vkCmdClearColorImage                           ) vkGetInstanceProcAddr( instance, "vkCmdClearColorImage" );
1083     vkCmdClearDepthStencilImage                    = cast( PFN_vkCmdClearDepthStencilImage                    ) vkGetInstanceProcAddr( instance, "vkCmdClearDepthStencilImage" );
1084     vkCmdClearAttachments                          = cast( PFN_vkCmdClearAttachments                          ) vkGetInstanceProcAddr( instance, "vkCmdClearAttachments" );
1085     vkCmdResolveImage                              = cast( PFN_vkCmdResolveImage                              ) vkGetInstanceProcAddr( instance, "vkCmdResolveImage" );
1086     vkCmdSetEvent                                  = cast( PFN_vkCmdSetEvent                                  ) vkGetInstanceProcAddr( instance, "vkCmdSetEvent" );
1087     vkCmdResetEvent                                = cast( PFN_vkCmdResetEvent                                ) vkGetInstanceProcAddr( instance, "vkCmdResetEvent" );
1088     vkCmdWaitEvents                                = cast( PFN_vkCmdWaitEvents                                ) vkGetInstanceProcAddr( instance, "vkCmdWaitEvents" );
1089     vkCmdPipelineBarrier                           = cast( PFN_vkCmdPipelineBarrier                           ) vkGetInstanceProcAddr( instance, "vkCmdPipelineBarrier" );
1090     vkCmdBeginQuery                                = cast( PFN_vkCmdBeginQuery                                ) vkGetInstanceProcAddr( instance, "vkCmdBeginQuery" );
1091     vkCmdEndQuery                                  = cast( PFN_vkCmdEndQuery                                  ) vkGetInstanceProcAddr( instance, "vkCmdEndQuery" );
1092     vkCmdResetQueryPool                            = cast( PFN_vkCmdResetQueryPool                            ) vkGetInstanceProcAddr( instance, "vkCmdResetQueryPool" );
1093     vkCmdWriteTimestamp                            = cast( PFN_vkCmdWriteTimestamp                            ) vkGetInstanceProcAddr( instance, "vkCmdWriteTimestamp" );
1094     vkCmdCopyQueryPoolResults                      = cast( PFN_vkCmdCopyQueryPoolResults                      ) vkGetInstanceProcAddr( instance, "vkCmdCopyQueryPoolResults" );
1095     vkCmdPushConstants                             = cast( PFN_vkCmdPushConstants                             ) vkGetInstanceProcAddr( instance, "vkCmdPushConstants" );
1096     vkCmdBeginRenderPass                           = cast( PFN_vkCmdBeginRenderPass                           ) vkGetInstanceProcAddr( instance, "vkCmdBeginRenderPass" );
1097     vkCmdNextSubpass                               = cast( PFN_vkCmdNextSubpass                               ) vkGetInstanceProcAddr( instance, "vkCmdNextSubpass" );
1098     vkCmdEndRenderPass                             = cast( PFN_vkCmdEndRenderPass                             ) vkGetInstanceProcAddr( instance, "vkCmdEndRenderPass" );
1099     vkCmdExecuteCommands                           = cast( PFN_vkCmdExecuteCommands                           ) vkGetInstanceProcAddr( instance, "vkCmdExecuteCommands" );
1100 
1101     // VK_VERSION_1_1
1102     vkBindBufferMemory2                            = cast( PFN_vkBindBufferMemory2                            ) vkGetInstanceProcAddr( instance, "vkBindBufferMemory2" );
1103     vkBindImageMemory2                             = cast( PFN_vkBindImageMemory2                             ) vkGetInstanceProcAddr( instance, "vkBindImageMemory2" );
1104     vkGetDeviceGroupPeerMemoryFeatures             = cast( PFN_vkGetDeviceGroupPeerMemoryFeatures             ) vkGetInstanceProcAddr( instance, "vkGetDeviceGroupPeerMemoryFeatures" );
1105     vkCmdSetDeviceMask                             = cast( PFN_vkCmdSetDeviceMask                             ) vkGetInstanceProcAddr( instance, "vkCmdSetDeviceMask" );
1106     vkCmdDispatchBase                              = cast( PFN_vkCmdDispatchBase                              ) vkGetInstanceProcAddr( instance, "vkCmdDispatchBase" );
1107     vkGetImageMemoryRequirements2                  = cast( PFN_vkGetImageMemoryRequirements2                  ) vkGetInstanceProcAddr( instance, "vkGetImageMemoryRequirements2" );
1108     vkGetBufferMemoryRequirements2                 = cast( PFN_vkGetBufferMemoryRequirements2                 ) vkGetInstanceProcAddr( instance, "vkGetBufferMemoryRequirements2" );
1109     vkGetImageSparseMemoryRequirements2            = cast( PFN_vkGetImageSparseMemoryRequirements2            ) vkGetInstanceProcAddr( instance, "vkGetImageSparseMemoryRequirements2" );
1110     vkTrimCommandPool                              = cast( PFN_vkTrimCommandPool                              ) vkGetInstanceProcAddr( instance, "vkTrimCommandPool" );
1111     vkGetDeviceQueue2                              = cast( PFN_vkGetDeviceQueue2                              ) vkGetInstanceProcAddr( instance, "vkGetDeviceQueue2" );
1112     vkCreateSamplerYcbcrConversion                 = cast( PFN_vkCreateSamplerYcbcrConversion                 ) vkGetInstanceProcAddr( instance, "vkCreateSamplerYcbcrConversion" );
1113     vkDestroySamplerYcbcrConversion                = cast( PFN_vkDestroySamplerYcbcrConversion                ) vkGetInstanceProcAddr( instance, "vkDestroySamplerYcbcrConversion" );
1114     vkCreateDescriptorUpdateTemplate               = cast( PFN_vkCreateDescriptorUpdateTemplate               ) vkGetInstanceProcAddr( instance, "vkCreateDescriptorUpdateTemplate" );
1115     vkDestroyDescriptorUpdateTemplate              = cast( PFN_vkDestroyDescriptorUpdateTemplate              ) vkGetInstanceProcAddr( instance, "vkDestroyDescriptorUpdateTemplate" );
1116     vkUpdateDescriptorSetWithTemplate              = cast( PFN_vkUpdateDescriptorSetWithTemplate              ) vkGetInstanceProcAddr( instance, "vkUpdateDescriptorSetWithTemplate" );
1117     vkGetDescriptorSetLayoutSupport                = cast( PFN_vkGetDescriptorSetLayoutSupport                ) vkGetInstanceProcAddr( instance, "vkGetDescriptorSetLayoutSupport" );
1118 
1119     // VK_KHR_swapchain
1120     vkCreateSwapchainKHR                           = cast( PFN_vkCreateSwapchainKHR                           ) vkGetInstanceProcAddr( instance, "vkCreateSwapchainKHR" );
1121     vkDestroySwapchainKHR                          = cast( PFN_vkDestroySwapchainKHR                          ) vkGetInstanceProcAddr( instance, "vkDestroySwapchainKHR" );
1122     vkGetSwapchainImagesKHR                        = cast( PFN_vkGetSwapchainImagesKHR                        ) vkGetInstanceProcAddr( instance, "vkGetSwapchainImagesKHR" );
1123     vkAcquireNextImageKHR                          = cast( PFN_vkAcquireNextImageKHR                          ) vkGetInstanceProcAddr( instance, "vkAcquireNextImageKHR" );
1124     vkQueuePresentKHR                              = cast( PFN_vkQueuePresentKHR                              ) vkGetInstanceProcAddr( instance, "vkQueuePresentKHR" );
1125     vkGetDeviceGroupPresentCapabilitiesKHR         = cast( PFN_vkGetDeviceGroupPresentCapabilitiesKHR         ) vkGetInstanceProcAddr( instance, "vkGetDeviceGroupPresentCapabilitiesKHR" );
1126     vkGetDeviceGroupSurfacePresentModesKHR         = cast( PFN_vkGetDeviceGroupSurfacePresentModesKHR         ) vkGetInstanceProcAddr( instance, "vkGetDeviceGroupSurfacePresentModesKHR" );
1127     vkAcquireNextImage2KHR                         = cast( PFN_vkAcquireNextImage2KHR                         ) vkGetInstanceProcAddr( instance, "vkAcquireNextImage2KHR" );
1128 
1129     // VK_KHR_display_swapchain
1130     vkCreateSharedSwapchainsKHR                    = cast( PFN_vkCreateSharedSwapchainsKHR                    ) vkGetInstanceProcAddr( instance, "vkCreateSharedSwapchainsKHR" );
1131 
1132     // VK_KHR_device_group
1133     vkGetDeviceGroupSurfacePresentModes2EXT        = cast( PFN_vkGetDeviceGroupSurfacePresentModes2EXT        ) vkGetInstanceProcAddr( instance, "vkGetDeviceGroupSurfacePresentModes2EXT" );
1134 
1135     // VK_KHR_external_memory_fd
1136     vkGetMemoryFdKHR                               = cast( PFN_vkGetMemoryFdKHR                               ) vkGetInstanceProcAddr( instance, "vkGetMemoryFdKHR" );
1137     vkGetMemoryFdPropertiesKHR                     = cast( PFN_vkGetMemoryFdPropertiesKHR                     ) vkGetInstanceProcAddr( instance, "vkGetMemoryFdPropertiesKHR" );
1138 
1139     // VK_KHR_external_semaphore_fd
1140     vkImportSemaphoreFdKHR                         = cast( PFN_vkImportSemaphoreFdKHR                         ) vkGetInstanceProcAddr( instance, "vkImportSemaphoreFdKHR" );
1141     vkGetSemaphoreFdKHR                            = cast( PFN_vkGetSemaphoreFdKHR                            ) vkGetInstanceProcAddr( instance, "vkGetSemaphoreFdKHR" );
1142 
1143     // VK_KHR_push_descriptor
1144     vkCmdPushDescriptorSetKHR                      = cast( PFN_vkCmdPushDescriptorSetKHR                      ) vkGetInstanceProcAddr( instance, "vkCmdPushDescriptorSetKHR" );
1145     vkCmdPushDescriptorSetWithTemplateKHR          = cast( PFN_vkCmdPushDescriptorSetWithTemplateKHR          ) vkGetInstanceProcAddr( instance, "vkCmdPushDescriptorSetWithTemplateKHR" );
1146 
1147     // VK_KHR_create_renderpass2
1148     vkCreateRenderPass2KHR                         = cast( PFN_vkCreateRenderPass2KHR                         ) vkGetInstanceProcAddr( instance, "vkCreateRenderPass2KHR" );
1149     vkCmdBeginRenderPass2KHR                       = cast( PFN_vkCmdBeginRenderPass2KHR                       ) vkGetInstanceProcAddr( instance, "vkCmdBeginRenderPass2KHR" );
1150     vkCmdNextSubpass2KHR                           = cast( PFN_vkCmdNextSubpass2KHR                           ) vkGetInstanceProcAddr( instance, "vkCmdNextSubpass2KHR" );
1151     vkCmdEndRenderPass2KHR                         = cast( PFN_vkCmdEndRenderPass2KHR                         ) vkGetInstanceProcAddr( instance, "vkCmdEndRenderPass2KHR" );
1152 
1153     // VK_KHR_shared_presentable_image
1154     vkGetSwapchainStatusKHR                        = cast( PFN_vkGetSwapchainStatusKHR                        ) vkGetInstanceProcAddr( instance, "vkGetSwapchainStatusKHR" );
1155 
1156     // VK_KHR_external_fence_fd
1157     vkImportFenceFdKHR                             = cast( PFN_vkImportFenceFdKHR                             ) vkGetInstanceProcAddr( instance, "vkImportFenceFdKHR" );
1158     vkGetFenceFdKHR                                = cast( PFN_vkGetFenceFdKHR                                ) vkGetInstanceProcAddr( instance, "vkGetFenceFdKHR" );
1159 
1160     // VK_KHR_draw_indirect_count
1161     vkCmdDrawIndirectCountKHR                      = cast( PFN_vkCmdDrawIndirectCountKHR                      ) vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectCountKHR" );
1162     vkCmdDrawIndexedIndirectCountKHR               = cast( PFN_vkCmdDrawIndexedIndirectCountKHR               ) vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirectCountKHR" );
1163 
1164     // VK_EXT_debug_marker
1165     vkDebugMarkerSetObjectTagEXT                   = cast( PFN_vkDebugMarkerSetObjectTagEXT                   ) vkGetInstanceProcAddr( instance, "vkDebugMarkerSetObjectTagEXT" );
1166     vkDebugMarkerSetObjectNameEXT                  = cast( PFN_vkDebugMarkerSetObjectNameEXT                  ) vkGetInstanceProcAddr( instance, "vkDebugMarkerSetObjectNameEXT" );
1167     vkCmdDebugMarkerBeginEXT                       = cast( PFN_vkCmdDebugMarkerBeginEXT                       ) vkGetInstanceProcAddr( instance, "vkCmdDebugMarkerBeginEXT" );
1168     vkCmdDebugMarkerEndEXT                         = cast( PFN_vkCmdDebugMarkerEndEXT                         ) vkGetInstanceProcAddr( instance, "vkCmdDebugMarkerEndEXT" );
1169     vkCmdDebugMarkerInsertEXT                      = cast( PFN_vkCmdDebugMarkerInsertEXT                      ) vkGetInstanceProcAddr( instance, "vkCmdDebugMarkerInsertEXT" );
1170 
1171     // VK_EXT_transform_feedback
1172     vkCmdBindTransformFeedbackBuffersEXT           = cast( PFN_vkCmdBindTransformFeedbackBuffersEXT           ) vkGetInstanceProcAddr( instance, "vkCmdBindTransformFeedbackBuffersEXT" );
1173     vkCmdBeginTransformFeedbackEXT                 = cast( PFN_vkCmdBeginTransformFeedbackEXT                 ) vkGetInstanceProcAddr( instance, "vkCmdBeginTransformFeedbackEXT" );
1174     vkCmdEndTransformFeedbackEXT                   = cast( PFN_vkCmdEndTransformFeedbackEXT                   ) vkGetInstanceProcAddr( instance, "vkCmdEndTransformFeedbackEXT" );
1175     vkCmdBeginQueryIndexedEXT                      = cast( PFN_vkCmdBeginQueryIndexedEXT                      ) vkGetInstanceProcAddr( instance, "vkCmdBeginQueryIndexedEXT" );
1176     vkCmdEndQueryIndexedEXT                        = cast( PFN_vkCmdEndQueryIndexedEXT                        ) vkGetInstanceProcAddr( instance, "vkCmdEndQueryIndexedEXT" );
1177     vkCmdDrawIndirectByteCountEXT                  = cast( PFN_vkCmdDrawIndirectByteCountEXT                  ) vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectByteCountEXT" );
1178 
1179     // VK_NVX_image_view_handle
1180     vkGetImageViewHandleNVX                        = cast( PFN_vkGetImageViewHandleNVX                        ) vkGetInstanceProcAddr( instance, "vkGetImageViewHandleNVX" );
1181 
1182     // VK_AMD_draw_indirect_count
1183     vkCmdDrawIndirectCountAMD                      = cast( PFN_vkCmdDrawIndirectCountAMD                      ) vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectCountAMD" );
1184     vkCmdDrawIndexedIndirectCountAMD               = cast( PFN_vkCmdDrawIndexedIndirectCountAMD               ) vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirectCountAMD" );
1185 
1186     // VK_AMD_shader_info
1187     vkGetShaderInfoAMD                             = cast( PFN_vkGetShaderInfoAMD                             ) vkGetInstanceProcAddr( instance, "vkGetShaderInfoAMD" );
1188 
1189     // VK_EXT_conditional_rendering
1190     vkCmdBeginConditionalRenderingEXT              = cast( PFN_vkCmdBeginConditionalRenderingEXT              ) vkGetInstanceProcAddr( instance, "vkCmdBeginConditionalRenderingEXT" );
1191     vkCmdEndConditionalRenderingEXT                = cast( PFN_vkCmdEndConditionalRenderingEXT                ) vkGetInstanceProcAddr( instance, "vkCmdEndConditionalRenderingEXT" );
1192 
1193     // VK_NVX_device_generated_commands
1194     vkCmdProcessCommandsNVX                        = cast( PFN_vkCmdProcessCommandsNVX                        ) vkGetInstanceProcAddr( instance, "vkCmdProcessCommandsNVX" );
1195     vkCmdReserveSpaceForCommandsNVX                = cast( PFN_vkCmdReserveSpaceForCommandsNVX                ) vkGetInstanceProcAddr( instance, "vkCmdReserveSpaceForCommandsNVX" );
1196     vkCreateIndirectCommandsLayoutNVX              = cast( PFN_vkCreateIndirectCommandsLayoutNVX              ) vkGetInstanceProcAddr( instance, "vkCreateIndirectCommandsLayoutNVX" );
1197     vkDestroyIndirectCommandsLayoutNVX             = cast( PFN_vkDestroyIndirectCommandsLayoutNVX             ) vkGetInstanceProcAddr( instance, "vkDestroyIndirectCommandsLayoutNVX" );
1198     vkCreateObjectTableNVX                         = cast( PFN_vkCreateObjectTableNVX                         ) vkGetInstanceProcAddr( instance, "vkCreateObjectTableNVX" );
1199     vkDestroyObjectTableNVX                        = cast( PFN_vkDestroyObjectTableNVX                        ) vkGetInstanceProcAddr( instance, "vkDestroyObjectTableNVX" );
1200     vkRegisterObjectsNVX                           = cast( PFN_vkRegisterObjectsNVX                           ) vkGetInstanceProcAddr( instance, "vkRegisterObjectsNVX" );
1201     vkUnregisterObjectsNVX                         = cast( PFN_vkUnregisterObjectsNVX                         ) vkGetInstanceProcAddr( instance, "vkUnregisterObjectsNVX" );
1202 
1203     // VK_NV_clip_space_w_scaling
1204     vkCmdSetViewportWScalingNV                     = cast( PFN_vkCmdSetViewportWScalingNV                     ) vkGetInstanceProcAddr( instance, "vkCmdSetViewportWScalingNV" );
1205 
1206     // VK_EXT_display_control
1207     vkDisplayPowerControlEXT                       = cast( PFN_vkDisplayPowerControlEXT                       ) vkGetInstanceProcAddr( instance, "vkDisplayPowerControlEXT" );
1208     vkRegisterDeviceEventEXT                       = cast( PFN_vkRegisterDeviceEventEXT                       ) vkGetInstanceProcAddr( instance, "vkRegisterDeviceEventEXT" );
1209     vkRegisterDisplayEventEXT                      = cast( PFN_vkRegisterDisplayEventEXT                      ) vkGetInstanceProcAddr( instance, "vkRegisterDisplayEventEXT" );
1210     vkGetSwapchainCounterEXT                       = cast( PFN_vkGetSwapchainCounterEXT                       ) vkGetInstanceProcAddr( instance, "vkGetSwapchainCounterEXT" );
1211 
1212     // VK_GOOGLE_display_timing
1213     vkGetRefreshCycleDurationGOOGLE                = cast( PFN_vkGetRefreshCycleDurationGOOGLE                ) vkGetInstanceProcAddr( instance, "vkGetRefreshCycleDurationGOOGLE" );
1214     vkGetPastPresentationTimingGOOGLE              = cast( PFN_vkGetPastPresentationTimingGOOGLE              ) vkGetInstanceProcAddr( instance, "vkGetPastPresentationTimingGOOGLE" );
1215 
1216     // VK_EXT_discard_rectangles
1217     vkCmdSetDiscardRectangleEXT                    = cast( PFN_vkCmdSetDiscardRectangleEXT                    ) vkGetInstanceProcAddr( instance, "vkCmdSetDiscardRectangleEXT" );
1218 
1219     // VK_EXT_hdr_metadata
1220     vkSetHdrMetadataEXT                            = cast( PFN_vkSetHdrMetadataEXT                            ) vkGetInstanceProcAddr( instance, "vkSetHdrMetadataEXT" );
1221 
1222     // VK_EXT_debug_utils
1223     vkSetDebugUtilsObjectNameEXT                   = cast( PFN_vkSetDebugUtilsObjectNameEXT                   ) vkGetInstanceProcAddr( instance, "vkSetDebugUtilsObjectNameEXT" );
1224     vkSetDebugUtilsObjectTagEXT                    = cast( PFN_vkSetDebugUtilsObjectTagEXT                    ) vkGetInstanceProcAddr( instance, "vkSetDebugUtilsObjectTagEXT" );
1225     vkQueueBeginDebugUtilsLabelEXT                 = cast( PFN_vkQueueBeginDebugUtilsLabelEXT                 ) vkGetInstanceProcAddr( instance, "vkQueueBeginDebugUtilsLabelEXT" );
1226     vkQueueEndDebugUtilsLabelEXT                   = cast( PFN_vkQueueEndDebugUtilsLabelEXT                   ) vkGetInstanceProcAddr( instance, "vkQueueEndDebugUtilsLabelEXT" );
1227     vkQueueInsertDebugUtilsLabelEXT                = cast( PFN_vkQueueInsertDebugUtilsLabelEXT                ) vkGetInstanceProcAddr( instance, "vkQueueInsertDebugUtilsLabelEXT" );
1228     vkCmdBeginDebugUtilsLabelEXT                   = cast( PFN_vkCmdBeginDebugUtilsLabelEXT                   ) vkGetInstanceProcAddr( instance, "vkCmdBeginDebugUtilsLabelEXT" );
1229     vkCmdEndDebugUtilsLabelEXT                     = cast( PFN_vkCmdEndDebugUtilsLabelEXT                     ) vkGetInstanceProcAddr( instance, "vkCmdEndDebugUtilsLabelEXT" );
1230     vkCmdInsertDebugUtilsLabelEXT                  = cast( PFN_vkCmdInsertDebugUtilsLabelEXT                  ) vkGetInstanceProcAddr( instance, "vkCmdInsertDebugUtilsLabelEXT" );
1231 
1232     // VK_EXT_sample_locations
1233     vkCmdSetSampleLocationsEXT                     = cast( PFN_vkCmdSetSampleLocationsEXT                     ) vkGetInstanceProcAddr( instance, "vkCmdSetSampleLocationsEXT" );
1234 
1235     // VK_EXT_image_drm_format_modifier
1236     vkGetImageDrmFormatModifierPropertiesEXT       = cast( PFN_vkGetImageDrmFormatModifierPropertiesEXT       ) vkGetInstanceProcAddr( instance, "vkGetImageDrmFormatModifierPropertiesEXT" );
1237 
1238     // VK_EXT_validation_cache
1239     vkCreateValidationCacheEXT                     = cast( PFN_vkCreateValidationCacheEXT                     ) vkGetInstanceProcAddr( instance, "vkCreateValidationCacheEXT" );
1240     vkDestroyValidationCacheEXT                    = cast( PFN_vkDestroyValidationCacheEXT                    ) vkGetInstanceProcAddr( instance, "vkDestroyValidationCacheEXT" );
1241     vkMergeValidationCachesEXT                     = cast( PFN_vkMergeValidationCachesEXT                     ) vkGetInstanceProcAddr( instance, "vkMergeValidationCachesEXT" );
1242     vkGetValidationCacheDataEXT                    = cast( PFN_vkGetValidationCacheDataEXT                    ) vkGetInstanceProcAddr( instance, "vkGetValidationCacheDataEXT" );
1243 
1244     // VK_NV_shading_rate_image
1245     vkCmdBindShadingRateImageNV                    = cast( PFN_vkCmdBindShadingRateImageNV                    ) vkGetInstanceProcAddr( instance, "vkCmdBindShadingRateImageNV" );
1246     vkCmdSetViewportShadingRatePaletteNV           = cast( PFN_vkCmdSetViewportShadingRatePaletteNV           ) vkGetInstanceProcAddr( instance, "vkCmdSetViewportShadingRatePaletteNV" );
1247     vkCmdSetCoarseSampleOrderNV                    = cast( PFN_vkCmdSetCoarseSampleOrderNV                    ) vkGetInstanceProcAddr( instance, "vkCmdSetCoarseSampleOrderNV" );
1248 
1249     // VK_NV_ray_tracing
1250     vkCreateAccelerationStructureNV                = cast( PFN_vkCreateAccelerationStructureNV                ) vkGetInstanceProcAddr( instance, "vkCreateAccelerationStructureNV" );
1251     vkDestroyAccelerationStructureNV               = cast( PFN_vkDestroyAccelerationStructureNV               ) vkGetInstanceProcAddr( instance, "vkDestroyAccelerationStructureNV" );
1252     vkGetAccelerationStructureMemoryRequirementsNV = cast( PFN_vkGetAccelerationStructureMemoryRequirementsNV ) vkGetInstanceProcAddr( instance, "vkGetAccelerationStructureMemoryRequirementsNV" );
1253     vkBindAccelerationStructureMemoryNV            = cast( PFN_vkBindAccelerationStructureMemoryNV            ) vkGetInstanceProcAddr( instance, "vkBindAccelerationStructureMemoryNV" );
1254     vkCmdBuildAccelerationStructureNV              = cast( PFN_vkCmdBuildAccelerationStructureNV              ) vkGetInstanceProcAddr( instance, "vkCmdBuildAccelerationStructureNV" );
1255     vkCmdCopyAccelerationStructureNV               = cast( PFN_vkCmdCopyAccelerationStructureNV               ) vkGetInstanceProcAddr( instance, "vkCmdCopyAccelerationStructureNV" );
1256     vkCmdTraceRaysNV                               = cast( PFN_vkCmdTraceRaysNV                               ) vkGetInstanceProcAddr( instance, "vkCmdTraceRaysNV" );
1257     vkCreateRayTracingPipelinesNV                  = cast( PFN_vkCreateRayTracingPipelinesNV                  ) vkGetInstanceProcAddr( instance, "vkCreateRayTracingPipelinesNV" );
1258     vkGetRayTracingShaderGroupHandlesNV            = cast( PFN_vkGetRayTracingShaderGroupHandlesNV            ) vkGetInstanceProcAddr( instance, "vkGetRayTracingShaderGroupHandlesNV" );
1259     vkGetAccelerationStructureHandleNV             = cast( PFN_vkGetAccelerationStructureHandleNV             ) vkGetInstanceProcAddr( instance, "vkGetAccelerationStructureHandleNV" );
1260     vkCmdWriteAccelerationStructuresPropertiesNV   = cast( PFN_vkCmdWriteAccelerationStructuresPropertiesNV   ) vkGetInstanceProcAddr( instance, "vkCmdWriteAccelerationStructuresPropertiesNV" );
1261     vkCompileDeferredNV                            = cast( PFN_vkCompileDeferredNV                            ) vkGetInstanceProcAddr( instance, "vkCompileDeferredNV" );
1262 
1263     // VK_EXT_external_memory_host
1264     vkGetMemoryHostPointerPropertiesEXT            = cast( PFN_vkGetMemoryHostPointerPropertiesEXT            ) vkGetInstanceProcAddr( instance, "vkGetMemoryHostPointerPropertiesEXT" );
1265 
1266     // VK_AMD_buffer_marker
1267     vkCmdWriteBufferMarkerAMD                      = cast( PFN_vkCmdWriteBufferMarkerAMD                      ) vkGetInstanceProcAddr( instance, "vkCmdWriteBufferMarkerAMD" );
1268 
1269     // VK_EXT_calibrated_timestamps
1270     vkGetCalibratedTimestampsEXT                   = cast( PFN_vkGetCalibratedTimestampsEXT                   ) vkGetInstanceProcAddr( instance, "vkGetCalibratedTimestampsEXT" );
1271 
1272     // VK_NV_mesh_shader
1273     vkCmdDrawMeshTasksNV                           = cast( PFN_vkCmdDrawMeshTasksNV                           ) vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksNV" );
1274     vkCmdDrawMeshTasksIndirectNV                   = cast( PFN_vkCmdDrawMeshTasksIndirectNV                   ) vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksIndirectNV" );
1275     vkCmdDrawMeshTasksIndirectCountNV              = cast( PFN_vkCmdDrawMeshTasksIndirectCountNV              ) vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksIndirectCountNV" );
1276 
1277     // VK_NV_scissor_exclusive
1278     vkCmdSetExclusiveScissorNV                     = cast( PFN_vkCmdSetExclusiveScissorNV                     ) vkGetInstanceProcAddr( instance, "vkCmdSetExclusiveScissorNV" );
1279 
1280     // VK_NV_device_diagnostic_checkpoints
1281     vkCmdSetCheckpointNV                           = cast( PFN_vkCmdSetCheckpointNV                           ) vkGetInstanceProcAddr( instance, "vkCmdSetCheckpointNV" );
1282     vkGetQueueCheckpointDataNV                     = cast( PFN_vkGetQueueCheckpointDataNV                     ) vkGetInstanceProcAddr( instance, "vkGetQueueCheckpointDataNV" );
1283 
1284     // VK_EXT_buffer_device_address
1285     vkGetBufferDeviceAddressEXT                    = cast( PFN_vkGetBufferDeviceAddressEXT                    ) vkGetInstanceProcAddr( instance, "vkGetBufferDeviceAddressEXT" );
1286 
1287     // VK_EXT_host_query_reset
1288     vkResetQueryPoolEXT                            = cast( PFN_vkResetQueryPoolEXT                            ) vkGetInstanceProcAddr( instance, "vkResetQueryPoolEXT" );
1289 }
1290 
1291 
1292 /// with a valid VkDevice call this function to retrieve VkDevice, VkQueue and VkCommandBuffer related functions
1293 /// the functions call directly VkDevice and related resources and can be retrieved for one and only one VkDevice
1294 /// calling this function again with another VkDevices will overwrite the __gshared functions retrieved previously
1295 /// see module erupted.dispatch_device if multiple VkDevices will be used
1296 void loadDeviceLevelFunctions( VkDevice device ) {
1297     assert( vkGetDeviceProcAddr !is null, "Function pointer vkGetDeviceProcAddr is null!\nCall loadGlobalLevelFunctions -> loadInstanceLevelFunctions -> loadDeviceLevelFunctions( device )" );
1298 
1299     // VK_VERSION_1_0
1300     vkDestroyDevice                                = cast( PFN_vkDestroyDevice                                ) vkGetDeviceProcAddr( device, "vkDestroyDevice" );
1301     vkGetDeviceQueue                               = cast( PFN_vkGetDeviceQueue                               ) vkGetDeviceProcAddr( device, "vkGetDeviceQueue" );
1302     vkQueueSubmit                                  = cast( PFN_vkQueueSubmit                                  ) vkGetDeviceProcAddr( device, "vkQueueSubmit" );
1303     vkQueueWaitIdle                                = cast( PFN_vkQueueWaitIdle                                ) vkGetDeviceProcAddr( device, "vkQueueWaitIdle" );
1304     vkDeviceWaitIdle                               = cast( PFN_vkDeviceWaitIdle                               ) vkGetDeviceProcAddr( device, "vkDeviceWaitIdle" );
1305     vkAllocateMemory                               = cast( PFN_vkAllocateMemory                               ) vkGetDeviceProcAddr( device, "vkAllocateMemory" );
1306     vkFreeMemory                                   = cast( PFN_vkFreeMemory                                   ) vkGetDeviceProcAddr( device, "vkFreeMemory" );
1307     vkMapMemory                                    = cast( PFN_vkMapMemory                                    ) vkGetDeviceProcAddr( device, "vkMapMemory" );
1308     vkUnmapMemory                                  = cast( PFN_vkUnmapMemory                                  ) vkGetDeviceProcAddr( device, "vkUnmapMemory" );
1309     vkFlushMappedMemoryRanges                      = cast( PFN_vkFlushMappedMemoryRanges                      ) vkGetDeviceProcAddr( device, "vkFlushMappedMemoryRanges" );
1310     vkInvalidateMappedMemoryRanges                 = cast( PFN_vkInvalidateMappedMemoryRanges                 ) vkGetDeviceProcAddr( device, "vkInvalidateMappedMemoryRanges" );
1311     vkGetDeviceMemoryCommitment                    = cast( PFN_vkGetDeviceMemoryCommitment                    ) vkGetDeviceProcAddr( device, "vkGetDeviceMemoryCommitment" );
1312     vkBindBufferMemory                             = cast( PFN_vkBindBufferMemory                             ) vkGetDeviceProcAddr( device, "vkBindBufferMemory" );
1313     vkBindImageMemory                              = cast( PFN_vkBindImageMemory                              ) vkGetDeviceProcAddr( device, "vkBindImageMemory" );
1314     vkGetBufferMemoryRequirements                  = cast( PFN_vkGetBufferMemoryRequirements                  ) vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements" );
1315     vkGetImageMemoryRequirements                   = cast( PFN_vkGetImageMemoryRequirements                   ) vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements" );
1316     vkGetImageSparseMemoryRequirements             = cast( PFN_vkGetImageSparseMemoryRequirements             ) vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements" );
1317     vkQueueBindSparse                              = cast( PFN_vkQueueBindSparse                              ) vkGetDeviceProcAddr( device, "vkQueueBindSparse" );
1318     vkCreateFence                                  = cast( PFN_vkCreateFence                                  ) vkGetDeviceProcAddr( device, "vkCreateFence" );
1319     vkDestroyFence                                 = cast( PFN_vkDestroyFence                                 ) vkGetDeviceProcAddr( device, "vkDestroyFence" );
1320     vkResetFences                                  = cast( PFN_vkResetFences                                  ) vkGetDeviceProcAddr( device, "vkResetFences" );
1321     vkGetFenceStatus                               = cast( PFN_vkGetFenceStatus                               ) vkGetDeviceProcAddr( device, "vkGetFenceStatus" );
1322     vkWaitForFences                                = cast( PFN_vkWaitForFences                                ) vkGetDeviceProcAddr( device, "vkWaitForFences" );
1323     vkCreateSemaphore                              = cast( PFN_vkCreateSemaphore                              ) vkGetDeviceProcAddr( device, "vkCreateSemaphore" );
1324     vkDestroySemaphore                             = cast( PFN_vkDestroySemaphore                             ) vkGetDeviceProcAddr( device, "vkDestroySemaphore" );
1325     vkCreateEvent                                  = cast( PFN_vkCreateEvent                                  ) vkGetDeviceProcAddr( device, "vkCreateEvent" );
1326     vkDestroyEvent                                 = cast( PFN_vkDestroyEvent                                 ) vkGetDeviceProcAddr( device, "vkDestroyEvent" );
1327     vkGetEventStatus                               = cast( PFN_vkGetEventStatus                               ) vkGetDeviceProcAddr( device, "vkGetEventStatus" );
1328     vkSetEvent                                     = cast( PFN_vkSetEvent                                     ) vkGetDeviceProcAddr( device, "vkSetEvent" );
1329     vkResetEvent                                   = cast( PFN_vkResetEvent                                   ) vkGetDeviceProcAddr( device, "vkResetEvent" );
1330     vkCreateQueryPool                              = cast( PFN_vkCreateQueryPool                              ) vkGetDeviceProcAddr( device, "vkCreateQueryPool" );
1331     vkDestroyQueryPool                             = cast( PFN_vkDestroyQueryPool                             ) vkGetDeviceProcAddr( device, "vkDestroyQueryPool" );
1332     vkGetQueryPoolResults                          = cast( PFN_vkGetQueryPoolResults                          ) vkGetDeviceProcAddr( device, "vkGetQueryPoolResults" );
1333     vkCreateBuffer                                 = cast( PFN_vkCreateBuffer                                 ) vkGetDeviceProcAddr( device, "vkCreateBuffer" );
1334     vkDestroyBuffer                                = cast( PFN_vkDestroyBuffer                                ) vkGetDeviceProcAddr( device, "vkDestroyBuffer" );
1335     vkCreateBufferView                             = cast( PFN_vkCreateBufferView                             ) vkGetDeviceProcAddr( device, "vkCreateBufferView" );
1336     vkDestroyBufferView                            = cast( PFN_vkDestroyBufferView                            ) vkGetDeviceProcAddr( device, "vkDestroyBufferView" );
1337     vkCreateImage                                  = cast( PFN_vkCreateImage                                  ) vkGetDeviceProcAddr( device, "vkCreateImage" );
1338     vkDestroyImage                                 = cast( PFN_vkDestroyImage                                 ) vkGetDeviceProcAddr( device, "vkDestroyImage" );
1339     vkGetImageSubresourceLayout                    = cast( PFN_vkGetImageSubresourceLayout                    ) vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout" );
1340     vkCreateImageView                              = cast( PFN_vkCreateImageView                              ) vkGetDeviceProcAddr( device, "vkCreateImageView" );
1341     vkDestroyImageView                             = cast( PFN_vkDestroyImageView                             ) vkGetDeviceProcAddr( device, "vkDestroyImageView" );
1342     vkCreateShaderModule                           = cast( PFN_vkCreateShaderModule                           ) vkGetDeviceProcAddr( device, "vkCreateShaderModule" );
1343     vkDestroyShaderModule                          = cast( PFN_vkDestroyShaderModule                          ) vkGetDeviceProcAddr( device, "vkDestroyShaderModule" );
1344     vkCreatePipelineCache                          = cast( PFN_vkCreatePipelineCache                          ) vkGetDeviceProcAddr( device, "vkCreatePipelineCache" );
1345     vkDestroyPipelineCache                         = cast( PFN_vkDestroyPipelineCache                         ) vkGetDeviceProcAddr( device, "vkDestroyPipelineCache" );
1346     vkGetPipelineCacheData                         = cast( PFN_vkGetPipelineCacheData                         ) vkGetDeviceProcAddr( device, "vkGetPipelineCacheData" );
1347     vkMergePipelineCaches                          = cast( PFN_vkMergePipelineCaches                          ) vkGetDeviceProcAddr( device, "vkMergePipelineCaches" );
1348     vkCreateGraphicsPipelines                      = cast( PFN_vkCreateGraphicsPipelines                      ) vkGetDeviceProcAddr( device, "vkCreateGraphicsPipelines" );
1349     vkCreateComputePipelines                       = cast( PFN_vkCreateComputePipelines                       ) vkGetDeviceProcAddr( device, "vkCreateComputePipelines" );
1350     vkDestroyPipeline                              = cast( PFN_vkDestroyPipeline                              ) vkGetDeviceProcAddr( device, "vkDestroyPipeline" );
1351     vkCreatePipelineLayout                         = cast( PFN_vkCreatePipelineLayout                         ) vkGetDeviceProcAddr( device, "vkCreatePipelineLayout" );
1352     vkDestroyPipelineLayout                        = cast( PFN_vkDestroyPipelineLayout                        ) vkGetDeviceProcAddr( device, "vkDestroyPipelineLayout" );
1353     vkCreateSampler                                = cast( PFN_vkCreateSampler                                ) vkGetDeviceProcAddr( device, "vkCreateSampler" );
1354     vkDestroySampler                               = cast( PFN_vkDestroySampler                               ) vkGetDeviceProcAddr( device, "vkDestroySampler" );
1355     vkCreateDescriptorSetLayout                    = cast( PFN_vkCreateDescriptorSetLayout                    ) vkGetDeviceProcAddr( device, "vkCreateDescriptorSetLayout" );
1356     vkDestroyDescriptorSetLayout                   = cast( PFN_vkDestroyDescriptorSetLayout                   ) vkGetDeviceProcAddr( device, "vkDestroyDescriptorSetLayout" );
1357     vkCreateDescriptorPool                         = cast( PFN_vkCreateDescriptorPool                         ) vkGetDeviceProcAddr( device, "vkCreateDescriptorPool" );
1358     vkDestroyDescriptorPool                        = cast( PFN_vkDestroyDescriptorPool                        ) vkGetDeviceProcAddr( device, "vkDestroyDescriptorPool" );
1359     vkResetDescriptorPool                          = cast( PFN_vkResetDescriptorPool                          ) vkGetDeviceProcAddr( device, "vkResetDescriptorPool" );
1360     vkAllocateDescriptorSets                       = cast( PFN_vkAllocateDescriptorSets                       ) vkGetDeviceProcAddr( device, "vkAllocateDescriptorSets" );
1361     vkFreeDescriptorSets                           = cast( PFN_vkFreeDescriptorSets                           ) vkGetDeviceProcAddr( device, "vkFreeDescriptorSets" );
1362     vkUpdateDescriptorSets                         = cast( PFN_vkUpdateDescriptorSets                         ) vkGetDeviceProcAddr( device, "vkUpdateDescriptorSets" );
1363     vkCreateFramebuffer                            = cast( PFN_vkCreateFramebuffer                            ) vkGetDeviceProcAddr( device, "vkCreateFramebuffer" );
1364     vkDestroyFramebuffer                           = cast( PFN_vkDestroyFramebuffer                           ) vkGetDeviceProcAddr( device, "vkDestroyFramebuffer" );
1365     vkCreateRenderPass                             = cast( PFN_vkCreateRenderPass                             ) vkGetDeviceProcAddr( device, "vkCreateRenderPass" );
1366     vkDestroyRenderPass                            = cast( PFN_vkDestroyRenderPass                            ) vkGetDeviceProcAddr( device, "vkDestroyRenderPass" );
1367     vkGetRenderAreaGranularity                     = cast( PFN_vkGetRenderAreaGranularity                     ) vkGetDeviceProcAddr( device, "vkGetRenderAreaGranularity" );
1368     vkCreateCommandPool                            = cast( PFN_vkCreateCommandPool                            ) vkGetDeviceProcAddr( device, "vkCreateCommandPool" );
1369     vkDestroyCommandPool                           = cast( PFN_vkDestroyCommandPool                           ) vkGetDeviceProcAddr( device, "vkDestroyCommandPool" );
1370     vkResetCommandPool                             = cast( PFN_vkResetCommandPool                             ) vkGetDeviceProcAddr( device, "vkResetCommandPool" );
1371     vkAllocateCommandBuffers                       = cast( PFN_vkAllocateCommandBuffers                       ) vkGetDeviceProcAddr( device, "vkAllocateCommandBuffers" );
1372     vkFreeCommandBuffers                           = cast( PFN_vkFreeCommandBuffers                           ) vkGetDeviceProcAddr( device, "vkFreeCommandBuffers" );
1373     vkBeginCommandBuffer                           = cast( PFN_vkBeginCommandBuffer                           ) vkGetDeviceProcAddr( device, "vkBeginCommandBuffer" );
1374     vkEndCommandBuffer                             = cast( PFN_vkEndCommandBuffer                             ) vkGetDeviceProcAddr( device, "vkEndCommandBuffer" );
1375     vkResetCommandBuffer                           = cast( PFN_vkResetCommandBuffer                           ) vkGetDeviceProcAddr( device, "vkResetCommandBuffer" );
1376     vkCmdBindPipeline                              = cast( PFN_vkCmdBindPipeline                              ) vkGetDeviceProcAddr( device, "vkCmdBindPipeline" );
1377     vkCmdSetViewport                               = cast( PFN_vkCmdSetViewport                               ) vkGetDeviceProcAddr( device, "vkCmdSetViewport" );
1378     vkCmdSetScissor                                = cast( PFN_vkCmdSetScissor                                ) vkGetDeviceProcAddr( device, "vkCmdSetScissor" );
1379     vkCmdSetLineWidth                              = cast( PFN_vkCmdSetLineWidth                              ) vkGetDeviceProcAddr( device, "vkCmdSetLineWidth" );
1380     vkCmdSetDepthBias                              = cast( PFN_vkCmdSetDepthBias                              ) vkGetDeviceProcAddr( device, "vkCmdSetDepthBias" );
1381     vkCmdSetBlendConstants                         = cast( PFN_vkCmdSetBlendConstants                         ) vkGetDeviceProcAddr( device, "vkCmdSetBlendConstants" );
1382     vkCmdSetDepthBounds                            = cast( PFN_vkCmdSetDepthBounds                            ) vkGetDeviceProcAddr( device, "vkCmdSetDepthBounds" );
1383     vkCmdSetStencilCompareMask                     = cast( PFN_vkCmdSetStencilCompareMask                     ) vkGetDeviceProcAddr( device, "vkCmdSetStencilCompareMask" );
1384     vkCmdSetStencilWriteMask                       = cast( PFN_vkCmdSetStencilWriteMask                       ) vkGetDeviceProcAddr( device, "vkCmdSetStencilWriteMask" );
1385     vkCmdSetStencilReference                       = cast( PFN_vkCmdSetStencilReference                       ) vkGetDeviceProcAddr( device, "vkCmdSetStencilReference" );
1386     vkCmdBindDescriptorSets                        = cast( PFN_vkCmdBindDescriptorSets                        ) vkGetDeviceProcAddr( device, "vkCmdBindDescriptorSets" );
1387     vkCmdBindIndexBuffer                           = cast( PFN_vkCmdBindIndexBuffer                           ) vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer" );
1388     vkCmdBindVertexBuffers                         = cast( PFN_vkCmdBindVertexBuffers                         ) vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers" );
1389     vkCmdDraw                                      = cast( PFN_vkCmdDraw                                      ) vkGetDeviceProcAddr( device, "vkCmdDraw" );
1390     vkCmdDrawIndexed                               = cast( PFN_vkCmdDrawIndexed                               ) vkGetDeviceProcAddr( device, "vkCmdDrawIndexed" );
1391     vkCmdDrawIndirect                              = cast( PFN_vkCmdDrawIndirect                              ) vkGetDeviceProcAddr( device, "vkCmdDrawIndirect" );
1392     vkCmdDrawIndexedIndirect                       = cast( PFN_vkCmdDrawIndexedIndirect                       ) vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirect" );
1393     vkCmdDispatch                                  = cast( PFN_vkCmdDispatch                                  ) vkGetDeviceProcAddr( device, "vkCmdDispatch" );
1394     vkCmdDispatchIndirect                          = cast( PFN_vkCmdDispatchIndirect                          ) vkGetDeviceProcAddr( device, "vkCmdDispatchIndirect" );
1395     vkCmdCopyBuffer                                = cast( PFN_vkCmdCopyBuffer                                ) vkGetDeviceProcAddr( device, "vkCmdCopyBuffer" );
1396     vkCmdCopyImage                                 = cast( PFN_vkCmdCopyImage                                 ) vkGetDeviceProcAddr( device, "vkCmdCopyImage" );
1397     vkCmdBlitImage                                 = cast( PFN_vkCmdBlitImage                                 ) vkGetDeviceProcAddr( device, "vkCmdBlitImage" );
1398     vkCmdCopyBufferToImage                         = cast( PFN_vkCmdCopyBufferToImage                         ) vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage" );
1399     vkCmdCopyImageToBuffer                         = cast( PFN_vkCmdCopyImageToBuffer                         ) vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer" );
1400     vkCmdUpdateBuffer                              = cast( PFN_vkCmdUpdateBuffer                              ) vkGetDeviceProcAddr( device, "vkCmdUpdateBuffer" );
1401     vkCmdFillBuffer                                = cast( PFN_vkCmdFillBuffer                                ) vkGetDeviceProcAddr( device, "vkCmdFillBuffer" );
1402     vkCmdClearColorImage                           = cast( PFN_vkCmdClearColorImage                           ) vkGetDeviceProcAddr( device, "vkCmdClearColorImage" );
1403     vkCmdClearDepthStencilImage                    = cast( PFN_vkCmdClearDepthStencilImage                    ) vkGetDeviceProcAddr( device, "vkCmdClearDepthStencilImage" );
1404     vkCmdClearAttachments                          = cast( PFN_vkCmdClearAttachments                          ) vkGetDeviceProcAddr( device, "vkCmdClearAttachments" );
1405     vkCmdResolveImage                              = cast( PFN_vkCmdResolveImage                              ) vkGetDeviceProcAddr( device, "vkCmdResolveImage" );
1406     vkCmdSetEvent                                  = cast( PFN_vkCmdSetEvent                                  ) vkGetDeviceProcAddr( device, "vkCmdSetEvent" );
1407     vkCmdResetEvent                                = cast( PFN_vkCmdResetEvent                                ) vkGetDeviceProcAddr( device, "vkCmdResetEvent" );
1408     vkCmdWaitEvents                                = cast( PFN_vkCmdWaitEvents                                ) vkGetDeviceProcAddr( device, "vkCmdWaitEvents" );
1409     vkCmdPipelineBarrier                           = cast( PFN_vkCmdPipelineBarrier                           ) vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier" );
1410     vkCmdBeginQuery                                = cast( PFN_vkCmdBeginQuery                                ) vkGetDeviceProcAddr( device, "vkCmdBeginQuery" );
1411     vkCmdEndQuery                                  = cast( PFN_vkCmdEndQuery                                  ) vkGetDeviceProcAddr( device, "vkCmdEndQuery" );
1412     vkCmdResetQueryPool                            = cast( PFN_vkCmdResetQueryPool                            ) vkGetDeviceProcAddr( device, "vkCmdResetQueryPool" );
1413     vkCmdWriteTimestamp                            = cast( PFN_vkCmdWriteTimestamp                            ) vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp" );
1414     vkCmdCopyQueryPoolResults                      = cast( PFN_vkCmdCopyQueryPoolResults                      ) vkGetDeviceProcAddr( device, "vkCmdCopyQueryPoolResults" );
1415     vkCmdPushConstants                             = cast( PFN_vkCmdPushConstants                             ) vkGetDeviceProcAddr( device, "vkCmdPushConstants" );
1416     vkCmdBeginRenderPass                           = cast( PFN_vkCmdBeginRenderPass                           ) vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass" );
1417     vkCmdNextSubpass                               = cast( PFN_vkCmdNextSubpass                               ) vkGetDeviceProcAddr( device, "vkCmdNextSubpass" );
1418     vkCmdEndRenderPass                             = cast( PFN_vkCmdEndRenderPass                             ) vkGetDeviceProcAddr( device, "vkCmdEndRenderPass" );
1419     vkCmdExecuteCommands                           = cast( PFN_vkCmdExecuteCommands                           ) vkGetDeviceProcAddr( device, "vkCmdExecuteCommands" );
1420 
1421     // VK_VERSION_1_1
1422     vkBindBufferMemory2                            = cast( PFN_vkBindBufferMemory2                            ) vkGetDeviceProcAddr( device, "vkBindBufferMemory2" );
1423     vkBindImageMemory2                             = cast( PFN_vkBindImageMemory2                             ) vkGetDeviceProcAddr( device, "vkBindImageMemory2" );
1424     vkGetDeviceGroupPeerMemoryFeatures             = cast( PFN_vkGetDeviceGroupPeerMemoryFeatures             ) vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeatures" );
1425     vkCmdSetDeviceMask                             = cast( PFN_vkCmdSetDeviceMask                             ) vkGetDeviceProcAddr( device, "vkCmdSetDeviceMask" );
1426     vkCmdDispatchBase                              = cast( PFN_vkCmdDispatchBase                              ) vkGetDeviceProcAddr( device, "vkCmdDispatchBase" );
1427     vkGetImageMemoryRequirements2                  = cast( PFN_vkGetImageMemoryRequirements2                  ) vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2" );
1428     vkGetBufferMemoryRequirements2                 = cast( PFN_vkGetBufferMemoryRequirements2                 ) vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2" );
1429     vkGetImageSparseMemoryRequirements2            = cast( PFN_vkGetImageSparseMemoryRequirements2            ) vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2" );
1430     vkTrimCommandPool                              = cast( PFN_vkTrimCommandPool                              ) vkGetDeviceProcAddr( device, "vkTrimCommandPool" );
1431     vkGetDeviceQueue2                              = cast( PFN_vkGetDeviceQueue2                              ) vkGetDeviceProcAddr( device, "vkGetDeviceQueue2" );
1432     vkCreateSamplerYcbcrConversion                 = cast( PFN_vkCreateSamplerYcbcrConversion                 ) vkGetDeviceProcAddr( device, "vkCreateSamplerYcbcrConversion" );
1433     vkDestroySamplerYcbcrConversion                = cast( PFN_vkDestroySamplerYcbcrConversion                ) vkGetDeviceProcAddr( device, "vkDestroySamplerYcbcrConversion" );
1434     vkCreateDescriptorUpdateTemplate               = cast( PFN_vkCreateDescriptorUpdateTemplate               ) vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplate" );
1435     vkDestroyDescriptorUpdateTemplate              = cast( PFN_vkDestroyDescriptorUpdateTemplate              ) vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplate" );
1436     vkUpdateDescriptorSetWithTemplate              = cast( PFN_vkUpdateDescriptorSetWithTemplate              ) vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplate" );
1437     vkGetDescriptorSetLayoutSupport                = cast( PFN_vkGetDescriptorSetLayoutSupport                ) vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSupport" );
1438 
1439     // VK_KHR_swapchain
1440     vkCreateSwapchainKHR                           = cast( PFN_vkCreateSwapchainKHR                           ) vkGetDeviceProcAddr( device, "vkCreateSwapchainKHR" );
1441     vkDestroySwapchainKHR                          = cast( PFN_vkDestroySwapchainKHR                          ) vkGetDeviceProcAddr( device, "vkDestroySwapchainKHR" );
1442     vkGetSwapchainImagesKHR                        = cast( PFN_vkGetSwapchainImagesKHR                        ) vkGetDeviceProcAddr( device, "vkGetSwapchainImagesKHR" );
1443     vkAcquireNextImageKHR                          = cast( PFN_vkAcquireNextImageKHR                          ) vkGetDeviceProcAddr( device, "vkAcquireNextImageKHR" );
1444     vkQueuePresentKHR                              = cast( PFN_vkQueuePresentKHR                              ) vkGetDeviceProcAddr( device, "vkQueuePresentKHR" );
1445     vkGetDeviceGroupPresentCapabilitiesKHR         = cast( PFN_vkGetDeviceGroupPresentCapabilitiesKHR         ) vkGetDeviceProcAddr( device, "vkGetDeviceGroupPresentCapabilitiesKHR" );
1446     vkGetDeviceGroupSurfacePresentModesKHR         = cast( PFN_vkGetDeviceGroupSurfacePresentModesKHR         ) vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModesKHR" );
1447     vkAcquireNextImage2KHR                         = cast( PFN_vkAcquireNextImage2KHR                         ) vkGetDeviceProcAddr( device, "vkAcquireNextImage2KHR" );
1448 
1449     // VK_KHR_display_swapchain
1450     vkCreateSharedSwapchainsKHR                    = cast( PFN_vkCreateSharedSwapchainsKHR                    ) vkGetDeviceProcAddr( device, "vkCreateSharedSwapchainsKHR" );
1451 
1452     // VK_KHR_device_group
1453     vkGetDeviceGroupSurfacePresentModes2EXT        = cast( PFN_vkGetDeviceGroupSurfacePresentModes2EXT        ) vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModes2EXT" );
1454 
1455     // VK_KHR_external_memory_fd
1456     vkGetMemoryFdKHR                               = cast( PFN_vkGetMemoryFdKHR                               ) vkGetDeviceProcAddr( device, "vkGetMemoryFdKHR" );
1457     vkGetMemoryFdPropertiesKHR                     = cast( PFN_vkGetMemoryFdPropertiesKHR                     ) vkGetDeviceProcAddr( device, "vkGetMemoryFdPropertiesKHR" );
1458 
1459     // VK_KHR_external_semaphore_fd
1460     vkImportSemaphoreFdKHR                         = cast( PFN_vkImportSemaphoreFdKHR                         ) vkGetDeviceProcAddr( device, "vkImportSemaphoreFdKHR" );
1461     vkGetSemaphoreFdKHR                            = cast( PFN_vkGetSemaphoreFdKHR                            ) vkGetDeviceProcAddr( device, "vkGetSemaphoreFdKHR" );
1462 
1463     // VK_KHR_push_descriptor
1464     vkCmdPushDescriptorSetKHR                      = cast( PFN_vkCmdPushDescriptorSetKHR                      ) vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetKHR" );
1465     vkCmdPushDescriptorSetWithTemplateKHR          = cast( PFN_vkCmdPushDescriptorSetWithTemplateKHR          ) vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplateKHR" );
1466 
1467     // VK_KHR_create_renderpass2
1468     vkCreateRenderPass2KHR                         = cast( PFN_vkCreateRenderPass2KHR                         ) vkGetDeviceProcAddr( device, "vkCreateRenderPass2KHR" );
1469     vkCmdBeginRenderPass2KHR                       = cast( PFN_vkCmdBeginRenderPass2KHR                       ) vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass2KHR" );
1470     vkCmdNextSubpass2KHR                           = cast( PFN_vkCmdNextSubpass2KHR                           ) vkGetDeviceProcAddr( device, "vkCmdNextSubpass2KHR" );
1471     vkCmdEndRenderPass2KHR                         = cast( PFN_vkCmdEndRenderPass2KHR                         ) vkGetDeviceProcAddr( device, "vkCmdEndRenderPass2KHR" );
1472 
1473     // VK_KHR_shared_presentable_image
1474     vkGetSwapchainStatusKHR                        = cast( PFN_vkGetSwapchainStatusKHR                        ) vkGetDeviceProcAddr( device, "vkGetSwapchainStatusKHR" );
1475 
1476     // VK_KHR_external_fence_fd
1477     vkImportFenceFdKHR                             = cast( PFN_vkImportFenceFdKHR                             ) vkGetDeviceProcAddr( device, "vkImportFenceFdKHR" );
1478     vkGetFenceFdKHR                                = cast( PFN_vkGetFenceFdKHR                                ) vkGetDeviceProcAddr( device, "vkGetFenceFdKHR" );
1479 
1480     // VK_KHR_draw_indirect_count
1481     vkCmdDrawIndirectCountKHR                      = cast( PFN_vkCmdDrawIndirectCountKHR                      ) vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountKHR" );
1482     vkCmdDrawIndexedIndirectCountKHR               = cast( PFN_vkCmdDrawIndexedIndirectCountKHR               ) vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountKHR" );
1483 
1484     // VK_EXT_debug_marker
1485     vkDebugMarkerSetObjectTagEXT                   = cast( PFN_vkDebugMarkerSetObjectTagEXT                   ) vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectTagEXT" );
1486     vkDebugMarkerSetObjectNameEXT                  = cast( PFN_vkDebugMarkerSetObjectNameEXT                  ) vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectNameEXT" );
1487     vkCmdDebugMarkerBeginEXT                       = cast( PFN_vkCmdDebugMarkerBeginEXT                       ) vkGetDeviceProcAddr( device, "vkCmdDebugMarkerBeginEXT" );
1488     vkCmdDebugMarkerEndEXT                         = cast( PFN_vkCmdDebugMarkerEndEXT                         ) vkGetDeviceProcAddr( device, "vkCmdDebugMarkerEndEXT" );
1489     vkCmdDebugMarkerInsertEXT                      = cast( PFN_vkCmdDebugMarkerInsertEXT                      ) vkGetDeviceProcAddr( device, "vkCmdDebugMarkerInsertEXT" );
1490 
1491     // VK_EXT_transform_feedback
1492     vkCmdBindTransformFeedbackBuffersEXT           = cast( PFN_vkCmdBindTransformFeedbackBuffersEXT           ) vkGetDeviceProcAddr( device, "vkCmdBindTransformFeedbackBuffersEXT" );
1493     vkCmdBeginTransformFeedbackEXT                 = cast( PFN_vkCmdBeginTransformFeedbackEXT                 ) vkGetDeviceProcAddr( device, "vkCmdBeginTransformFeedbackEXT" );
1494     vkCmdEndTransformFeedbackEXT                   = cast( PFN_vkCmdEndTransformFeedbackEXT                   ) vkGetDeviceProcAddr( device, "vkCmdEndTransformFeedbackEXT" );
1495     vkCmdBeginQueryIndexedEXT                      = cast( PFN_vkCmdBeginQueryIndexedEXT                      ) vkGetDeviceProcAddr( device, "vkCmdBeginQueryIndexedEXT" );
1496     vkCmdEndQueryIndexedEXT                        = cast( PFN_vkCmdEndQueryIndexedEXT                        ) vkGetDeviceProcAddr( device, "vkCmdEndQueryIndexedEXT" );
1497     vkCmdDrawIndirectByteCountEXT                  = cast( PFN_vkCmdDrawIndirectByteCountEXT                  ) vkGetDeviceProcAddr( device, "vkCmdDrawIndirectByteCountEXT" );
1498 
1499     // VK_NVX_image_view_handle
1500     vkGetImageViewHandleNVX                        = cast( PFN_vkGetImageViewHandleNVX                        ) vkGetDeviceProcAddr( device, "vkGetImageViewHandleNVX" );
1501 
1502     // VK_AMD_draw_indirect_count
1503     vkCmdDrawIndirectCountAMD                      = cast( PFN_vkCmdDrawIndirectCountAMD                      ) vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountAMD" );
1504     vkCmdDrawIndexedIndirectCountAMD               = cast( PFN_vkCmdDrawIndexedIndirectCountAMD               ) vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountAMD" );
1505 
1506     // VK_AMD_shader_info
1507     vkGetShaderInfoAMD                             = cast( PFN_vkGetShaderInfoAMD                             ) vkGetDeviceProcAddr( device, "vkGetShaderInfoAMD" );
1508 
1509     // VK_EXT_conditional_rendering
1510     vkCmdBeginConditionalRenderingEXT              = cast( PFN_vkCmdBeginConditionalRenderingEXT              ) vkGetDeviceProcAddr( device, "vkCmdBeginConditionalRenderingEXT" );
1511     vkCmdEndConditionalRenderingEXT                = cast( PFN_vkCmdEndConditionalRenderingEXT                ) vkGetDeviceProcAddr( device, "vkCmdEndConditionalRenderingEXT" );
1512 
1513     // VK_NVX_device_generated_commands
1514     vkCmdProcessCommandsNVX                        = cast( PFN_vkCmdProcessCommandsNVX                        ) vkGetDeviceProcAddr( device, "vkCmdProcessCommandsNVX" );
1515     vkCmdReserveSpaceForCommandsNVX                = cast( PFN_vkCmdReserveSpaceForCommandsNVX                ) vkGetDeviceProcAddr( device, "vkCmdReserveSpaceForCommandsNVX" );
1516     vkCreateIndirectCommandsLayoutNVX              = cast( PFN_vkCreateIndirectCommandsLayoutNVX              ) vkGetDeviceProcAddr( device, "vkCreateIndirectCommandsLayoutNVX" );
1517     vkDestroyIndirectCommandsLayoutNVX             = cast( PFN_vkDestroyIndirectCommandsLayoutNVX             ) vkGetDeviceProcAddr( device, "vkDestroyIndirectCommandsLayoutNVX" );
1518     vkCreateObjectTableNVX                         = cast( PFN_vkCreateObjectTableNVX                         ) vkGetDeviceProcAddr( device, "vkCreateObjectTableNVX" );
1519     vkDestroyObjectTableNVX                        = cast( PFN_vkDestroyObjectTableNVX                        ) vkGetDeviceProcAddr( device, "vkDestroyObjectTableNVX" );
1520     vkRegisterObjectsNVX                           = cast( PFN_vkRegisterObjectsNVX                           ) vkGetDeviceProcAddr( device, "vkRegisterObjectsNVX" );
1521     vkUnregisterObjectsNVX                         = cast( PFN_vkUnregisterObjectsNVX                         ) vkGetDeviceProcAddr( device, "vkUnregisterObjectsNVX" );
1522 
1523     // VK_NV_clip_space_w_scaling
1524     vkCmdSetViewportWScalingNV                     = cast( PFN_vkCmdSetViewportWScalingNV                     ) vkGetDeviceProcAddr( device, "vkCmdSetViewportWScalingNV" );
1525 
1526     // VK_EXT_display_control
1527     vkDisplayPowerControlEXT                       = cast( PFN_vkDisplayPowerControlEXT                       ) vkGetDeviceProcAddr( device, "vkDisplayPowerControlEXT" );
1528     vkRegisterDeviceEventEXT                       = cast( PFN_vkRegisterDeviceEventEXT                       ) vkGetDeviceProcAddr( device, "vkRegisterDeviceEventEXT" );
1529     vkRegisterDisplayEventEXT                      = cast( PFN_vkRegisterDisplayEventEXT                      ) vkGetDeviceProcAddr( device, "vkRegisterDisplayEventEXT" );
1530     vkGetSwapchainCounterEXT                       = cast( PFN_vkGetSwapchainCounterEXT                       ) vkGetDeviceProcAddr( device, "vkGetSwapchainCounterEXT" );
1531 
1532     // VK_GOOGLE_display_timing
1533     vkGetRefreshCycleDurationGOOGLE                = cast( PFN_vkGetRefreshCycleDurationGOOGLE                ) vkGetDeviceProcAddr( device, "vkGetRefreshCycleDurationGOOGLE" );
1534     vkGetPastPresentationTimingGOOGLE              = cast( PFN_vkGetPastPresentationTimingGOOGLE              ) vkGetDeviceProcAddr( device, "vkGetPastPresentationTimingGOOGLE" );
1535 
1536     // VK_EXT_discard_rectangles
1537     vkCmdSetDiscardRectangleEXT                    = cast( PFN_vkCmdSetDiscardRectangleEXT                    ) vkGetDeviceProcAddr( device, "vkCmdSetDiscardRectangleEXT" );
1538 
1539     // VK_EXT_hdr_metadata
1540     vkSetHdrMetadataEXT                            = cast( PFN_vkSetHdrMetadataEXT                            ) vkGetDeviceProcAddr( device, "vkSetHdrMetadataEXT" );
1541 
1542     // VK_EXT_debug_utils
1543     vkSetDebugUtilsObjectNameEXT                   = cast( PFN_vkSetDebugUtilsObjectNameEXT                   ) vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectNameEXT" );
1544     vkSetDebugUtilsObjectTagEXT                    = cast( PFN_vkSetDebugUtilsObjectTagEXT                    ) vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectTagEXT" );
1545     vkQueueBeginDebugUtilsLabelEXT                 = cast( PFN_vkQueueBeginDebugUtilsLabelEXT                 ) vkGetDeviceProcAddr( device, "vkQueueBeginDebugUtilsLabelEXT" );
1546     vkQueueEndDebugUtilsLabelEXT                   = cast( PFN_vkQueueEndDebugUtilsLabelEXT                   ) vkGetDeviceProcAddr( device, "vkQueueEndDebugUtilsLabelEXT" );
1547     vkQueueInsertDebugUtilsLabelEXT                = cast( PFN_vkQueueInsertDebugUtilsLabelEXT                ) vkGetDeviceProcAddr( device, "vkQueueInsertDebugUtilsLabelEXT" );
1548     vkCmdBeginDebugUtilsLabelEXT                   = cast( PFN_vkCmdBeginDebugUtilsLabelEXT                   ) vkGetDeviceProcAddr( device, "vkCmdBeginDebugUtilsLabelEXT" );
1549     vkCmdEndDebugUtilsLabelEXT                     = cast( PFN_vkCmdEndDebugUtilsLabelEXT                     ) vkGetDeviceProcAddr( device, "vkCmdEndDebugUtilsLabelEXT" );
1550     vkCmdInsertDebugUtilsLabelEXT                  = cast( PFN_vkCmdInsertDebugUtilsLabelEXT                  ) vkGetDeviceProcAddr( device, "vkCmdInsertDebugUtilsLabelEXT" );
1551 
1552     // VK_EXT_sample_locations
1553     vkCmdSetSampleLocationsEXT                     = cast( PFN_vkCmdSetSampleLocationsEXT                     ) vkGetDeviceProcAddr( device, "vkCmdSetSampleLocationsEXT" );
1554 
1555     // VK_EXT_image_drm_format_modifier
1556     vkGetImageDrmFormatModifierPropertiesEXT       = cast( PFN_vkGetImageDrmFormatModifierPropertiesEXT       ) vkGetDeviceProcAddr( device, "vkGetImageDrmFormatModifierPropertiesEXT" );
1557 
1558     // VK_EXT_validation_cache
1559     vkCreateValidationCacheEXT                     = cast( PFN_vkCreateValidationCacheEXT                     ) vkGetDeviceProcAddr( device, "vkCreateValidationCacheEXT" );
1560     vkDestroyValidationCacheEXT                    = cast( PFN_vkDestroyValidationCacheEXT                    ) vkGetDeviceProcAddr( device, "vkDestroyValidationCacheEXT" );
1561     vkMergeValidationCachesEXT                     = cast( PFN_vkMergeValidationCachesEXT                     ) vkGetDeviceProcAddr( device, "vkMergeValidationCachesEXT" );
1562     vkGetValidationCacheDataEXT                    = cast( PFN_vkGetValidationCacheDataEXT                    ) vkGetDeviceProcAddr( device, "vkGetValidationCacheDataEXT" );
1563 
1564     // VK_NV_shading_rate_image
1565     vkCmdBindShadingRateImageNV                    = cast( PFN_vkCmdBindShadingRateImageNV                    ) vkGetDeviceProcAddr( device, "vkCmdBindShadingRateImageNV" );
1566     vkCmdSetViewportShadingRatePaletteNV           = cast( PFN_vkCmdSetViewportShadingRatePaletteNV           ) vkGetDeviceProcAddr( device, "vkCmdSetViewportShadingRatePaletteNV" );
1567     vkCmdSetCoarseSampleOrderNV                    = cast( PFN_vkCmdSetCoarseSampleOrderNV                    ) vkGetDeviceProcAddr( device, "vkCmdSetCoarseSampleOrderNV" );
1568 
1569     // VK_NV_ray_tracing
1570     vkCreateAccelerationStructureNV                = cast( PFN_vkCreateAccelerationStructureNV                ) vkGetDeviceProcAddr( device, "vkCreateAccelerationStructureNV" );
1571     vkDestroyAccelerationStructureNV               = cast( PFN_vkDestroyAccelerationStructureNV               ) vkGetDeviceProcAddr( device, "vkDestroyAccelerationStructureNV" );
1572     vkGetAccelerationStructureMemoryRequirementsNV = cast( PFN_vkGetAccelerationStructureMemoryRequirementsNV ) vkGetDeviceProcAddr( device, "vkGetAccelerationStructureMemoryRequirementsNV" );
1573     vkBindAccelerationStructureMemoryNV            = cast( PFN_vkBindAccelerationStructureMemoryNV            ) vkGetDeviceProcAddr( device, "vkBindAccelerationStructureMemoryNV" );
1574     vkCmdBuildAccelerationStructureNV              = cast( PFN_vkCmdBuildAccelerationStructureNV              ) vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructureNV" );
1575     vkCmdCopyAccelerationStructureNV               = cast( PFN_vkCmdCopyAccelerationStructureNV               ) vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureNV" );
1576     vkCmdTraceRaysNV                               = cast( PFN_vkCmdTraceRaysNV                               ) vkGetDeviceProcAddr( device, "vkCmdTraceRaysNV" );
1577     vkCreateRayTracingPipelinesNV                  = cast( PFN_vkCreateRayTracingPipelinesNV                  ) vkGetDeviceProcAddr( device, "vkCreateRayTracingPipelinesNV" );
1578     vkGetRayTracingShaderGroupHandlesNV            = cast( PFN_vkGetRayTracingShaderGroupHandlesNV            ) vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupHandlesNV" );
1579     vkGetAccelerationStructureHandleNV             = cast( PFN_vkGetAccelerationStructureHandleNV             ) vkGetDeviceProcAddr( device, "vkGetAccelerationStructureHandleNV" );
1580     vkCmdWriteAccelerationStructuresPropertiesNV   = cast( PFN_vkCmdWriteAccelerationStructuresPropertiesNV   ) vkGetDeviceProcAddr( device, "vkCmdWriteAccelerationStructuresPropertiesNV" );
1581     vkCompileDeferredNV                            = cast( PFN_vkCompileDeferredNV                            ) vkGetDeviceProcAddr( device, "vkCompileDeferredNV" );
1582 
1583     // VK_EXT_external_memory_host
1584     vkGetMemoryHostPointerPropertiesEXT            = cast( PFN_vkGetMemoryHostPointerPropertiesEXT            ) vkGetDeviceProcAddr( device, "vkGetMemoryHostPointerPropertiesEXT" );
1585 
1586     // VK_AMD_buffer_marker
1587     vkCmdWriteBufferMarkerAMD                      = cast( PFN_vkCmdWriteBufferMarkerAMD                      ) vkGetDeviceProcAddr( device, "vkCmdWriteBufferMarkerAMD" );
1588 
1589     // VK_EXT_calibrated_timestamps
1590     vkGetCalibratedTimestampsEXT                   = cast( PFN_vkGetCalibratedTimestampsEXT                   ) vkGetDeviceProcAddr( device, "vkGetCalibratedTimestampsEXT" );
1591 
1592     // VK_NV_mesh_shader
1593     vkCmdDrawMeshTasksNV                           = cast( PFN_vkCmdDrawMeshTasksNV                           ) vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksNV" );
1594     vkCmdDrawMeshTasksIndirectNV                   = cast( PFN_vkCmdDrawMeshTasksIndirectNV                   ) vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectNV" );
1595     vkCmdDrawMeshTasksIndirectCountNV              = cast( PFN_vkCmdDrawMeshTasksIndirectCountNV              ) vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectCountNV" );
1596 
1597     // VK_NV_scissor_exclusive
1598     vkCmdSetExclusiveScissorNV                     = cast( PFN_vkCmdSetExclusiveScissorNV                     ) vkGetDeviceProcAddr( device, "vkCmdSetExclusiveScissorNV" );
1599 
1600     // VK_NV_device_diagnostic_checkpoints
1601     vkCmdSetCheckpointNV                           = cast( PFN_vkCmdSetCheckpointNV                           ) vkGetDeviceProcAddr( device, "vkCmdSetCheckpointNV" );
1602     vkGetQueueCheckpointDataNV                     = cast( PFN_vkGetQueueCheckpointDataNV                     ) vkGetDeviceProcAddr( device, "vkGetQueueCheckpointDataNV" );
1603 
1604     // VK_EXT_buffer_device_address
1605     vkGetBufferDeviceAddressEXT                    = cast( PFN_vkGetBufferDeviceAddressEXT                    ) vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddressEXT" );
1606 
1607     // VK_EXT_host_query_reset
1608     vkResetQueryPoolEXT                            = cast( PFN_vkResetQueryPoolEXT                            ) vkGetDeviceProcAddr( device, "vkResetQueryPoolEXT" );
1609 }
1610