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_VERSION_1_2
188     alias PFN_vkCmdDrawIndirectCount                                            = void      function( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride );
189     alias PFN_vkCmdDrawIndexedIndirectCount                                     = void      function( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride );
190     alias PFN_vkCreateRenderPass2                                               = VkResult  function( VkDevice device, const( VkRenderPassCreateInfo2 )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkRenderPass* pRenderPass );
191     alias PFN_vkCmdBeginRenderPass2                                             = void      function( VkCommandBuffer commandBuffer, const( VkRenderPassBeginInfo )* pRenderPassBegin, const( VkSubpassBeginInfo )* pSubpassBeginInfo );
192     alias PFN_vkCmdNextSubpass2                                                 = void      function( VkCommandBuffer commandBuffer, const( VkSubpassBeginInfo )* pSubpassBeginInfo, const( VkSubpassEndInfo )* pSubpassEndInfo );
193     alias PFN_vkCmdEndRenderPass2                                               = void      function( VkCommandBuffer commandBuffer, const( VkSubpassEndInfo )* pSubpassEndInfo );
194     alias PFN_vkResetQueryPool                                                  = void      function( VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount );
195     alias PFN_vkGetSemaphoreCounterValue                                        = VkResult  function( VkDevice device, VkSemaphore semaphore, uint64_t* pValue );
196     alias PFN_vkWaitSemaphores                                                  = VkResult  function( VkDevice device, const( VkSemaphoreWaitInfo )* pWaitInfo, uint64_t timeout );
197     alias PFN_vkSignalSemaphore                                                 = VkResult  function( VkDevice device, const( VkSemaphoreSignalInfo )* pSignalInfo );
198     alias PFN_vkGetBufferDeviceAddress                                          = VkDeviceAddress  function( VkDevice device, const( VkBufferDeviceAddressInfo )* pInfo );
199     alias PFN_vkGetBufferOpaqueCaptureAddress                                   = uint64_t  function( VkDevice device, const( VkBufferDeviceAddressInfo )* pInfo );
200     alias PFN_vkGetDeviceMemoryOpaqueCaptureAddress                             = uint64_t  function( VkDevice device, const( VkDeviceMemoryOpaqueCaptureAddressInfo )* pInfo );
201 
202     // VK_KHR_surface
203     alias PFN_vkDestroySurfaceKHR                                               = void      function( VkInstance instance, VkSurfaceKHR surface, const( VkAllocationCallbacks )* pAllocator );
204     alias PFN_vkGetPhysicalDeviceSurfaceSupportKHR                              = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported );
205     alias PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR                         = VkResult  function( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities );
206     alias PFN_vkGetPhysicalDeviceSurfaceFormatsKHR                              = VkResult  function( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats );
207     alias PFN_vkGetPhysicalDeviceSurfacePresentModesKHR                         = VkResult  function( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes );
208 
209     // VK_KHR_swapchain
210     alias PFN_vkCreateSwapchainKHR                                              = VkResult  function( VkDevice device, const( VkSwapchainCreateInfoKHR )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkSwapchainKHR* pSwapchain );
211     alias PFN_vkDestroySwapchainKHR                                             = void      function( VkDevice device, VkSwapchainKHR swapchain, const( VkAllocationCallbacks )* pAllocator );
212     alias PFN_vkGetSwapchainImagesKHR                                           = VkResult  function( VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages );
213     alias PFN_vkAcquireNextImageKHR                                             = VkResult  function( VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex );
214     alias PFN_vkQueuePresentKHR                                                 = VkResult  function( VkQueue queue, const( VkPresentInfoKHR )* pPresentInfo );
215     alias PFN_vkGetDeviceGroupPresentCapabilitiesKHR                            = VkResult  function( VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities );
216     alias PFN_vkGetDeviceGroupSurfacePresentModesKHR                            = VkResult  function( VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes );
217     alias PFN_vkGetPhysicalDevicePresentRectanglesKHR                           = VkResult  function( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects );
218     alias PFN_vkAcquireNextImage2KHR                                            = VkResult  function( VkDevice device, const( VkAcquireNextImageInfoKHR )* pAcquireInfo, uint32_t* pImageIndex );
219 
220     // VK_KHR_display
221     alias PFN_vkGetPhysicalDeviceDisplayPropertiesKHR                           = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties );
222     alias PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR                      = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties );
223     alias PFN_vkGetDisplayPlaneSupportedDisplaysKHR                             = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays );
224     alias PFN_vkGetDisplayModePropertiesKHR                                     = VkResult  function( VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties );
225     alias PFN_vkCreateDisplayModeKHR                                            = VkResult  function( VkPhysicalDevice physicalDevice, VkDisplayKHR display, const( VkDisplayModeCreateInfoKHR )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkDisplayModeKHR* pMode );
226     alias PFN_vkGetDisplayPlaneCapabilitiesKHR                                  = VkResult  function( VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities );
227     alias PFN_vkCreateDisplayPlaneSurfaceKHR                                    = VkResult  function( VkInstance instance, const( VkDisplaySurfaceCreateInfoKHR )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkSurfaceKHR* pSurface );
228 
229     // VK_KHR_display_swapchain
230     alias PFN_vkCreateSharedSwapchainsKHR                                       = VkResult  function( VkDevice device, uint32_t swapchainCount, const( VkSwapchainCreateInfoKHR )* pCreateInfos, const( VkAllocationCallbacks )* pAllocator, VkSwapchainKHR* pSwapchains );
231 
232     // VK_KHR_dynamic_rendering
233     alias PFN_vkCmdBeginRenderingKHR                                            = void      function( VkCommandBuffer commandBuffer, const( VkRenderingInfoKHR )* pRenderingInfo );
234     alias PFN_vkCmdEndRenderingKHR                                              = void      function( VkCommandBuffer commandBuffer );
235 
236     // VK_KHR_external_memory_fd
237     alias PFN_vkGetMemoryFdKHR                                                  = VkResult  function( VkDevice device, const( VkMemoryGetFdInfoKHR )* pGetFdInfo, int* pFd );
238     alias PFN_vkGetMemoryFdPropertiesKHR                                        = VkResult  function( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties );
239 
240     // VK_KHR_external_semaphore_fd
241     alias PFN_vkImportSemaphoreFdKHR                                            = VkResult  function( VkDevice device, const( VkImportSemaphoreFdInfoKHR )* pImportSemaphoreFdInfo );
242     alias PFN_vkGetSemaphoreFdKHR                                               = VkResult  function( VkDevice device, const( VkSemaphoreGetFdInfoKHR )* pGetFdInfo, int* pFd );
243 
244     // VK_KHR_push_descriptor
245     alias PFN_vkCmdPushDescriptorSetKHR                                         = void      function( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const( VkWriteDescriptorSet )* pDescriptorWrites );
246     alias PFN_vkCmdPushDescriptorSetWithTemplateKHR                             = void      function( VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const( void )* pData );
247 
248     // VK_KHR_shared_presentable_image
249     alias PFN_vkGetSwapchainStatusKHR                                           = VkResult  function( VkDevice device, VkSwapchainKHR swapchain );
250 
251     // VK_KHR_external_fence_fd
252     alias PFN_vkImportFenceFdKHR                                                = VkResult  function( VkDevice device, const( VkImportFenceFdInfoKHR )* pImportFenceFdInfo );
253     alias PFN_vkGetFenceFdKHR                                                   = VkResult  function( VkDevice device, const( VkFenceGetFdInfoKHR )* pGetFdInfo, int* pFd );
254 
255     // VK_KHR_performance_query
256     alias PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR   = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, uint32_t* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions );
257     alias PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR           = void      function( VkPhysicalDevice physicalDevice, const( VkQueryPoolPerformanceCreateInfoKHR )* pPerformanceQueryCreateInfo, uint32_t* pNumPasses );
258     alias PFN_vkAcquireProfilingLockKHR                                         = VkResult  function( VkDevice device, const( VkAcquireProfilingLockInfoKHR )* pInfo );
259     alias PFN_vkReleaseProfilingLockKHR                                         = void      function( VkDevice device );
260 
261     // VK_KHR_get_surface_capabilities2
262     alias PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR                        = VkResult  function( VkPhysicalDevice physicalDevice, const( VkPhysicalDeviceSurfaceInfo2KHR )* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities );
263     alias PFN_vkGetPhysicalDeviceSurfaceFormats2KHR                             = VkResult  function( VkPhysicalDevice physicalDevice, const( VkPhysicalDeviceSurfaceInfo2KHR )* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats );
264 
265     // VK_KHR_get_display_properties2
266     alias PFN_vkGetPhysicalDeviceDisplayProperties2KHR                          = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayProperties2KHR* pProperties );
267     alias PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR                     = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties );
268     alias PFN_vkGetDisplayModeProperties2KHR                                    = VkResult  function( VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModeProperties2KHR* pProperties );
269     alias PFN_vkGetDisplayPlaneCapabilities2KHR                                 = VkResult  function( VkPhysicalDevice physicalDevice, const( VkDisplayPlaneInfo2KHR )* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities );
270 
271     // VK_KHR_fragment_shading_rate
272     alias PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR                        = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t* pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates );
273     alias PFN_vkCmdSetFragmentShadingRateKHR                                    = void      function( VkCommandBuffer commandBuffer, const( VkExtent2D )* pFragmentSize, const VkFragmentShadingRateCombinerOpKHR[2] combinerOps );
274 
275     // VK_KHR_present_wait
276     alias PFN_vkWaitForPresentKHR                                               = VkResult  function( VkDevice device, VkSwapchainKHR swapchain, uint64_t presentId, uint64_t timeout );
277 
278     // VK_KHR_deferred_host_operations
279     alias PFN_vkCreateDeferredOperationKHR                                      = VkResult  function( VkDevice device, const( VkAllocationCallbacks )* pAllocator, VkDeferredOperationKHR* pDeferredOperation );
280     alias PFN_vkDestroyDeferredOperationKHR                                     = void      function( VkDevice device, VkDeferredOperationKHR operation, const( VkAllocationCallbacks )* pAllocator );
281     alias PFN_vkGetDeferredOperationMaxConcurrencyKHR                           = uint32_t  function( VkDevice device, VkDeferredOperationKHR operation );
282     alias PFN_vkGetDeferredOperationResultKHR                                   = VkResult  function( VkDevice device, VkDeferredOperationKHR operation );
283     alias PFN_vkDeferredOperationJoinKHR                                        = VkResult  function( VkDevice device, VkDeferredOperationKHR operation );
284 
285     // VK_KHR_pipeline_executable_properties
286     alias PFN_vkGetPipelineExecutablePropertiesKHR                              = VkResult  function( VkDevice device, const( VkPipelineInfoKHR )* pPipelineInfo, uint32_t* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties );
287     alias PFN_vkGetPipelineExecutableStatisticsKHR                              = VkResult  function( VkDevice device, const( VkPipelineExecutableInfoKHR )* pExecutableInfo, uint32_t* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics );
288     alias PFN_vkGetPipelineExecutableInternalRepresentationsKHR                 = VkResult  function( VkDevice device, const( VkPipelineExecutableInfoKHR )* pExecutableInfo, uint32_t* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations );
289 
290     // VK_KHR_synchronization2
291     alias PFN_vkCmdSetEvent2KHR                                                 = void      function( VkCommandBuffer commandBuffer, VkEvent event, const( VkDependencyInfoKHR )* pDependencyInfo );
292     alias PFN_vkCmdResetEvent2KHR                                               = void      function( VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2KHR stageMask );
293     alias PFN_vkCmdWaitEvents2KHR                                               = void      function( VkCommandBuffer commandBuffer, uint32_t eventCount, const( VkEvent )* pEvents, const( VkDependencyInfoKHR )* pDependencyInfos );
294     alias PFN_vkCmdPipelineBarrier2KHR                                          = void      function( VkCommandBuffer commandBuffer, const( VkDependencyInfoKHR )* pDependencyInfo );
295     alias PFN_vkCmdWriteTimestamp2KHR                                           = void      function( VkCommandBuffer commandBuffer, VkPipelineStageFlags2KHR stage, VkQueryPool queryPool, uint32_t query );
296     alias PFN_vkQueueSubmit2KHR                                                 = VkResult  function( VkQueue queue, uint32_t submitCount, const( VkSubmitInfo2KHR )* pSubmits, VkFence fence );
297     alias PFN_vkCmdWriteBufferMarker2AMD                                        = void      function( VkCommandBuffer commandBuffer, VkPipelineStageFlags2KHR stage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker );
298     alias PFN_vkGetQueueCheckpointData2NV                                       = void      function( VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointData2NV* pCheckpointData );
299 
300     // VK_KHR_copy_commands2
301     alias PFN_vkCmdCopyBuffer2KHR                                               = void      function( VkCommandBuffer commandBuffer, const( VkCopyBufferInfo2KHR )* pCopyBufferInfo );
302     alias PFN_vkCmdCopyImage2KHR                                                = void      function( VkCommandBuffer commandBuffer, const( VkCopyImageInfo2KHR )* pCopyImageInfo );
303     alias PFN_vkCmdCopyBufferToImage2KHR                                        = void      function( VkCommandBuffer commandBuffer, const( VkCopyBufferToImageInfo2KHR )* pCopyBufferToImageInfo );
304     alias PFN_vkCmdCopyImageToBuffer2KHR                                        = void      function( VkCommandBuffer commandBuffer, const( VkCopyImageToBufferInfo2KHR )* pCopyImageToBufferInfo );
305     alias PFN_vkCmdBlitImage2KHR                                                = void      function( VkCommandBuffer commandBuffer, const( VkBlitImageInfo2KHR )* pBlitImageInfo );
306     alias PFN_vkCmdResolveImage2KHR                                             = void      function( VkCommandBuffer commandBuffer, const( VkResolveImageInfo2KHR )* pResolveImageInfo );
307 
308     // VK_KHR_maintenance4
309     alias PFN_vkGetDeviceBufferMemoryRequirementsKHR                            = void      function( VkDevice device, const( VkDeviceBufferMemoryRequirementsKHR )* pInfo, VkMemoryRequirements2* pMemoryRequirements );
310     alias PFN_vkGetDeviceImageMemoryRequirementsKHR                             = void      function( VkDevice device, const( VkDeviceImageMemoryRequirementsKHR )* pInfo, VkMemoryRequirements2* pMemoryRequirements );
311     alias PFN_vkGetDeviceImageSparseMemoryRequirementsKHR                       = void      function( VkDevice device, const( VkDeviceImageMemoryRequirementsKHR )* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements );
312 
313     // VK_EXT_debug_report
314     alias PFN_vkCreateDebugReportCallbackEXT                                    = VkResult  function( VkInstance instance, const( VkDebugReportCallbackCreateInfoEXT )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkDebugReportCallbackEXT* pCallback );
315     alias PFN_vkDestroyDebugReportCallbackEXT                                   = void      function( VkInstance instance, VkDebugReportCallbackEXT callback, const( VkAllocationCallbacks )* pAllocator );
316     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 );
317 
318     // VK_EXT_debug_marker
319     alias PFN_vkDebugMarkerSetObjectTagEXT                                      = VkResult  function( VkDevice device, const( VkDebugMarkerObjectTagInfoEXT )* pTagInfo );
320     alias PFN_vkDebugMarkerSetObjectNameEXT                                     = VkResult  function( VkDevice device, const( VkDebugMarkerObjectNameInfoEXT )* pNameInfo );
321     alias PFN_vkCmdDebugMarkerBeginEXT                                          = void      function( VkCommandBuffer commandBuffer, const( VkDebugMarkerMarkerInfoEXT )* pMarkerInfo );
322     alias PFN_vkCmdDebugMarkerEndEXT                                            = void      function( VkCommandBuffer commandBuffer );
323     alias PFN_vkCmdDebugMarkerInsertEXT                                         = void      function( VkCommandBuffer commandBuffer, const( VkDebugMarkerMarkerInfoEXT )* pMarkerInfo );
324 
325     // VK_EXT_transform_feedback
326     alias PFN_vkCmdBindTransformFeedbackBuffersEXT                              = void      function( VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const( VkBuffer )* pBuffers, const( VkDeviceSize )* pOffsets, const( VkDeviceSize )* pSizes );
327     alias PFN_vkCmdBeginTransformFeedbackEXT                                    = void      function( VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const( VkBuffer )* pCounterBuffers, const( VkDeviceSize )* pCounterBufferOffsets );
328     alias PFN_vkCmdEndTransformFeedbackEXT                                      = void      function( VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const( VkBuffer )* pCounterBuffers, const( VkDeviceSize )* pCounterBufferOffsets );
329     alias PFN_vkCmdBeginQueryIndexedEXT                                         = void      function( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags, uint32_t index );
330     alias PFN_vkCmdEndQueryIndexedEXT                                           = void      function( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, uint32_t index );
331     alias PFN_vkCmdDrawIndirectByteCountEXT                                     = void      function( VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride );
332 
333     // VK_NVX_binary_import
334     alias PFN_vkCreateCuModuleNVX                                               = VkResult  function( VkDevice device, const( VkCuModuleCreateInfoNVX )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkCuModuleNVX* pModule );
335     alias PFN_vkCreateCuFunctionNVX                                             = VkResult  function( VkDevice device, const( VkCuFunctionCreateInfoNVX )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkCuFunctionNVX* pFunction );
336     alias PFN_vkDestroyCuModuleNVX                                              = void      function( VkDevice device, VkCuModuleNVX Module, const( VkAllocationCallbacks )* pAllocator );
337     alias PFN_vkDestroyCuFunctionNVX                                            = void      function( VkDevice device, VkCuFunctionNVX Function, const( VkAllocationCallbacks )* pAllocator );
338     alias PFN_vkCmdCuLaunchKernelNVX                                            = void      function( VkCommandBuffer commandBuffer, const( VkCuLaunchInfoNVX )* pLaunchInfo );
339 
340     // VK_NVX_image_view_handle
341     alias PFN_vkGetImageViewHandleNVX                                           = uint32_t  function( VkDevice device, const( VkImageViewHandleInfoNVX )* pInfo );
342     alias PFN_vkGetImageViewAddressNVX                                          = VkResult  function( VkDevice device, VkImageView imageView, VkImageViewAddressPropertiesNVX* pProperties );
343 
344     // VK_AMD_shader_info
345     alias PFN_vkGetShaderInfoAMD                                                = VkResult  function( VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo );
346 
347     // VK_NV_external_memory_capabilities
348     alias PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV                = VkResult  function( VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties );
349 
350     // VK_EXT_conditional_rendering
351     alias PFN_vkCmdBeginConditionalRenderingEXT                                 = void      function( VkCommandBuffer commandBuffer, const( VkConditionalRenderingBeginInfoEXT )* pConditionalRenderingBegin );
352     alias PFN_vkCmdEndConditionalRenderingEXT                                   = void      function( VkCommandBuffer commandBuffer );
353 
354     // VK_NV_clip_space_w_scaling
355     alias PFN_vkCmdSetViewportWScalingNV                                        = void      function( VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const( VkViewportWScalingNV )* pViewportWScalings );
356 
357     // VK_EXT_direct_mode_display
358     alias PFN_vkReleaseDisplayEXT                                               = VkResult  function( VkPhysicalDevice physicalDevice, VkDisplayKHR display );
359 
360     // VK_EXT_display_surface_counter
361     alias PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT                        = VkResult  function( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities );
362 
363     // VK_EXT_display_control
364     alias PFN_vkDisplayPowerControlEXT                                          = VkResult  function( VkDevice device, VkDisplayKHR display, const( VkDisplayPowerInfoEXT )* pDisplayPowerInfo );
365     alias PFN_vkRegisterDeviceEventEXT                                          = VkResult  function( VkDevice device, const( VkDeviceEventInfoEXT )* pDeviceEventInfo, const( VkAllocationCallbacks )* pAllocator, VkFence* pFence );
366     alias PFN_vkRegisterDisplayEventEXT                                         = VkResult  function( VkDevice device, VkDisplayKHR display, const( VkDisplayEventInfoEXT )* pDisplayEventInfo, const( VkAllocationCallbacks )* pAllocator, VkFence* pFence );
367     alias PFN_vkGetSwapchainCounterEXT                                          = VkResult  function( VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue );
368 
369     // VK_GOOGLE_display_timing
370     alias PFN_vkGetRefreshCycleDurationGOOGLE                                   = VkResult  function( VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties );
371     alias PFN_vkGetPastPresentationTimingGOOGLE                                 = VkResult  function( VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings );
372 
373     // VK_EXT_discard_rectangles
374     alias PFN_vkCmdSetDiscardRectangleEXT                                       = void      function( VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const( VkRect2D )* pDiscardRectangles );
375 
376     // VK_EXT_hdr_metadata
377     alias PFN_vkSetHdrMetadataEXT                                               = void      function( VkDevice device, uint32_t swapchainCount, const( VkSwapchainKHR )* pSwapchains, const( VkHdrMetadataEXT )* pMetadata );
378 
379     // VK_EXT_debug_utils
380     alias PFN_vkSetDebugUtilsObjectNameEXT                                      = VkResult  function( VkDevice device, const( VkDebugUtilsObjectNameInfoEXT )* pNameInfo );
381     alias PFN_vkSetDebugUtilsObjectTagEXT                                       = VkResult  function( VkDevice device, const( VkDebugUtilsObjectTagInfoEXT )* pTagInfo );
382     alias PFN_vkQueueBeginDebugUtilsLabelEXT                                    = void      function( VkQueue queue, const( VkDebugUtilsLabelEXT )* pLabelInfo );
383     alias PFN_vkQueueEndDebugUtilsLabelEXT                                      = void      function( VkQueue queue );
384     alias PFN_vkQueueInsertDebugUtilsLabelEXT                                   = void      function( VkQueue queue, const( VkDebugUtilsLabelEXT )* pLabelInfo );
385     alias PFN_vkCmdBeginDebugUtilsLabelEXT                                      = void      function( VkCommandBuffer commandBuffer, const( VkDebugUtilsLabelEXT )* pLabelInfo );
386     alias PFN_vkCmdEndDebugUtilsLabelEXT                                        = void      function( VkCommandBuffer commandBuffer );
387     alias PFN_vkCmdInsertDebugUtilsLabelEXT                                     = void      function( VkCommandBuffer commandBuffer, const( VkDebugUtilsLabelEXT )* pLabelInfo );
388     alias PFN_vkCreateDebugUtilsMessengerEXT                                    = VkResult  function( VkInstance instance, const( VkDebugUtilsMessengerCreateInfoEXT )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkDebugUtilsMessengerEXT* pMessenger );
389     alias PFN_vkDestroyDebugUtilsMessengerEXT                                   = void      function( VkInstance instance, VkDebugUtilsMessengerEXT messenger, const( VkAllocationCallbacks )* pAllocator );
390     alias PFN_vkSubmitDebugUtilsMessageEXT                                      = void      function( VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const( VkDebugUtilsMessengerCallbackDataEXT )* pCallbackData );
391 
392     // VK_EXT_sample_locations
393     alias PFN_vkCmdSetSampleLocationsEXT                                        = void      function( VkCommandBuffer commandBuffer, const( VkSampleLocationsInfoEXT )* pSampleLocationsInfo );
394     alias PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT                       = void      function( VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties );
395 
396     // VK_EXT_image_drm_format_modifier
397     alias PFN_vkGetImageDrmFormatModifierPropertiesEXT                          = VkResult  function( VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties );
398 
399     // VK_EXT_validation_cache
400     alias PFN_vkCreateValidationCacheEXT                                        = VkResult  function( VkDevice device, const( VkValidationCacheCreateInfoEXT )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkValidationCacheEXT* pValidationCache );
401     alias PFN_vkDestroyValidationCacheEXT                                       = void      function( VkDevice device, VkValidationCacheEXT validationCache, const( VkAllocationCallbacks )* pAllocator );
402     alias PFN_vkMergeValidationCachesEXT                                        = VkResult  function( VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const( VkValidationCacheEXT )* pSrcCaches );
403     alias PFN_vkGetValidationCacheDataEXT                                       = VkResult  function( VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData );
404 
405     // VK_NV_shading_rate_image
406     alias PFN_vkCmdBindShadingRateImageNV                                       = void      function( VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout );
407     alias PFN_vkCmdSetViewportShadingRatePaletteNV                              = void      function( VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const( VkShadingRatePaletteNV )* pShadingRatePalettes );
408     alias PFN_vkCmdSetCoarseSampleOrderNV                                       = void      function( VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, const( VkCoarseSampleOrderCustomNV )* pCustomSampleOrders );
409 
410     // VK_NV_ray_tracing
411     alias PFN_vkCreateAccelerationStructureNV                                   = VkResult  function( VkDevice device, const( VkAccelerationStructureCreateInfoNV )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkAccelerationStructureNV* pAccelerationStructure );
412     alias PFN_vkDestroyAccelerationStructureNV                                  = void      function( VkDevice device, VkAccelerationStructureNV accelerationStructure, const( VkAllocationCallbacks )* pAllocator );
413     alias PFN_vkGetAccelerationStructureMemoryRequirementsNV                    = void      function( VkDevice device, const( VkAccelerationStructureMemoryRequirementsInfoNV )* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements );
414     alias PFN_vkBindAccelerationStructureMemoryNV                               = VkResult  function( VkDevice device, uint32_t bindInfoCount, const( VkBindAccelerationStructureMemoryInfoNV )* pBindInfos );
415     alias PFN_vkCmdBuildAccelerationStructureNV                                 = void      function( VkCommandBuffer commandBuffer, const( VkAccelerationStructureInfoNV )* pInfo, VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch, VkDeviceSize scratchOffset );
416     alias PFN_vkCmdCopyAccelerationStructureNV                                  = void      function( VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkCopyAccelerationStructureModeKHR mode );
417     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 );
418     alias PFN_vkCreateRayTracingPipelinesNV                                     = VkResult  function( VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const( VkRayTracingPipelineCreateInfoNV )* pCreateInfos, const( VkAllocationCallbacks )* pAllocator, VkPipeline* pPipelines );
419     alias PFN_vkGetRayTracingShaderGroupHandlesKHR                              = VkResult  function( VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData );
420     alias PFN_vkGetAccelerationStructureHandleNV                                = VkResult  function( VkDevice device, VkAccelerationStructureNV accelerationStructure, size_t dataSize, void* pData );
421     alias PFN_vkCmdWriteAccelerationStructuresPropertiesNV                      = void      function( VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const( VkAccelerationStructureNV )* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery );
422     alias PFN_vkCompileDeferredNV                                               = VkResult  function( VkDevice device, VkPipeline pipeline, uint32_t shader );
423 
424     // VK_EXT_external_memory_host
425     alias PFN_vkGetMemoryHostPointerPropertiesEXT                               = VkResult  function( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const( void )* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties );
426 
427     // VK_AMD_buffer_marker
428     alias PFN_vkCmdWriteBufferMarkerAMD                                         = void      function( VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker );
429 
430     // VK_EXT_calibrated_timestamps
431     alias PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT                    = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains );
432     alias PFN_vkGetCalibratedTimestampsEXT                                      = VkResult  function( VkDevice device, uint32_t timestampCount, const( VkCalibratedTimestampInfoEXT )* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation );
433 
434     // VK_NV_mesh_shader
435     alias PFN_vkCmdDrawMeshTasksNV                                              = void      function( VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask );
436     alias PFN_vkCmdDrawMeshTasksIndirectNV                                      = void      function( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride );
437     alias PFN_vkCmdDrawMeshTasksIndirectCountNV                                 = void      function( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride );
438 
439     // VK_NV_scissor_exclusive
440     alias PFN_vkCmdSetExclusiveScissorNV                                        = void      function( VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const( VkRect2D )* pExclusiveScissors );
441 
442     // VK_NV_device_diagnostic_checkpoints
443     alias PFN_vkCmdSetCheckpointNV                                              = void      function( VkCommandBuffer commandBuffer, const( void )* pCheckpointMarker );
444     alias PFN_vkGetQueueCheckpointDataNV                                        = void      function( VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData );
445 
446     // VK_INTEL_performance_query
447     alias PFN_vkInitializePerformanceApiINTEL                                   = VkResult  function( VkDevice device, const( VkInitializePerformanceApiInfoINTEL )* pInitializeInfo );
448     alias PFN_vkUninitializePerformanceApiINTEL                                 = void      function( VkDevice device );
449     alias PFN_vkCmdSetPerformanceMarkerINTEL                                    = VkResult  function( VkCommandBuffer commandBuffer, const( VkPerformanceMarkerInfoINTEL )* pMarkerInfo );
450     alias PFN_vkCmdSetPerformanceStreamMarkerINTEL                              = VkResult  function( VkCommandBuffer commandBuffer, const( VkPerformanceStreamMarkerInfoINTEL )* pMarkerInfo );
451     alias PFN_vkCmdSetPerformanceOverrideINTEL                                  = VkResult  function( VkCommandBuffer commandBuffer, const( VkPerformanceOverrideInfoINTEL )* pOverrideInfo );
452     alias PFN_vkAcquirePerformanceConfigurationINTEL                            = VkResult  function( VkDevice device, const( VkPerformanceConfigurationAcquireInfoINTEL )* pAcquireInfo, VkPerformanceConfigurationINTEL* pConfiguration );
453     alias PFN_vkReleasePerformanceConfigurationINTEL                            = VkResult  function( VkDevice device, VkPerformanceConfigurationINTEL configuration );
454     alias PFN_vkQueueSetPerformanceConfigurationINTEL                           = VkResult  function( VkQueue queue, VkPerformanceConfigurationINTEL configuration );
455     alias PFN_vkGetPerformanceParameterINTEL                                    = VkResult  function( VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue );
456 
457     // VK_AMD_display_native_hdr
458     alias PFN_vkSetLocalDimmingAMD                                              = void      function( VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable );
459 
460     // VK_EXT_tooling_info
461     alias PFN_vkGetPhysicalDeviceToolPropertiesEXT                              = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t* pToolCount, VkPhysicalDeviceToolPropertiesEXT* pToolProperties );
462 
463     // VK_NV_cooperative_matrix
464     alias PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV                  = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties );
465 
466     // VK_NV_coverage_reduction_mode
467     alias PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = VkResult  function( VkPhysicalDevice physicalDevice, uint32_t* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations );
468 
469     // VK_EXT_headless_surface
470     alias PFN_vkCreateHeadlessSurfaceEXT                                        = VkResult  function( VkInstance instance, const( VkHeadlessSurfaceCreateInfoEXT )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkSurfaceKHR* pSurface );
471 
472     // VK_EXT_line_rasterization
473     alias PFN_vkCmdSetLineStippleEXT                                            = void      function( VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern );
474 
475     // VK_EXT_extended_dynamic_state
476     alias PFN_vkCmdSetCullModeEXT                                               = void      function( VkCommandBuffer commandBuffer, VkCullModeFlags cullMode );
477     alias PFN_vkCmdSetFrontFaceEXT                                              = void      function( VkCommandBuffer commandBuffer, VkFrontFace frontFace );
478     alias PFN_vkCmdSetPrimitiveTopologyEXT                                      = void      function( VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology );
479     alias PFN_vkCmdSetViewportWithCountEXT                                      = void      function( VkCommandBuffer commandBuffer, uint32_t viewportCount, const( VkViewport )* pViewports );
480     alias PFN_vkCmdSetScissorWithCountEXT                                       = void      function( VkCommandBuffer commandBuffer, uint32_t scissorCount, const( VkRect2D )* pScissors );
481     alias PFN_vkCmdBindVertexBuffers2EXT                                        = void      function( VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const( VkBuffer )* pBuffers, const( VkDeviceSize )* pOffsets, const( VkDeviceSize )* pSizes, const( VkDeviceSize )* pStrides );
482     alias PFN_vkCmdSetDepthTestEnableEXT                                        = void      function( VkCommandBuffer commandBuffer, VkBool32 depthTestEnable );
483     alias PFN_vkCmdSetDepthWriteEnableEXT                                       = void      function( VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable );
484     alias PFN_vkCmdSetDepthCompareOpEXT                                         = void      function( VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp );
485     alias PFN_vkCmdSetDepthBoundsTestEnableEXT                                  = void      function( VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable );
486     alias PFN_vkCmdSetStencilTestEnableEXT                                      = void      function( VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable );
487     alias PFN_vkCmdSetStencilOpEXT                                              = void      function( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp );
488 
489     // VK_NV_device_generated_commands
490     alias PFN_vkGetGeneratedCommandsMemoryRequirementsNV                        = void      function( VkDevice device, const( VkGeneratedCommandsMemoryRequirementsInfoNV )* pInfo, VkMemoryRequirements2* pMemoryRequirements );
491     alias PFN_vkCmdPreprocessGeneratedCommandsNV                                = void      function( VkCommandBuffer commandBuffer, const( VkGeneratedCommandsInfoNV )* pGeneratedCommandsInfo );
492     alias PFN_vkCmdExecuteGeneratedCommandsNV                                   = void      function( VkCommandBuffer commandBuffer, VkBool32 isPreprocessed, const( VkGeneratedCommandsInfoNV )* pGeneratedCommandsInfo );
493     alias PFN_vkCmdBindPipelineShaderGroupNV                                    = void      function( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline, uint32_t groupIndex );
494     alias PFN_vkCreateIndirectCommandsLayoutNV                                  = VkResult  function( VkDevice device, const( VkIndirectCommandsLayoutCreateInfoNV )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkIndirectCommandsLayoutNV* pIndirectCommandsLayout );
495     alias PFN_vkDestroyIndirectCommandsLayoutNV                                 = void      function( VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout, const( VkAllocationCallbacks )* pAllocator );
496 
497     // VK_EXT_acquire_drm_display
498     alias PFN_vkAcquireDrmDisplayEXT                                            = VkResult  function( VkPhysicalDevice physicalDevice, int32_t drmFd, VkDisplayKHR display );
499     alias PFN_vkGetDrmDisplayEXT                                                = VkResult  function( VkPhysicalDevice physicalDevice, int32_t drmFd, uint32_t connectorId, VkDisplayKHR* display );
500 
501     // VK_EXT_private_data
502     alias PFN_vkCreatePrivateDataSlotEXT                                        = VkResult  function( VkDevice device, const( VkPrivateDataSlotCreateInfoEXT )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkPrivateDataSlotEXT* pPrivateDataSlot );
503     alias PFN_vkDestroyPrivateDataSlotEXT                                       = void      function( VkDevice device, VkPrivateDataSlotEXT privateDataSlot, const( VkAllocationCallbacks )* pAllocator );
504     alias PFN_vkSetPrivateDataEXT                                               = VkResult  function( VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlotEXT privateDataSlot, uint64_t data );
505     alias PFN_vkGetPrivateDataEXT                                               = void      function( VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlotEXT privateDataSlot, uint64_t* pData );
506 
507     // VK_NV_fragment_shading_rate_enums
508     alias PFN_vkCmdSetFragmentShadingRateEnumNV                                 = void      function( VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR[2] combinerOps );
509 
510     // VK_EXT_vertex_input_dynamic_state
511     alias PFN_vkCmdSetVertexInputEXT                                            = void      function( VkCommandBuffer commandBuffer, uint32_t vertexBindingDescriptionCount, const( VkVertexInputBindingDescription2EXT )* pVertexBindingDescriptions, uint32_t vertexAttributeDescriptionCount, const( VkVertexInputAttributeDescription2EXT )* pVertexAttributeDescriptions );
512 
513     // VK_HUAWEI_subpass_shading
514     alias PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI                   = VkResult  function( VkDevice device, VkRenderPass renderpass, VkExtent2D* pMaxWorkgroupSize );
515     alias PFN_vkCmdSubpassShadingHUAWEI                                         = void      function( VkCommandBuffer commandBuffer );
516 
517     // VK_HUAWEI_invocation_mask
518     alias PFN_vkCmdBindInvocationMaskHUAWEI                                     = void      function( VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout );
519 
520     // VK_NV_external_memory_rdma
521     alias PFN_vkGetMemoryRemoteAddressNV                                        = VkResult  function( VkDevice device, const( VkMemoryGetRemoteAddressInfoNV )* pMemoryGetRemoteAddressInfo, VkRemoteAddressNV* pAddress );
522 
523     // VK_EXT_extended_dynamic_state2
524     alias PFN_vkCmdSetPatchControlPointsEXT                                     = void      function( VkCommandBuffer commandBuffer, uint32_t patchControlPoints );
525     alias PFN_vkCmdSetRasterizerDiscardEnableEXT                                = void      function( VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable );
526     alias PFN_vkCmdSetDepthBiasEnableEXT                                        = void      function( VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable );
527     alias PFN_vkCmdSetLogicOpEXT                                                = void      function( VkCommandBuffer commandBuffer, VkLogicOp logicOp );
528     alias PFN_vkCmdSetPrimitiveRestartEnableEXT                                 = void      function( VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable );
529 
530     // VK_EXT_color_write_enable
531     alias PFN_vkCmdSetColorWriteEnableEXT                                       = void      function( VkCommandBuffer commandBuffer, uint32_t attachmentCount, const( VkBool32 )* pColorWriteEnables );
532 
533     // VK_EXT_multi_draw
534     alias PFN_vkCmdDrawMultiEXT                                                 = void      function( VkCommandBuffer commandBuffer, uint32_t drawCount, const( VkMultiDrawInfoEXT )* pVertexInfo, uint32_t instanceCount, uint32_t firstInstance, uint32_t stride );
535     alias PFN_vkCmdDrawMultiIndexedEXT                                          = void      function( VkCommandBuffer commandBuffer, uint32_t drawCount, const( VkMultiDrawIndexedInfoEXT )* pIndexInfo, uint32_t instanceCount, uint32_t firstInstance, uint32_t stride, const( int32_t )* pVertexOffset );
536 
537     // VK_EXT_pageable_device_local_memory
538     alias PFN_vkSetDeviceMemoryPriorityEXT                                      = void      function( VkDevice device, VkDeviceMemory memory, float priority );
539 
540     // VK_KHR_acceleration_structure
541     alias PFN_vkCreateAccelerationStructureKHR                                  = VkResult  function( VkDevice device, const( VkAccelerationStructureCreateInfoKHR )* pCreateInfo, const( VkAllocationCallbacks )* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure );
542     alias PFN_vkDestroyAccelerationStructureKHR                                 = void      function( VkDevice device, VkAccelerationStructureKHR accelerationStructure, const( VkAllocationCallbacks )* pAllocator );
543     alias PFN_vkCmdBuildAccelerationStructuresKHR                               = void      function( VkCommandBuffer commandBuffer, uint32_t infoCount, const( VkAccelerationStructureBuildGeometryInfoKHR )* pInfos, const( VkAccelerationStructureBuildRangeInfoKHR* )* ppBuildRangeInfos );
544     alias PFN_vkCmdBuildAccelerationStructuresIndirectKHR                       = void      function( VkCommandBuffer commandBuffer, uint32_t infoCount, const( VkAccelerationStructureBuildGeometryInfoKHR )* pInfos, const( VkDeviceAddress )* pIndirectDeviceAddresses, const( uint32_t )* pIndirectStrides, const( uint32_t* )* ppMaxPrimitiveCounts );
545     alias PFN_vkBuildAccelerationStructuresKHR                                  = VkResult  function( VkDevice device, VkDeferredOperationKHR deferredOperation, uint32_t infoCount, const( VkAccelerationStructureBuildGeometryInfoKHR )* pInfos, const( VkAccelerationStructureBuildRangeInfoKHR* )* ppBuildRangeInfos );
546     alias PFN_vkCopyAccelerationStructureKHR                                    = VkResult  function( VkDevice device, VkDeferredOperationKHR deferredOperation, const( VkCopyAccelerationStructureInfoKHR )* pInfo );
547     alias PFN_vkCopyAccelerationStructureToMemoryKHR                            = VkResult  function( VkDevice device, VkDeferredOperationKHR deferredOperation, const( VkCopyAccelerationStructureToMemoryInfoKHR )* pInfo );
548     alias PFN_vkCopyMemoryToAccelerationStructureKHR                            = VkResult  function( VkDevice device, VkDeferredOperationKHR deferredOperation, const( VkCopyMemoryToAccelerationStructureInfoKHR )* pInfo );
549     alias PFN_vkWriteAccelerationStructuresPropertiesKHR                        = VkResult  function( VkDevice device, uint32_t accelerationStructureCount, const( VkAccelerationStructureKHR )* pAccelerationStructures, VkQueryType queryType, size_t dataSize, void* pData, size_t stride );
550     alias PFN_vkCmdCopyAccelerationStructureKHR                                 = void      function( VkCommandBuffer commandBuffer, const( VkCopyAccelerationStructureInfoKHR )* pInfo );
551     alias PFN_vkCmdCopyAccelerationStructureToMemoryKHR                         = void      function( VkCommandBuffer commandBuffer, const( VkCopyAccelerationStructureToMemoryInfoKHR )* pInfo );
552     alias PFN_vkCmdCopyMemoryToAccelerationStructureKHR                         = void      function( VkCommandBuffer commandBuffer, const( VkCopyMemoryToAccelerationStructureInfoKHR )* pInfo );
553     alias PFN_vkGetAccelerationStructureDeviceAddressKHR                        = VkDeviceAddress  function( VkDevice device, const( VkAccelerationStructureDeviceAddressInfoKHR )* pInfo );
554     alias PFN_vkCmdWriteAccelerationStructuresPropertiesKHR                     = void      function( VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const( VkAccelerationStructureKHR )* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery );
555     alias PFN_vkGetDeviceAccelerationStructureCompatibilityKHR                  = void      function( VkDevice device, const( VkAccelerationStructureVersionInfoKHR )* pVersionInfo, VkAccelerationStructureCompatibilityKHR* pCompatibility );
556     alias PFN_vkGetAccelerationStructureBuildSizesKHR                           = void      function( VkDevice device, VkAccelerationStructureBuildTypeKHR buildType, const( VkAccelerationStructureBuildGeometryInfoKHR )* pBuildInfo, const( uint32_t )* pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo );
557 
558     // VK_KHR_ray_tracing_pipeline
559     alias PFN_vkCmdTraceRaysKHR                                                 = void      function( VkCommandBuffer commandBuffer, const( VkStridedDeviceAddressRegionKHR )* pRaygenShaderBindingTable, const( VkStridedDeviceAddressRegionKHR )* pMissShaderBindingTable, const( VkStridedDeviceAddressRegionKHR )* pHitShaderBindingTable, const( VkStridedDeviceAddressRegionKHR )* pCallableShaderBindingTable, uint32_t width, uint32_t height, uint32_t depth );
560     alias PFN_vkCreateRayTracingPipelinesKHR                                    = VkResult  function( VkDevice device, VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache, uint32_t createInfoCount, const( VkRayTracingPipelineCreateInfoKHR )* pCreateInfos, const( VkAllocationCallbacks )* pAllocator, VkPipeline* pPipelines );
561     alias PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR                 = VkResult  function( VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData );
562     alias PFN_vkCmdTraceRaysIndirectKHR                                         = void      function( VkCommandBuffer commandBuffer, const( VkStridedDeviceAddressRegionKHR )* pRaygenShaderBindingTable, const( VkStridedDeviceAddressRegionKHR )* pMissShaderBindingTable, const( VkStridedDeviceAddressRegionKHR )* pHitShaderBindingTable, const( VkStridedDeviceAddressRegionKHR )* pCallableShaderBindingTable, VkDeviceAddress indirectDeviceAddress );
563     alias PFN_vkGetRayTracingShaderGroupStackSizeKHR                            = VkDeviceSize  function( VkDevice device, VkPipeline pipeline, uint32_t group, VkShaderGroupShaderKHR groupShader );
564     alias PFN_vkCmdSetRayTracingPipelineStackSizeKHR                            = void      function( VkCommandBuffer commandBuffer, uint32_t pipelineStackSize );
565 }
566 
567 
568 /// function declarations
569 __gshared {
570 
571     // VK_VERSION_1_0
572     PFN_vkCreateInstance                                                  vkCreateInstance;
573     PFN_vkDestroyInstance                                                 vkDestroyInstance;
574     PFN_vkEnumeratePhysicalDevices                                        vkEnumeratePhysicalDevices;
575     PFN_vkGetPhysicalDeviceFeatures                                       vkGetPhysicalDeviceFeatures;
576     PFN_vkGetPhysicalDeviceFormatProperties                               vkGetPhysicalDeviceFormatProperties;
577     PFN_vkGetPhysicalDeviceImageFormatProperties                          vkGetPhysicalDeviceImageFormatProperties;
578     PFN_vkGetPhysicalDeviceProperties                                     vkGetPhysicalDeviceProperties;
579     PFN_vkGetPhysicalDeviceQueueFamilyProperties                          vkGetPhysicalDeviceQueueFamilyProperties;
580     PFN_vkGetPhysicalDeviceMemoryProperties                               vkGetPhysicalDeviceMemoryProperties;
581     PFN_vkGetInstanceProcAddr                                             vkGetInstanceProcAddr;
582     PFN_vkGetDeviceProcAddr                                               vkGetDeviceProcAddr;
583     PFN_vkCreateDevice                                                    vkCreateDevice;
584     PFN_vkDestroyDevice                                                   vkDestroyDevice;
585     PFN_vkEnumerateInstanceExtensionProperties                            vkEnumerateInstanceExtensionProperties;
586     PFN_vkEnumerateDeviceExtensionProperties                              vkEnumerateDeviceExtensionProperties;
587     PFN_vkEnumerateInstanceLayerProperties                                vkEnumerateInstanceLayerProperties;
588     PFN_vkEnumerateDeviceLayerProperties                                  vkEnumerateDeviceLayerProperties;
589     PFN_vkGetDeviceQueue                                                  vkGetDeviceQueue;
590     PFN_vkQueueSubmit                                                     vkQueueSubmit;
591     PFN_vkQueueWaitIdle                                                   vkQueueWaitIdle;
592     PFN_vkDeviceWaitIdle                                                  vkDeviceWaitIdle;
593     PFN_vkAllocateMemory                                                  vkAllocateMemory;
594     PFN_vkFreeMemory                                                      vkFreeMemory;
595     PFN_vkMapMemory                                                       vkMapMemory;
596     PFN_vkUnmapMemory                                                     vkUnmapMemory;
597     PFN_vkFlushMappedMemoryRanges                                         vkFlushMappedMemoryRanges;
598     PFN_vkInvalidateMappedMemoryRanges                                    vkInvalidateMappedMemoryRanges;
599     PFN_vkGetDeviceMemoryCommitment                                       vkGetDeviceMemoryCommitment;
600     PFN_vkBindBufferMemory                                                vkBindBufferMemory;
601     PFN_vkBindImageMemory                                                 vkBindImageMemory;
602     PFN_vkGetBufferMemoryRequirements                                     vkGetBufferMemoryRequirements;
603     PFN_vkGetImageMemoryRequirements                                      vkGetImageMemoryRequirements;
604     PFN_vkGetImageSparseMemoryRequirements                                vkGetImageSparseMemoryRequirements;
605     PFN_vkGetPhysicalDeviceSparseImageFormatProperties                    vkGetPhysicalDeviceSparseImageFormatProperties;
606     PFN_vkQueueBindSparse                                                 vkQueueBindSparse;
607     PFN_vkCreateFence                                                     vkCreateFence;
608     PFN_vkDestroyFence                                                    vkDestroyFence;
609     PFN_vkResetFences                                                     vkResetFences;
610     PFN_vkGetFenceStatus                                                  vkGetFenceStatus;
611     PFN_vkWaitForFences                                                   vkWaitForFences;
612     PFN_vkCreateSemaphore                                                 vkCreateSemaphore;
613     PFN_vkDestroySemaphore                                                vkDestroySemaphore;
614     PFN_vkCreateEvent                                                     vkCreateEvent;
615     PFN_vkDestroyEvent                                                    vkDestroyEvent;
616     PFN_vkGetEventStatus                                                  vkGetEventStatus;
617     PFN_vkSetEvent                                                        vkSetEvent;
618     PFN_vkResetEvent                                                      vkResetEvent;
619     PFN_vkCreateQueryPool                                                 vkCreateQueryPool;
620     PFN_vkDestroyQueryPool                                                vkDestroyQueryPool;
621     PFN_vkGetQueryPoolResults                                             vkGetQueryPoolResults;
622     PFN_vkCreateBuffer                                                    vkCreateBuffer;
623     PFN_vkDestroyBuffer                                                   vkDestroyBuffer;
624     PFN_vkCreateBufferView                                                vkCreateBufferView;
625     PFN_vkDestroyBufferView                                               vkDestroyBufferView;
626     PFN_vkCreateImage                                                     vkCreateImage;
627     PFN_vkDestroyImage                                                    vkDestroyImage;
628     PFN_vkGetImageSubresourceLayout                                       vkGetImageSubresourceLayout;
629     PFN_vkCreateImageView                                                 vkCreateImageView;
630     PFN_vkDestroyImageView                                                vkDestroyImageView;
631     PFN_vkCreateShaderModule                                              vkCreateShaderModule;
632     PFN_vkDestroyShaderModule                                             vkDestroyShaderModule;
633     PFN_vkCreatePipelineCache                                             vkCreatePipelineCache;
634     PFN_vkDestroyPipelineCache                                            vkDestroyPipelineCache;
635     PFN_vkGetPipelineCacheData                                            vkGetPipelineCacheData;
636     PFN_vkMergePipelineCaches                                             vkMergePipelineCaches;
637     PFN_vkCreateGraphicsPipelines                                         vkCreateGraphicsPipelines;
638     PFN_vkCreateComputePipelines                                          vkCreateComputePipelines;
639     PFN_vkDestroyPipeline                                                 vkDestroyPipeline;
640     PFN_vkCreatePipelineLayout                                            vkCreatePipelineLayout;
641     PFN_vkDestroyPipelineLayout                                           vkDestroyPipelineLayout;
642     PFN_vkCreateSampler                                                   vkCreateSampler;
643     PFN_vkDestroySampler                                                  vkDestroySampler;
644     PFN_vkCreateDescriptorSetLayout                                       vkCreateDescriptorSetLayout;
645     PFN_vkDestroyDescriptorSetLayout                                      vkDestroyDescriptorSetLayout;
646     PFN_vkCreateDescriptorPool                                            vkCreateDescriptorPool;
647     PFN_vkDestroyDescriptorPool                                           vkDestroyDescriptorPool;
648     PFN_vkResetDescriptorPool                                             vkResetDescriptorPool;
649     PFN_vkAllocateDescriptorSets                                          vkAllocateDescriptorSets;
650     PFN_vkFreeDescriptorSets                                              vkFreeDescriptorSets;
651     PFN_vkUpdateDescriptorSets                                            vkUpdateDescriptorSets;
652     PFN_vkCreateFramebuffer                                               vkCreateFramebuffer;
653     PFN_vkDestroyFramebuffer                                              vkDestroyFramebuffer;
654     PFN_vkCreateRenderPass                                                vkCreateRenderPass;
655     PFN_vkDestroyRenderPass                                               vkDestroyRenderPass;
656     PFN_vkGetRenderAreaGranularity                                        vkGetRenderAreaGranularity;
657     PFN_vkCreateCommandPool                                               vkCreateCommandPool;
658     PFN_vkDestroyCommandPool                                              vkDestroyCommandPool;
659     PFN_vkResetCommandPool                                                vkResetCommandPool;
660     PFN_vkAllocateCommandBuffers                                          vkAllocateCommandBuffers;
661     PFN_vkFreeCommandBuffers                                              vkFreeCommandBuffers;
662     PFN_vkBeginCommandBuffer                                              vkBeginCommandBuffer;
663     PFN_vkEndCommandBuffer                                                vkEndCommandBuffer;
664     PFN_vkResetCommandBuffer                                              vkResetCommandBuffer;
665     PFN_vkCmdBindPipeline                                                 vkCmdBindPipeline;
666     PFN_vkCmdSetViewport                                                  vkCmdSetViewport;
667     PFN_vkCmdSetScissor                                                   vkCmdSetScissor;
668     PFN_vkCmdSetLineWidth                                                 vkCmdSetLineWidth;
669     PFN_vkCmdSetDepthBias                                                 vkCmdSetDepthBias;
670     PFN_vkCmdSetBlendConstants                                            vkCmdSetBlendConstants;
671     PFN_vkCmdSetDepthBounds                                               vkCmdSetDepthBounds;
672     PFN_vkCmdSetStencilCompareMask                                        vkCmdSetStencilCompareMask;
673     PFN_vkCmdSetStencilWriteMask                                          vkCmdSetStencilWriteMask;
674     PFN_vkCmdSetStencilReference                                          vkCmdSetStencilReference;
675     PFN_vkCmdBindDescriptorSets                                           vkCmdBindDescriptorSets;
676     PFN_vkCmdBindIndexBuffer                                              vkCmdBindIndexBuffer;
677     PFN_vkCmdBindVertexBuffers                                            vkCmdBindVertexBuffers;
678     PFN_vkCmdDraw                                                         vkCmdDraw;
679     PFN_vkCmdDrawIndexed                                                  vkCmdDrawIndexed;
680     PFN_vkCmdDrawIndirect                                                 vkCmdDrawIndirect;
681     PFN_vkCmdDrawIndexedIndirect                                          vkCmdDrawIndexedIndirect;
682     PFN_vkCmdDispatch                                                     vkCmdDispatch;
683     PFN_vkCmdDispatchIndirect                                             vkCmdDispatchIndirect;
684     PFN_vkCmdCopyBuffer                                                   vkCmdCopyBuffer;
685     PFN_vkCmdCopyImage                                                    vkCmdCopyImage;
686     PFN_vkCmdBlitImage                                                    vkCmdBlitImage;
687     PFN_vkCmdCopyBufferToImage                                            vkCmdCopyBufferToImage;
688     PFN_vkCmdCopyImageToBuffer                                            vkCmdCopyImageToBuffer;
689     PFN_vkCmdUpdateBuffer                                                 vkCmdUpdateBuffer;
690     PFN_vkCmdFillBuffer                                                   vkCmdFillBuffer;
691     PFN_vkCmdClearColorImage                                              vkCmdClearColorImage;
692     PFN_vkCmdClearDepthStencilImage                                       vkCmdClearDepthStencilImage;
693     PFN_vkCmdClearAttachments                                             vkCmdClearAttachments;
694     PFN_vkCmdResolveImage                                                 vkCmdResolveImage;
695     PFN_vkCmdSetEvent                                                     vkCmdSetEvent;
696     PFN_vkCmdResetEvent                                                   vkCmdResetEvent;
697     PFN_vkCmdWaitEvents                                                   vkCmdWaitEvents;
698     PFN_vkCmdPipelineBarrier                                              vkCmdPipelineBarrier;
699     PFN_vkCmdBeginQuery                                                   vkCmdBeginQuery;
700     PFN_vkCmdEndQuery                                                     vkCmdEndQuery;
701     PFN_vkCmdResetQueryPool                                               vkCmdResetQueryPool;
702     PFN_vkCmdWriteTimestamp                                               vkCmdWriteTimestamp;
703     PFN_vkCmdCopyQueryPoolResults                                         vkCmdCopyQueryPoolResults;
704     PFN_vkCmdPushConstants                                                vkCmdPushConstants;
705     PFN_vkCmdBeginRenderPass                                              vkCmdBeginRenderPass;
706     PFN_vkCmdNextSubpass                                                  vkCmdNextSubpass;
707     PFN_vkCmdEndRenderPass                                                vkCmdEndRenderPass;
708     PFN_vkCmdExecuteCommands                                              vkCmdExecuteCommands;
709 
710     // VK_VERSION_1_1
711     PFN_vkEnumerateInstanceVersion                                        vkEnumerateInstanceVersion;
712     PFN_vkBindBufferMemory2                                               vkBindBufferMemory2;
713     PFN_vkBindImageMemory2                                                vkBindImageMemory2;
714     PFN_vkGetDeviceGroupPeerMemoryFeatures                                vkGetDeviceGroupPeerMemoryFeatures;
715     PFN_vkCmdSetDeviceMask                                                vkCmdSetDeviceMask;
716     PFN_vkCmdDispatchBase                                                 vkCmdDispatchBase;
717     PFN_vkEnumeratePhysicalDeviceGroups                                   vkEnumeratePhysicalDeviceGroups;
718     PFN_vkGetImageMemoryRequirements2                                     vkGetImageMemoryRequirements2;
719     PFN_vkGetBufferMemoryRequirements2                                    vkGetBufferMemoryRequirements2;
720     PFN_vkGetImageSparseMemoryRequirements2                               vkGetImageSparseMemoryRequirements2;
721     PFN_vkGetPhysicalDeviceFeatures2                                      vkGetPhysicalDeviceFeatures2;
722     PFN_vkGetPhysicalDeviceProperties2                                    vkGetPhysicalDeviceProperties2;
723     PFN_vkGetPhysicalDeviceFormatProperties2                              vkGetPhysicalDeviceFormatProperties2;
724     PFN_vkGetPhysicalDeviceImageFormatProperties2                         vkGetPhysicalDeviceImageFormatProperties2;
725     PFN_vkGetPhysicalDeviceQueueFamilyProperties2                         vkGetPhysicalDeviceQueueFamilyProperties2;
726     PFN_vkGetPhysicalDeviceMemoryProperties2                              vkGetPhysicalDeviceMemoryProperties2;
727     PFN_vkGetPhysicalDeviceSparseImageFormatProperties2                   vkGetPhysicalDeviceSparseImageFormatProperties2;
728     PFN_vkTrimCommandPool                                                 vkTrimCommandPool;
729     PFN_vkGetDeviceQueue2                                                 vkGetDeviceQueue2;
730     PFN_vkCreateSamplerYcbcrConversion                                    vkCreateSamplerYcbcrConversion;
731     PFN_vkDestroySamplerYcbcrConversion                                   vkDestroySamplerYcbcrConversion;
732     PFN_vkCreateDescriptorUpdateTemplate                                  vkCreateDescriptorUpdateTemplate;
733     PFN_vkDestroyDescriptorUpdateTemplate                                 vkDestroyDescriptorUpdateTemplate;
734     PFN_vkUpdateDescriptorSetWithTemplate                                 vkUpdateDescriptorSetWithTemplate;
735     PFN_vkGetPhysicalDeviceExternalBufferProperties                       vkGetPhysicalDeviceExternalBufferProperties;
736     PFN_vkGetPhysicalDeviceExternalFenceProperties                        vkGetPhysicalDeviceExternalFenceProperties;
737     PFN_vkGetPhysicalDeviceExternalSemaphoreProperties                    vkGetPhysicalDeviceExternalSemaphoreProperties;
738     PFN_vkGetDescriptorSetLayoutSupport                                   vkGetDescriptorSetLayoutSupport;
739 
740     // VK_VERSION_1_2
741     PFN_vkCmdDrawIndirectCount                                            vkCmdDrawIndirectCount;
742     PFN_vkCmdDrawIndexedIndirectCount                                     vkCmdDrawIndexedIndirectCount;
743     PFN_vkCreateRenderPass2                                               vkCreateRenderPass2;
744     PFN_vkCmdBeginRenderPass2                                             vkCmdBeginRenderPass2;
745     PFN_vkCmdNextSubpass2                                                 vkCmdNextSubpass2;
746     PFN_vkCmdEndRenderPass2                                               vkCmdEndRenderPass2;
747     PFN_vkResetQueryPool                                                  vkResetQueryPool;
748     PFN_vkGetSemaphoreCounterValue                                        vkGetSemaphoreCounterValue;
749     PFN_vkWaitSemaphores                                                  vkWaitSemaphores;
750     PFN_vkSignalSemaphore                                                 vkSignalSemaphore;
751     PFN_vkGetBufferDeviceAddress                                          vkGetBufferDeviceAddress;
752     PFN_vkGetBufferOpaqueCaptureAddress                                   vkGetBufferOpaqueCaptureAddress;
753     PFN_vkGetDeviceMemoryOpaqueCaptureAddress                             vkGetDeviceMemoryOpaqueCaptureAddress;
754 
755     // VK_KHR_surface
756     PFN_vkDestroySurfaceKHR                                               vkDestroySurfaceKHR;
757     PFN_vkGetPhysicalDeviceSurfaceSupportKHR                              vkGetPhysicalDeviceSurfaceSupportKHR;
758     PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR                         vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
759     PFN_vkGetPhysicalDeviceSurfaceFormatsKHR                              vkGetPhysicalDeviceSurfaceFormatsKHR;
760     PFN_vkGetPhysicalDeviceSurfacePresentModesKHR                         vkGetPhysicalDeviceSurfacePresentModesKHR;
761 
762     // VK_KHR_swapchain
763     PFN_vkCreateSwapchainKHR                                              vkCreateSwapchainKHR;
764     PFN_vkDestroySwapchainKHR                                             vkDestroySwapchainKHR;
765     PFN_vkGetSwapchainImagesKHR                                           vkGetSwapchainImagesKHR;
766     PFN_vkAcquireNextImageKHR                                             vkAcquireNextImageKHR;
767     PFN_vkQueuePresentKHR                                                 vkQueuePresentKHR;
768     PFN_vkGetDeviceGroupPresentCapabilitiesKHR                            vkGetDeviceGroupPresentCapabilitiesKHR;
769     PFN_vkGetDeviceGroupSurfacePresentModesKHR                            vkGetDeviceGroupSurfacePresentModesKHR;
770     PFN_vkGetPhysicalDevicePresentRectanglesKHR                           vkGetPhysicalDevicePresentRectanglesKHR;
771     PFN_vkAcquireNextImage2KHR                                            vkAcquireNextImage2KHR;
772 
773     // VK_KHR_display
774     PFN_vkGetPhysicalDeviceDisplayPropertiesKHR                           vkGetPhysicalDeviceDisplayPropertiesKHR;
775     PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR                      vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
776     PFN_vkGetDisplayPlaneSupportedDisplaysKHR                             vkGetDisplayPlaneSupportedDisplaysKHR;
777     PFN_vkGetDisplayModePropertiesKHR                                     vkGetDisplayModePropertiesKHR;
778     PFN_vkCreateDisplayModeKHR                                            vkCreateDisplayModeKHR;
779     PFN_vkGetDisplayPlaneCapabilitiesKHR                                  vkGetDisplayPlaneCapabilitiesKHR;
780     PFN_vkCreateDisplayPlaneSurfaceKHR                                    vkCreateDisplayPlaneSurfaceKHR;
781 
782     // VK_KHR_display_swapchain
783     PFN_vkCreateSharedSwapchainsKHR                                       vkCreateSharedSwapchainsKHR;
784 
785     // VK_KHR_dynamic_rendering
786     PFN_vkCmdBeginRenderingKHR                                            vkCmdBeginRenderingKHR;
787     PFN_vkCmdEndRenderingKHR                                              vkCmdEndRenderingKHR;
788 
789     // VK_KHR_external_memory_fd
790     PFN_vkGetMemoryFdKHR                                                  vkGetMemoryFdKHR;
791     PFN_vkGetMemoryFdPropertiesKHR                                        vkGetMemoryFdPropertiesKHR;
792 
793     // VK_KHR_external_semaphore_fd
794     PFN_vkImportSemaphoreFdKHR                                            vkImportSemaphoreFdKHR;
795     PFN_vkGetSemaphoreFdKHR                                               vkGetSemaphoreFdKHR;
796 
797     // VK_KHR_push_descriptor
798     PFN_vkCmdPushDescriptorSetKHR                                         vkCmdPushDescriptorSetKHR;
799     PFN_vkCmdPushDescriptorSetWithTemplateKHR                             vkCmdPushDescriptorSetWithTemplateKHR;
800 
801     // VK_KHR_shared_presentable_image
802     PFN_vkGetSwapchainStatusKHR                                           vkGetSwapchainStatusKHR;
803 
804     // VK_KHR_external_fence_fd
805     PFN_vkImportFenceFdKHR                                                vkImportFenceFdKHR;
806     PFN_vkGetFenceFdKHR                                                   vkGetFenceFdKHR;
807 
808     // VK_KHR_performance_query
809     PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR   vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;
810     PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR           vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;
811     PFN_vkAcquireProfilingLockKHR                                         vkAcquireProfilingLockKHR;
812     PFN_vkReleaseProfilingLockKHR                                         vkReleaseProfilingLockKHR;
813 
814     // VK_KHR_get_surface_capabilities2
815     PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR                        vkGetPhysicalDeviceSurfaceCapabilities2KHR;
816     PFN_vkGetPhysicalDeviceSurfaceFormats2KHR                             vkGetPhysicalDeviceSurfaceFormats2KHR;
817 
818     // VK_KHR_get_display_properties2
819     PFN_vkGetPhysicalDeviceDisplayProperties2KHR                          vkGetPhysicalDeviceDisplayProperties2KHR;
820     PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR                     vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
821     PFN_vkGetDisplayModeProperties2KHR                                    vkGetDisplayModeProperties2KHR;
822     PFN_vkGetDisplayPlaneCapabilities2KHR                                 vkGetDisplayPlaneCapabilities2KHR;
823 
824     // VK_KHR_fragment_shading_rate
825     PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR                        vkGetPhysicalDeviceFragmentShadingRatesKHR;
826     PFN_vkCmdSetFragmentShadingRateKHR                                    vkCmdSetFragmentShadingRateKHR;
827 
828     // VK_KHR_present_wait
829     PFN_vkWaitForPresentKHR                                               vkWaitForPresentKHR;
830 
831     // VK_KHR_deferred_host_operations
832     PFN_vkCreateDeferredOperationKHR                                      vkCreateDeferredOperationKHR;
833     PFN_vkDestroyDeferredOperationKHR                                     vkDestroyDeferredOperationKHR;
834     PFN_vkGetDeferredOperationMaxConcurrencyKHR                           vkGetDeferredOperationMaxConcurrencyKHR;
835     PFN_vkGetDeferredOperationResultKHR                                   vkGetDeferredOperationResultKHR;
836     PFN_vkDeferredOperationJoinKHR                                        vkDeferredOperationJoinKHR;
837 
838     // VK_KHR_pipeline_executable_properties
839     PFN_vkGetPipelineExecutablePropertiesKHR                              vkGetPipelineExecutablePropertiesKHR;
840     PFN_vkGetPipelineExecutableStatisticsKHR                              vkGetPipelineExecutableStatisticsKHR;
841     PFN_vkGetPipelineExecutableInternalRepresentationsKHR                 vkGetPipelineExecutableInternalRepresentationsKHR;
842 
843     // VK_KHR_synchronization2
844     PFN_vkCmdSetEvent2KHR                                                 vkCmdSetEvent2KHR;
845     PFN_vkCmdResetEvent2KHR                                               vkCmdResetEvent2KHR;
846     PFN_vkCmdWaitEvents2KHR                                               vkCmdWaitEvents2KHR;
847     PFN_vkCmdPipelineBarrier2KHR                                          vkCmdPipelineBarrier2KHR;
848     PFN_vkCmdWriteTimestamp2KHR                                           vkCmdWriteTimestamp2KHR;
849     PFN_vkQueueSubmit2KHR                                                 vkQueueSubmit2KHR;
850     PFN_vkCmdWriteBufferMarker2AMD                                        vkCmdWriteBufferMarker2AMD;
851     PFN_vkGetQueueCheckpointData2NV                                       vkGetQueueCheckpointData2NV;
852 
853     // VK_KHR_copy_commands2
854     PFN_vkCmdCopyBuffer2KHR                                               vkCmdCopyBuffer2KHR;
855     PFN_vkCmdCopyImage2KHR                                                vkCmdCopyImage2KHR;
856     PFN_vkCmdCopyBufferToImage2KHR                                        vkCmdCopyBufferToImage2KHR;
857     PFN_vkCmdCopyImageToBuffer2KHR                                        vkCmdCopyImageToBuffer2KHR;
858     PFN_vkCmdBlitImage2KHR                                                vkCmdBlitImage2KHR;
859     PFN_vkCmdResolveImage2KHR                                             vkCmdResolveImage2KHR;
860 
861     // VK_KHR_maintenance4
862     PFN_vkGetDeviceBufferMemoryRequirementsKHR                            vkGetDeviceBufferMemoryRequirementsKHR;
863     PFN_vkGetDeviceImageMemoryRequirementsKHR                             vkGetDeviceImageMemoryRequirementsKHR;
864     PFN_vkGetDeviceImageSparseMemoryRequirementsKHR                       vkGetDeviceImageSparseMemoryRequirementsKHR;
865 
866     // VK_EXT_debug_report
867     PFN_vkCreateDebugReportCallbackEXT                                    vkCreateDebugReportCallbackEXT;
868     PFN_vkDestroyDebugReportCallbackEXT                                   vkDestroyDebugReportCallbackEXT;
869     PFN_vkDebugReportMessageEXT                                           vkDebugReportMessageEXT;
870 
871     // VK_EXT_debug_marker
872     PFN_vkDebugMarkerSetObjectTagEXT                                      vkDebugMarkerSetObjectTagEXT;
873     PFN_vkDebugMarkerSetObjectNameEXT                                     vkDebugMarkerSetObjectNameEXT;
874     PFN_vkCmdDebugMarkerBeginEXT                                          vkCmdDebugMarkerBeginEXT;
875     PFN_vkCmdDebugMarkerEndEXT                                            vkCmdDebugMarkerEndEXT;
876     PFN_vkCmdDebugMarkerInsertEXT                                         vkCmdDebugMarkerInsertEXT;
877 
878     // VK_EXT_transform_feedback
879     PFN_vkCmdBindTransformFeedbackBuffersEXT                              vkCmdBindTransformFeedbackBuffersEXT;
880     PFN_vkCmdBeginTransformFeedbackEXT                                    vkCmdBeginTransformFeedbackEXT;
881     PFN_vkCmdEndTransformFeedbackEXT                                      vkCmdEndTransformFeedbackEXT;
882     PFN_vkCmdBeginQueryIndexedEXT                                         vkCmdBeginQueryIndexedEXT;
883     PFN_vkCmdEndQueryIndexedEXT                                           vkCmdEndQueryIndexedEXT;
884     PFN_vkCmdDrawIndirectByteCountEXT                                     vkCmdDrawIndirectByteCountEXT;
885 
886     // VK_NVX_binary_import
887     PFN_vkCreateCuModuleNVX                                               vkCreateCuModuleNVX;
888     PFN_vkCreateCuFunctionNVX                                             vkCreateCuFunctionNVX;
889     PFN_vkDestroyCuModuleNVX                                              vkDestroyCuModuleNVX;
890     PFN_vkDestroyCuFunctionNVX                                            vkDestroyCuFunctionNVX;
891     PFN_vkCmdCuLaunchKernelNVX                                            vkCmdCuLaunchKernelNVX;
892 
893     // VK_NVX_image_view_handle
894     PFN_vkGetImageViewHandleNVX                                           vkGetImageViewHandleNVX;
895     PFN_vkGetImageViewAddressNVX                                          vkGetImageViewAddressNVX;
896 
897     // VK_AMD_shader_info
898     PFN_vkGetShaderInfoAMD                                                vkGetShaderInfoAMD;
899 
900     // VK_NV_external_memory_capabilities
901     PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV                vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
902 
903     // VK_EXT_conditional_rendering
904     PFN_vkCmdBeginConditionalRenderingEXT                                 vkCmdBeginConditionalRenderingEXT;
905     PFN_vkCmdEndConditionalRenderingEXT                                   vkCmdEndConditionalRenderingEXT;
906 
907     // VK_NV_clip_space_w_scaling
908     PFN_vkCmdSetViewportWScalingNV                                        vkCmdSetViewportWScalingNV;
909 
910     // VK_EXT_direct_mode_display
911     PFN_vkReleaseDisplayEXT                                               vkReleaseDisplayEXT;
912 
913     // VK_EXT_display_surface_counter
914     PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT                        vkGetPhysicalDeviceSurfaceCapabilities2EXT;
915 
916     // VK_EXT_display_control
917     PFN_vkDisplayPowerControlEXT                                          vkDisplayPowerControlEXT;
918     PFN_vkRegisterDeviceEventEXT                                          vkRegisterDeviceEventEXT;
919     PFN_vkRegisterDisplayEventEXT                                         vkRegisterDisplayEventEXT;
920     PFN_vkGetSwapchainCounterEXT                                          vkGetSwapchainCounterEXT;
921 
922     // VK_GOOGLE_display_timing
923     PFN_vkGetRefreshCycleDurationGOOGLE                                   vkGetRefreshCycleDurationGOOGLE;
924     PFN_vkGetPastPresentationTimingGOOGLE                                 vkGetPastPresentationTimingGOOGLE;
925 
926     // VK_EXT_discard_rectangles
927     PFN_vkCmdSetDiscardRectangleEXT                                       vkCmdSetDiscardRectangleEXT;
928 
929     // VK_EXT_hdr_metadata
930     PFN_vkSetHdrMetadataEXT                                               vkSetHdrMetadataEXT;
931 
932     // VK_EXT_debug_utils
933     PFN_vkSetDebugUtilsObjectNameEXT                                      vkSetDebugUtilsObjectNameEXT;
934     PFN_vkSetDebugUtilsObjectTagEXT                                       vkSetDebugUtilsObjectTagEXT;
935     PFN_vkQueueBeginDebugUtilsLabelEXT                                    vkQueueBeginDebugUtilsLabelEXT;
936     PFN_vkQueueEndDebugUtilsLabelEXT                                      vkQueueEndDebugUtilsLabelEXT;
937     PFN_vkQueueInsertDebugUtilsLabelEXT                                   vkQueueInsertDebugUtilsLabelEXT;
938     PFN_vkCmdBeginDebugUtilsLabelEXT                                      vkCmdBeginDebugUtilsLabelEXT;
939     PFN_vkCmdEndDebugUtilsLabelEXT                                        vkCmdEndDebugUtilsLabelEXT;
940     PFN_vkCmdInsertDebugUtilsLabelEXT                                     vkCmdInsertDebugUtilsLabelEXT;
941     PFN_vkCreateDebugUtilsMessengerEXT                                    vkCreateDebugUtilsMessengerEXT;
942     PFN_vkDestroyDebugUtilsMessengerEXT                                   vkDestroyDebugUtilsMessengerEXT;
943     PFN_vkSubmitDebugUtilsMessageEXT                                      vkSubmitDebugUtilsMessageEXT;
944 
945     // VK_EXT_sample_locations
946     PFN_vkCmdSetSampleLocationsEXT                                        vkCmdSetSampleLocationsEXT;
947     PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT                       vkGetPhysicalDeviceMultisamplePropertiesEXT;
948 
949     // VK_EXT_image_drm_format_modifier
950     PFN_vkGetImageDrmFormatModifierPropertiesEXT                          vkGetImageDrmFormatModifierPropertiesEXT;
951 
952     // VK_EXT_validation_cache
953     PFN_vkCreateValidationCacheEXT                                        vkCreateValidationCacheEXT;
954     PFN_vkDestroyValidationCacheEXT                                       vkDestroyValidationCacheEXT;
955     PFN_vkMergeValidationCachesEXT                                        vkMergeValidationCachesEXT;
956     PFN_vkGetValidationCacheDataEXT                                       vkGetValidationCacheDataEXT;
957 
958     // VK_NV_shading_rate_image
959     PFN_vkCmdBindShadingRateImageNV                                       vkCmdBindShadingRateImageNV;
960     PFN_vkCmdSetViewportShadingRatePaletteNV                              vkCmdSetViewportShadingRatePaletteNV;
961     PFN_vkCmdSetCoarseSampleOrderNV                                       vkCmdSetCoarseSampleOrderNV;
962 
963     // VK_NV_ray_tracing
964     PFN_vkCreateAccelerationStructureNV                                   vkCreateAccelerationStructureNV;
965     PFN_vkDestroyAccelerationStructureNV                                  vkDestroyAccelerationStructureNV;
966     PFN_vkGetAccelerationStructureMemoryRequirementsNV                    vkGetAccelerationStructureMemoryRequirementsNV;
967     PFN_vkBindAccelerationStructureMemoryNV                               vkBindAccelerationStructureMemoryNV;
968     PFN_vkCmdBuildAccelerationStructureNV                                 vkCmdBuildAccelerationStructureNV;
969     PFN_vkCmdCopyAccelerationStructureNV                                  vkCmdCopyAccelerationStructureNV;
970     PFN_vkCmdTraceRaysNV                                                  vkCmdTraceRaysNV;
971     PFN_vkCreateRayTracingPipelinesNV                                     vkCreateRayTracingPipelinesNV;
972     PFN_vkGetRayTracingShaderGroupHandlesKHR                              vkGetRayTracingShaderGroupHandlesKHR;
973     PFN_vkGetAccelerationStructureHandleNV                                vkGetAccelerationStructureHandleNV;
974     PFN_vkCmdWriteAccelerationStructuresPropertiesNV                      vkCmdWriteAccelerationStructuresPropertiesNV;
975     PFN_vkCompileDeferredNV                                               vkCompileDeferredNV;
976 
977     // VK_EXT_external_memory_host
978     PFN_vkGetMemoryHostPointerPropertiesEXT                               vkGetMemoryHostPointerPropertiesEXT;
979 
980     // VK_AMD_buffer_marker
981     PFN_vkCmdWriteBufferMarkerAMD                                         vkCmdWriteBufferMarkerAMD;
982 
983     // VK_EXT_calibrated_timestamps
984     PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT                    vkGetPhysicalDeviceCalibrateableTimeDomainsEXT;
985     PFN_vkGetCalibratedTimestampsEXT                                      vkGetCalibratedTimestampsEXT;
986 
987     // VK_NV_mesh_shader
988     PFN_vkCmdDrawMeshTasksNV                                              vkCmdDrawMeshTasksNV;
989     PFN_vkCmdDrawMeshTasksIndirectNV                                      vkCmdDrawMeshTasksIndirectNV;
990     PFN_vkCmdDrawMeshTasksIndirectCountNV                                 vkCmdDrawMeshTasksIndirectCountNV;
991 
992     // VK_NV_scissor_exclusive
993     PFN_vkCmdSetExclusiveScissorNV                                        vkCmdSetExclusiveScissorNV;
994 
995     // VK_NV_device_diagnostic_checkpoints
996     PFN_vkCmdSetCheckpointNV                                              vkCmdSetCheckpointNV;
997     PFN_vkGetQueueCheckpointDataNV                                        vkGetQueueCheckpointDataNV;
998 
999     // VK_INTEL_performance_query
1000     PFN_vkInitializePerformanceApiINTEL                                   vkInitializePerformanceApiINTEL;
1001     PFN_vkUninitializePerformanceApiINTEL                                 vkUninitializePerformanceApiINTEL;
1002     PFN_vkCmdSetPerformanceMarkerINTEL                                    vkCmdSetPerformanceMarkerINTEL;
1003     PFN_vkCmdSetPerformanceStreamMarkerINTEL                              vkCmdSetPerformanceStreamMarkerINTEL;
1004     PFN_vkCmdSetPerformanceOverrideINTEL                                  vkCmdSetPerformanceOverrideINTEL;
1005     PFN_vkAcquirePerformanceConfigurationINTEL                            vkAcquirePerformanceConfigurationINTEL;
1006     PFN_vkReleasePerformanceConfigurationINTEL                            vkReleasePerformanceConfigurationINTEL;
1007     PFN_vkQueueSetPerformanceConfigurationINTEL                           vkQueueSetPerformanceConfigurationINTEL;
1008     PFN_vkGetPerformanceParameterINTEL                                    vkGetPerformanceParameterINTEL;
1009 
1010     // VK_AMD_display_native_hdr
1011     PFN_vkSetLocalDimmingAMD                                              vkSetLocalDimmingAMD;
1012 
1013     // VK_EXT_tooling_info
1014     PFN_vkGetPhysicalDeviceToolPropertiesEXT                              vkGetPhysicalDeviceToolPropertiesEXT;
1015 
1016     // VK_NV_cooperative_matrix
1017     PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV                  vkGetPhysicalDeviceCooperativeMatrixPropertiesNV;
1018 
1019     // VK_NV_coverage_reduction_mode
1020     PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;
1021 
1022     // VK_EXT_headless_surface
1023     PFN_vkCreateHeadlessSurfaceEXT                                        vkCreateHeadlessSurfaceEXT;
1024 
1025     // VK_EXT_line_rasterization
1026     PFN_vkCmdSetLineStippleEXT                                            vkCmdSetLineStippleEXT;
1027 
1028     // VK_EXT_extended_dynamic_state
1029     PFN_vkCmdSetCullModeEXT                                               vkCmdSetCullModeEXT;
1030     PFN_vkCmdSetFrontFaceEXT                                              vkCmdSetFrontFaceEXT;
1031     PFN_vkCmdSetPrimitiveTopologyEXT                                      vkCmdSetPrimitiveTopologyEXT;
1032     PFN_vkCmdSetViewportWithCountEXT                                      vkCmdSetViewportWithCountEXT;
1033     PFN_vkCmdSetScissorWithCountEXT                                       vkCmdSetScissorWithCountEXT;
1034     PFN_vkCmdBindVertexBuffers2EXT                                        vkCmdBindVertexBuffers2EXT;
1035     PFN_vkCmdSetDepthTestEnableEXT                                        vkCmdSetDepthTestEnableEXT;
1036     PFN_vkCmdSetDepthWriteEnableEXT                                       vkCmdSetDepthWriteEnableEXT;
1037     PFN_vkCmdSetDepthCompareOpEXT                                         vkCmdSetDepthCompareOpEXT;
1038     PFN_vkCmdSetDepthBoundsTestEnableEXT                                  vkCmdSetDepthBoundsTestEnableEXT;
1039     PFN_vkCmdSetStencilTestEnableEXT                                      vkCmdSetStencilTestEnableEXT;
1040     PFN_vkCmdSetStencilOpEXT                                              vkCmdSetStencilOpEXT;
1041 
1042     // VK_NV_device_generated_commands
1043     PFN_vkGetGeneratedCommandsMemoryRequirementsNV                        vkGetGeneratedCommandsMemoryRequirementsNV;
1044     PFN_vkCmdPreprocessGeneratedCommandsNV                                vkCmdPreprocessGeneratedCommandsNV;
1045     PFN_vkCmdExecuteGeneratedCommandsNV                                   vkCmdExecuteGeneratedCommandsNV;
1046     PFN_vkCmdBindPipelineShaderGroupNV                                    vkCmdBindPipelineShaderGroupNV;
1047     PFN_vkCreateIndirectCommandsLayoutNV                                  vkCreateIndirectCommandsLayoutNV;
1048     PFN_vkDestroyIndirectCommandsLayoutNV                                 vkDestroyIndirectCommandsLayoutNV;
1049 
1050     // VK_EXT_acquire_drm_display
1051     PFN_vkAcquireDrmDisplayEXT                                            vkAcquireDrmDisplayEXT;
1052     PFN_vkGetDrmDisplayEXT                                                vkGetDrmDisplayEXT;
1053 
1054     // VK_EXT_private_data
1055     PFN_vkCreatePrivateDataSlotEXT                                        vkCreatePrivateDataSlotEXT;
1056     PFN_vkDestroyPrivateDataSlotEXT                                       vkDestroyPrivateDataSlotEXT;
1057     PFN_vkSetPrivateDataEXT                                               vkSetPrivateDataEXT;
1058     PFN_vkGetPrivateDataEXT                                               vkGetPrivateDataEXT;
1059 
1060     // VK_NV_fragment_shading_rate_enums
1061     PFN_vkCmdSetFragmentShadingRateEnumNV                                 vkCmdSetFragmentShadingRateEnumNV;
1062 
1063     // VK_EXT_vertex_input_dynamic_state
1064     PFN_vkCmdSetVertexInputEXT                                            vkCmdSetVertexInputEXT;
1065 
1066     // VK_HUAWEI_subpass_shading
1067     PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI                   vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;
1068     PFN_vkCmdSubpassShadingHUAWEI                                         vkCmdSubpassShadingHUAWEI;
1069 
1070     // VK_HUAWEI_invocation_mask
1071     PFN_vkCmdBindInvocationMaskHUAWEI                                     vkCmdBindInvocationMaskHUAWEI;
1072 
1073     // VK_NV_external_memory_rdma
1074     PFN_vkGetMemoryRemoteAddressNV                                        vkGetMemoryRemoteAddressNV;
1075 
1076     // VK_EXT_extended_dynamic_state2
1077     PFN_vkCmdSetPatchControlPointsEXT                                     vkCmdSetPatchControlPointsEXT;
1078     PFN_vkCmdSetRasterizerDiscardEnableEXT                                vkCmdSetRasterizerDiscardEnableEXT;
1079     PFN_vkCmdSetDepthBiasEnableEXT                                        vkCmdSetDepthBiasEnableEXT;
1080     PFN_vkCmdSetLogicOpEXT                                                vkCmdSetLogicOpEXT;
1081     PFN_vkCmdSetPrimitiveRestartEnableEXT                                 vkCmdSetPrimitiveRestartEnableEXT;
1082 
1083     // VK_EXT_color_write_enable
1084     PFN_vkCmdSetColorWriteEnableEXT                                       vkCmdSetColorWriteEnableEXT;
1085 
1086     // VK_EXT_multi_draw
1087     PFN_vkCmdDrawMultiEXT                                                 vkCmdDrawMultiEXT;
1088     PFN_vkCmdDrawMultiIndexedEXT                                          vkCmdDrawMultiIndexedEXT;
1089 
1090     // VK_EXT_pageable_device_local_memory
1091     PFN_vkSetDeviceMemoryPriorityEXT                                      vkSetDeviceMemoryPriorityEXT;
1092 
1093     // VK_KHR_acceleration_structure
1094     PFN_vkCreateAccelerationStructureKHR                                  vkCreateAccelerationStructureKHR;
1095     PFN_vkDestroyAccelerationStructureKHR                                 vkDestroyAccelerationStructureKHR;
1096     PFN_vkCmdBuildAccelerationStructuresKHR                               vkCmdBuildAccelerationStructuresKHR;
1097     PFN_vkCmdBuildAccelerationStructuresIndirectKHR                       vkCmdBuildAccelerationStructuresIndirectKHR;
1098     PFN_vkBuildAccelerationStructuresKHR                                  vkBuildAccelerationStructuresKHR;
1099     PFN_vkCopyAccelerationStructureKHR                                    vkCopyAccelerationStructureKHR;
1100     PFN_vkCopyAccelerationStructureToMemoryKHR                            vkCopyAccelerationStructureToMemoryKHR;
1101     PFN_vkCopyMemoryToAccelerationStructureKHR                            vkCopyMemoryToAccelerationStructureKHR;
1102     PFN_vkWriteAccelerationStructuresPropertiesKHR                        vkWriteAccelerationStructuresPropertiesKHR;
1103     PFN_vkCmdCopyAccelerationStructureKHR                                 vkCmdCopyAccelerationStructureKHR;
1104     PFN_vkCmdCopyAccelerationStructureToMemoryKHR                         vkCmdCopyAccelerationStructureToMemoryKHR;
1105     PFN_vkCmdCopyMemoryToAccelerationStructureKHR                         vkCmdCopyMemoryToAccelerationStructureKHR;
1106     PFN_vkGetAccelerationStructureDeviceAddressKHR                        vkGetAccelerationStructureDeviceAddressKHR;
1107     PFN_vkCmdWriteAccelerationStructuresPropertiesKHR                     vkCmdWriteAccelerationStructuresPropertiesKHR;
1108     PFN_vkGetDeviceAccelerationStructureCompatibilityKHR                  vkGetDeviceAccelerationStructureCompatibilityKHR;
1109     PFN_vkGetAccelerationStructureBuildSizesKHR                           vkGetAccelerationStructureBuildSizesKHR;
1110 
1111     // VK_KHR_ray_tracing_pipeline
1112     PFN_vkCmdTraceRaysKHR                                                 vkCmdTraceRaysKHR;
1113     PFN_vkCreateRayTracingPipelinesKHR                                    vkCreateRayTracingPipelinesKHR;
1114     PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR                 vkGetRayTracingCaptureReplayShaderGroupHandlesKHR;
1115     PFN_vkCmdTraceRaysIndirectKHR                                         vkCmdTraceRaysIndirectKHR;
1116     PFN_vkGetRayTracingShaderGroupStackSizeKHR                            vkGetRayTracingShaderGroupStackSizeKHR;
1117     PFN_vkCmdSetRayTracingPipelineStackSizeKHR                            vkCmdSetRayTracingPipelineStackSizeKHR;
1118 
1119     // VK_KHR_get_physical_device_properties2
1120     alias vkGetPhysicalDeviceFeatures2KHR                                         = vkGetPhysicalDeviceFeatures2;
1121     alias vkGetPhysicalDeviceProperties2KHR                                       = vkGetPhysicalDeviceProperties2;
1122     alias vkGetPhysicalDeviceFormatProperties2KHR                                 = vkGetPhysicalDeviceFormatProperties2;
1123     alias vkGetPhysicalDeviceImageFormatProperties2KHR                            = vkGetPhysicalDeviceImageFormatProperties2;
1124     alias vkGetPhysicalDeviceQueueFamilyProperties2KHR                            = vkGetPhysicalDeviceQueueFamilyProperties2;
1125     alias vkGetPhysicalDeviceMemoryProperties2KHR                                 = vkGetPhysicalDeviceMemoryProperties2;
1126     alias vkGetPhysicalDeviceSparseImageFormatProperties2KHR                      = vkGetPhysicalDeviceSparseImageFormatProperties2;
1127 
1128     // VK_KHR_device_group
1129     alias vkGetDeviceGroupPeerMemoryFeaturesKHR                                   = vkGetDeviceGroupPeerMemoryFeatures;
1130     alias vkCmdSetDeviceMaskKHR                                                   = vkCmdSetDeviceMask;
1131     alias vkCmdDispatchBaseKHR                                                    = vkCmdDispatchBase;
1132 
1133     // VK_KHR_maintenance1
1134     alias vkTrimCommandPoolKHR                                                    = vkTrimCommandPool;
1135 
1136     // VK_KHR_device_group_creation
1137     alias vkEnumeratePhysicalDeviceGroupsKHR                                      = vkEnumeratePhysicalDeviceGroups;
1138 
1139     // VK_KHR_external_memory_capabilities
1140     alias vkGetPhysicalDeviceExternalBufferPropertiesKHR                          = vkGetPhysicalDeviceExternalBufferProperties;
1141 
1142     // VK_KHR_external_semaphore_capabilities
1143     alias vkGetPhysicalDeviceExternalSemaphorePropertiesKHR                       = vkGetPhysicalDeviceExternalSemaphoreProperties;
1144 
1145     // VK_KHR_descriptor_update_template
1146     alias vkCreateDescriptorUpdateTemplateKHR                                     = vkCreateDescriptorUpdateTemplate;
1147     alias vkDestroyDescriptorUpdateTemplateKHR                                    = vkDestroyDescriptorUpdateTemplate;
1148     alias vkUpdateDescriptorSetWithTemplateKHR                                    = vkUpdateDescriptorSetWithTemplate;
1149 
1150     // VK_KHR_create_renderpass2
1151     alias vkCreateRenderPass2KHR                                                  = vkCreateRenderPass2;
1152     alias vkCmdBeginRenderPass2KHR                                                = vkCmdBeginRenderPass2;
1153     alias vkCmdNextSubpass2KHR                                                    = vkCmdNextSubpass2;
1154     alias vkCmdEndRenderPass2KHR                                                  = vkCmdEndRenderPass2;
1155 
1156     // VK_KHR_external_fence_capabilities
1157     alias vkGetPhysicalDeviceExternalFencePropertiesKHR                           = vkGetPhysicalDeviceExternalFenceProperties;
1158 
1159     // VK_KHR_get_memory_requirements2
1160     alias vkGetImageMemoryRequirements2KHR                                        = vkGetImageMemoryRequirements2;
1161     alias vkGetBufferMemoryRequirements2KHR                                       = vkGetBufferMemoryRequirements2;
1162     alias vkGetImageSparseMemoryRequirements2KHR                                  = vkGetImageSparseMemoryRequirements2;
1163 
1164     // VK_KHR_sampler_ycbcr_conversion
1165     alias vkCreateSamplerYcbcrConversionKHR                                       = vkCreateSamplerYcbcrConversion;
1166     alias vkDestroySamplerYcbcrConversionKHR                                      = vkDestroySamplerYcbcrConversion;
1167 
1168     // VK_KHR_bind_memory2
1169     alias vkBindBufferMemory2KHR                                                  = vkBindBufferMemory2;
1170     alias vkBindImageMemory2KHR                                                   = vkBindImageMemory2;
1171 
1172     // VK_KHR_maintenance3
1173     alias vkGetDescriptorSetLayoutSupportKHR                                      = vkGetDescriptorSetLayoutSupport;
1174 
1175     // VK_KHR_draw_indirect_count
1176     alias vkCmdDrawIndirectCountKHR                                               = vkCmdDrawIndirectCount;
1177     alias vkCmdDrawIndexedIndirectCountKHR                                        = vkCmdDrawIndexedIndirectCount;
1178 
1179     // VK_KHR_timeline_semaphore
1180     alias vkGetSemaphoreCounterValueKHR                                           = vkGetSemaphoreCounterValue;
1181     alias vkWaitSemaphoresKHR                                                     = vkWaitSemaphores;
1182     alias vkSignalSemaphoreKHR                                                    = vkSignalSemaphore;
1183 
1184     // VK_KHR_buffer_device_address
1185     alias vkGetBufferDeviceAddressKHR                                             = vkGetBufferDeviceAddress;
1186     alias vkGetBufferOpaqueCaptureAddressKHR                                      = vkGetBufferOpaqueCaptureAddress;
1187     alias vkGetDeviceMemoryOpaqueCaptureAddressKHR                                = vkGetDeviceMemoryOpaqueCaptureAddress;
1188 
1189     // VK_AMD_draw_indirect_count
1190     alias vkCmdDrawIndirectCountAMD                                               = vkCmdDrawIndirectCount;
1191     alias vkCmdDrawIndexedIndirectCountAMD                                        = vkCmdDrawIndexedIndirectCount;
1192 
1193     // VK_NV_ray_tracing
1194     alias vkGetRayTracingShaderGroupHandlesNV                                     = vkGetRayTracingShaderGroupHandlesKHR;
1195 
1196     // VK_EXT_buffer_device_address
1197     alias vkGetBufferDeviceAddressEXT                                             = vkGetBufferDeviceAddress;
1198 
1199     // VK_EXT_host_query_reset
1200     alias vkResetQueryPoolEXT                                                     = vkResetQueryPool;
1201 }
1202 
1203 
1204 /// sets vkCreateInstance function pointer and acquires basic functions to retrieve information about the implementation
1205 /// and create an instance: vkEnumerateInstanceExtensionProperties, vkEnumerateInstanceLayerProperties, vkCreateInstance
1206 void loadGlobalLevelFunctions( PFN_vkGetInstanceProcAddr getInstanceProcAddr ) {
1207     vkGetInstanceProcAddr = getInstanceProcAddr;
1208 
1209     // VK_VERSION_1_0
1210     vkCreateInstance                       = cast( PFN_vkCreateInstance                       ) vkGetInstanceProcAddr( null, "vkCreateInstance" );
1211     vkEnumerateInstanceExtensionProperties = cast( PFN_vkEnumerateInstanceExtensionProperties ) vkGetInstanceProcAddr( null, "vkEnumerateInstanceExtensionProperties" );
1212     vkEnumerateInstanceLayerProperties     = cast( PFN_vkEnumerateInstanceLayerProperties     ) vkGetInstanceProcAddr( null, "vkEnumerateInstanceLayerProperties" );
1213 
1214     // VK_VERSION_1_1
1215     vkEnumerateInstanceVersion             = cast( PFN_vkEnumerateInstanceVersion             ) vkGetInstanceProcAddr( null, "vkEnumerateInstanceVersion" );
1216 }
1217 
1218 
1219 /// with a valid VkInstance call this function to retrieve additional VkInstance, VkPhysicalDevice, ... related functions
1220 void loadInstanceLevelFunctions( VkInstance instance ) {
1221     assert( vkGetInstanceProcAddr !is null, "Function pointer vkGetInstanceProcAddr is null!\nCall loadGlobalLevelFunctions -> loadInstanceLevelFunctions" );
1222 
1223     // VK_VERSION_1_0
1224     vkDestroyInstance                                                 = cast( PFN_vkDestroyInstance                                                 ) vkGetInstanceProcAddr( instance, "vkDestroyInstance" );
1225     vkEnumeratePhysicalDevices                                        = cast( PFN_vkEnumeratePhysicalDevices                                        ) vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDevices" );
1226     vkGetPhysicalDeviceFeatures                                       = cast( PFN_vkGetPhysicalDeviceFeatures                                       ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures" );
1227     vkGetPhysicalDeviceFormatProperties                               = cast( PFN_vkGetPhysicalDeviceFormatProperties                               ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties" );
1228     vkGetPhysicalDeviceImageFormatProperties                          = cast( PFN_vkGetPhysicalDeviceImageFormatProperties                          ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties" );
1229     vkGetPhysicalDeviceProperties                                     = cast( PFN_vkGetPhysicalDeviceProperties                                     ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties" );
1230     vkGetPhysicalDeviceQueueFamilyProperties                          = cast( PFN_vkGetPhysicalDeviceQueueFamilyProperties                          ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties" );
1231     vkGetPhysicalDeviceMemoryProperties                               = cast( PFN_vkGetPhysicalDeviceMemoryProperties                               ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties" );
1232     vkGetDeviceProcAddr                                               = cast( PFN_vkGetDeviceProcAddr                                               ) vkGetInstanceProcAddr( instance, "vkGetDeviceProcAddr" );
1233     vkCreateDevice                                                    = cast( PFN_vkCreateDevice                                                    ) vkGetInstanceProcAddr( instance, "vkCreateDevice" );
1234     vkEnumerateDeviceExtensionProperties                              = cast( PFN_vkEnumerateDeviceExtensionProperties                              ) vkGetInstanceProcAddr( instance, "vkEnumerateDeviceExtensionProperties" );
1235     vkEnumerateDeviceLayerProperties                                  = cast( PFN_vkEnumerateDeviceLayerProperties                                  ) vkGetInstanceProcAddr( instance, "vkEnumerateDeviceLayerProperties" );
1236     vkGetPhysicalDeviceSparseImageFormatProperties                    = cast( PFN_vkGetPhysicalDeviceSparseImageFormatProperties                    ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties" );
1237 
1238     // VK_VERSION_1_1
1239     vkEnumeratePhysicalDeviceGroups                                   = cast( PFN_vkEnumeratePhysicalDeviceGroups                                   ) vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceGroups" );
1240     vkGetPhysicalDeviceFeatures2                                      = cast( PFN_vkGetPhysicalDeviceFeatures2                                      ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures2" );
1241     vkGetPhysicalDeviceProperties2                                    = cast( PFN_vkGetPhysicalDeviceProperties2                                    ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties2" );
1242     vkGetPhysicalDeviceFormatProperties2                              = cast( PFN_vkGetPhysicalDeviceFormatProperties2                              ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties2" );
1243     vkGetPhysicalDeviceImageFormatProperties2                         = cast( PFN_vkGetPhysicalDeviceImageFormatProperties2                         ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties2" );
1244     vkGetPhysicalDeviceQueueFamilyProperties2                         = cast( PFN_vkGetPhysicalDeviceQueueFamilyProperties2                         ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties2" );
1245     vkGetPhysicalDeviceMemoryProperties2                              = cast( PFN_vkGetPhysicalDeviceMemoryProperties2                              ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties2" );
1246     vkGetPhysicalDeviceSparseImageFormatProperties2                   = cast( PFN_vkGetPhysicalDeviceSparseImageFormatProperties2                   ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties2" );
1247     vkGetPhysicalDeviceExternalBufferProperties                       = cast( PFN_vkGetPhysicalDeviceExternalBufferProperties                       ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalBufferProperties" );
1248     vkGetPhysicalDeviceExternalFenceProperties                        = cast( PFN_vkGetPhysicalDeviceExternalFenceProperties                        ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalFenceProperties" );
1249     vkGetPhysicalDeviceExternalSemaphoreProperties                    = cast( PFN_vkGetPhysicalDeviceExternalSemaphoreProperties                    ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalSemaphoreProperties" );
1250 
1251     // VK_KHR_surface
1252     vkDestroySurfaceKHR                                               = cast( PFN_vkDestroySurfaceKHR                                               ) vkGetInstanceProcAddr( instance, "vkDestroySurfaceKHR" );
1253     vkGetPhysicalDeviceSurfaceSupportKHR                              = cast( PFN_vkGetPhysicalDeviceSurfaceSupportKHR                              ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceSupportKHR" );
1254     vkGetPhysicalDeviceSurfaceCapabilitiesKHR                         = cast( PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR                         ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" );
1255     vkGetPhysicalDeviceSurfaceFormatsKHR                              = cast( PFN_vkGetPhysicalDeviceSurfaceFormatsKHR                              ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormatsKHR" );
1256     vkGetPhysicalDeviceSurfacePresentModesKHR                         = cast( PFN_vkGetPhysicalDeviceSurfacePresentModesKHR                         ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfacePresentModesKHR" );
1257 
1258     // VK_KHR_swapchain
1259     vkGetPhysicalDevicePresentRectanglesKHR                           = cast( PFN_vkGetPhysicalDevicePresentRectanglesKHR                           ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDevicePresentRectanglesKHR" );
1260 
1261     // VK_KHR_display
1262     vkGetPhysicalDeviceDisplayPropertiesKHR                           = cast( PFN_vkGetPhysicalDeviceDisplayPropertiesKHR                           ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPropertiesKHR" );
1263     vkGetPhysicalDeviceDisplayPlanePropertiesKHR                      = cast( PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR                      ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR" );
1264     vkGetDisplayPlaneSupportedDisplaysKHR                             = cast( PFN_vkGetDisplayPlaneSupportedDisplaysKHR                             ) vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneSupportedDisplaysKHR" );
1265     vkGetDisplayModePropertiesKHR                                     = cast( PFN_vkGetDisplayModePropertiesKHR                                     ) vkGetInstanceProcAddr( instance, "vkGetDisplayModePropertiesKHR" );
1266     vkCreateDisplayModeKHR                                            = cast( PFN_vkCreateDisplayModeKHR                                            ) vkGetInstanceProcAddr( instance, "vkCreateDisplayModeKHR" );
1267     vkGetDisplayPlaneCapabilitiesKHR                                  = cast( PFN_vkGetDisplayPlaneCapabilitiesKHR                                  ) vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilitiesKHR" );
1268     vkCreateDisplayPlaneSurfaceKHR                                    = cast( PFN_vkCreateDisplayPlaneSurfaceKHR                                    ) vkGetInstanceProcAddr( instance, "vkCreateDisplayPlaneSurfaceKHR" );
1269 
1270     // VK_KHR_performance_query
1271     vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR   = cast( PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR   ) vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR" );
1272     vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR           = cast( PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR           ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR" );
1273 
1274     // VK_KHR_get_surface_capabilities2
1275     vkGetPhysicalDeviceSurfaceCapabilities2KHR                        = cast( PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR                        ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR" );
1276     vkGetPhysicalDeviceSurfaceFormats2KHR                             = cast( PFN_vkGetPhysicalDeviceSurfaceFormats2KHR                             ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormats2KHR" );
1277 
1278     // VK_KHR_get_display_properties2
1279     vkGetPhysicalDeviceDisplayProperties2KHR                          = cast( PFN_vkGetPhysicalDeviceDisplayProperties2KHR                          ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayProperties2KHR" );
1280     vkGetPhysicalDeviceDisplayPlaneProperties2KHR                     = cast( PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR                     ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR" );
1281     vkGetDisplayModeProperties2KHR                                    = cast( PFN_vkGetDisplayModeProperties2KHR                                    ) vkGetInstanceProcAddr( instance, "vkGetDisplayModeProperties2KHR" );
1282     vkGetDisplayPlaneCapabilities2KHR                                 = cast( PFN_vkGetDisplayPlaneCapabilities2KHR                                 ) vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilities2KHR" );
1283 
1284     // VK_KHR_fragment_shading_rate
1285     vkGetPhysicalDeviceFragmentShadingRatesKHR                        = cast( PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR                        ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFragmentShadingRatesKHR" );
1286 
1287     // VK_EXT_debug_report
1288     vkCreateDebugReportCallbackEXT                                    = cast( PFN_vkCreateDebugReportCallbackEXT                                    ) vkGetInstanceProcAddr( instance, "vkCreateDebugReportCallbackEXT" );
1289     vkDestroyDebugReportCallbackEXT                                   = cast( PFN_vkDestroyDebugReportCallbackEXT                                   ) vkGetInstanceProcAddr( instance, "vkDestroyDebugReportCallbackEXT" );
1290     vkDebugReportMessageEXT                                           = cast( PFN_vkDebugReportMessageEXT                                           ) vkGetInstanceProcAddr( instance, "vkDebugReportMessageEXT" );
1291 
1292     // VK_NV_external_memory_capabilities
1293     vkGetPhysicalDeviceExternalImageFormatPropertiesNV                = cast( PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV                ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV" );
1294 
1295     // VK_EXT_direct_mode_display
1296     vkReleaseDisplayEXT                                               = cast( PFN_vkReleaseDisplayEXT                                               ) vkGetInstanceProcAddr( instance, "vkReleaseDisplayEXT" );
1297 
1298     // VK_EXT_display_surface_counter
1299     vkGetPhysicalDeviceSurfaceCapabilities2EXT                        = cast( PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT                        ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2EXT" );
1300 
1301     // VK_EXT_debug_utils
1302     vkCreateDebugUtilsMessengerEXT                                    = cast( PFN_vkCreateDebugUtilsMessengerEXT                                    ) vkGetInstanceProcAddr( instance, "vkCreateDebugUtilsMessengerEXT" );
1303     vkDestroyDebugUtilsMessengerEXT                                   = cast( PFN_vkDestroyDebugUtilsMessengerEXT                                   ) vkGetInstanceProcAddr( instance, "vkDestroyDebugUtilsMessengerEXT" );
1304     vkSubmitDebugUtilsMessageEXT                                      = cast( PFN_vkSubmitDebugUtilsMessageEXT                                      ) vkGetInstanceProcAddr( instance, "vkSubmitDebugUtilsMessageEXT" );
1305 
1306     // VK_EXT_sample_locations
1307     vkGetPhysicalDeviceMultisamplePropertiesEXT                       = cast( PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT                       ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMultisamplePropertiesEXT" );
1308 
1309     // VK_EXT_calibrated_timestamps
1310     vkGetPhysicalDeviceCalibrateableTimeDomainsEXT                    = cast( PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT                    ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT" );
1311 
1312     // VK_EXT_tooling_info
1313     vkGetPhysicalDeviceToolPropertiesEXT                              = cast( PFN_vkGetPhysicalDeviceToolPropertiesEXT                              ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceToolPropertiesEXT" );
1314 
1315     // VK_NV_cooperative_matrix
1316     vkGetPhysicalDeviceCooperativeMatrixPropertiesNV                  = cast( PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV                  ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV" );
1317 
1318     // VK_NV_coverage_reduction_mode
1319     vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = cast( PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV" );
1320 
1321     // VK_EXT_headless_surface
1322     vkCreateHeadlessSurfaceEXT                                        = cast( PFN_vkCreateHeadlessSurfaceEXT                                        ) vkGetInstanceProcAddr( instance, "vkCreateHeadlessSurfaceEXT" );
1323 
1324     // VK_EXT_acquire_drm_display
1325     vkAcquireDrmDisplayEXT                                            = cast( PFN_vkAcquireDrmDisplayEXT                                            ) vkGetInstanceProcAddr( instance, "vkAcquireDrmDisplayEXT" );
1326     vkGetDrmDisplayEXT                                                = cast( PFN_vkGetDrmDisplayEXT                                                ) vkGetInstanceProcAddr( instance, "vkGetDrmDisplayEXT" );
1327 }
1328 
1329 
1330 /// with a valid VkInstance call this function to retrieve VkDevice, VkQueue and VkCommandBuffer related functions
1331 /// the functions call indirectly through the VkInstance and will be internally dispatched by the implementation
1332 /// use loadDeviceLevelFunctions( VkDevice device ) bellow to avoid this indirection and get the pointers directly form a VkDevice
1333 void loadDeviceLevelFunctions( VkInstance instance ) {
1334     assert( vkGetInstanceProcAddr !is null, "Function pointer vkGetInstanceProcAddr is null!\nCall loadGlobalLevelFunctions -> loadDeviceLevelFunctions( instance )" );
1335 
1336     // VK_VERSION_1_0
1337     vkDestroyDevice                                   = cast( PFN_vkDestroyDevice                                   ) vkGetInstanceProcAddr( instance, "vkDestroyDevice" );
1338     vkGetDeviceQueue                                  = cast( PFN_vkGetDeviceQueue                                  ) vkGetInstanceProcAddr( instance, "vkGetDeviceQueue" );
1339     vkQueueSubmit                                     = cast( PFN_vkQueueSubmit                                     ) vkGetInstanceProcAddr( instance, "vkQueueSubmit" );
1340     vkQueueWaitIdle                                   = cast( PFN_vkQueueWaitIdle                                   ) vkGetInstanceProcAddr( instance, "vkQueueWaitIdle" );
1341     vkDeviceWaitIdle                                  = cast( PFN_vkDeviceWaitIdle                                  ) vkGetInstanceProcAddr( instance, "vkDeviceWaitIdle" );
1342     vkAllocateMemory                                  = cast( PFN_vkAllocateMemory                                  ) vkGetInstanceProcAddr( instance, "vkAllocateMemory" );
1343     vkFreeMemory                                      = cast( PFN_vkFreeMemory                                      ) vkGetInstanceProcAddr( instance, "vkFreeMemory" );
1344     vkMapMemory                                       = cast( PFN_vkMapMemory                                       ) vkGetInstanceProcAddr( instance, "vkMapMemory" );
1345     vkUnmapMemory                                     = cast( PFN_vkUnmapMemory                                     ) vkGetInstanceProcAddr( instance, "vkUnmapMemory" );
1346     vkFlushMappedMemoryRanges                         = cast( PFN_vkFlushMappedMemoryRanges                         ) vkGetInstanceProcAddr( instance, "vkFlushMappedMemoryRanges" );
1347     vkInvalidateMappedMemoryRanges                    = cast( PFN_vkInvalidateMappedMemoryRanges                    ) vkGetInstanceProcAddr( instance, "vkInvalidateMappedMemoryRanges" );
1348     vkGetDeviceMemoryCommitment                       = cast( PFN_vkGetDeviceMemoryCommitment                       ) vkGetInstanceProcAddr( instance, "vkGetDeviceMemoryCommitment" );
1349     vkBindBufferMemory                                = cast( PFN_vkBindBufferMemory                                ) vkGetInstanceProcAddr( instance, "vkBindBufferMemory" );
1350     vkBindImageMemory                                 = cast( PFN_vkBindImageMemory                                 ) vkGetInstanceProcAddr( instance, "vkBindImageMemory" );
1351     vkGetBufferMemoryRequirements                     = cast( PFN_vkGetBufferMemoryRequirements                     ) vkGetInstanceProcAddr( instance, "vkGetBufferMemoryRequirements" );
1352     vkGetImageMemoryRequirements                      = cast( PFN_vkGetImageMemoryRequirements                      ) vkGetInstanceProcAddr( instance, "vkGetImageMemoryRequirements" );
1353     vkGetImageSparseMemoryRequirements                = cast( PFN_vkGetImageSparseMemoryRequirements                ) vkGetInstanceProcAddr( instance, "vkGetImageSparseMemoryRequirements" );
1354     vkQueueBindSparse                                 = cast( PFN_vkQueueBindSparse                                 ) vkGetInstanceProcAddr( instance, "vkQueueBindSparse" );
1355     vkCreateFence                                     = cast( PFN_vkCreateFence                                     ) vkGetInstanceProcAddr( instance, "vkCreateFence" );
1356     vkDestroyFence                                    = cast( PFN_vkDestroyFence                                    ) vkGetInstanceProcAddr( instance, "vkDestroyFence" );
1357     vkResetFences                                     = cast( PFN_vkResetFences                                     ) vkGetInstanceProcAddr( instance, "vkResetFences" );
1358     vkGetFenceStatus                                  = cast( PFN_vkGetFenceStatus                                  ) vkGetInstanceProcAddr( instance, "vkGetFenceStatus" );
1359     vkWaitForFences                                   = cast( PFN_vkWaitForFences                                   ) vkGetInstanceProcAddr( instance, "vkWaitForFences" );
1360     vkCreateSemaphore                                 = cast( PFN_vkCreateSemaphore                                 ) vkGetInstanceProcAddr( instance, "vkCreateSemaphore" );
1361     vkDestroySemaphore                                = cast( PFN_vkDestroySemaphore                                ) vkGetInstanceProcAddr( instance, "vkDestroySemaphore" );
1362     vkCreateEvent                                     = cast( PFN_vkCreateEvent                                     ) vkGetInstanceProcAddr( instance, "vkCreateEvent" );
1363     vkDestroyEvent                                    = cast( PFN_vkDestroyEvent                                    ) vkGetInstanceProcAddr( instance, "vkDestroyEvent" );
1364     vkGetEventStatus                                  = cast( PFN_vkGetEventStatus                                  ) vkGetInstanceProcAddr( instance, "vkGetEventStatus" );
1365     vkSetEvent                                        = cast( PFN_vkSetEvent                                        ) vkGetInstanceProcAddr( instance, "vkSetEvent" );
1366     vkResetEvent                                      = cast( PFN_vkResetEvent                                      ) vkGetInstanceProcAddr( instance, "vkResetEvent" );
1367     vkCreateQueryPool                                 = cast( PFN_vkCreateQueryPool                                 ) vkGetInstanceProcAddr( instance, "vkCreateQueryPool" );
1368     vkDestroyQueryPool                                = cast( PFN_vkDestroyQueryPool                                ) vkGetInstanceProcAddr( instance, "vkDestroyQueryPool" );
1369     vkGetQueryPoolResults                             = cast( PFN_vkGetQueryPoolResults                             ) vkGetInstanceProcAddr( instance, "vkGetQueryPoolResults" );
1370     vkCreateBuffer                                    = cast( PFN_vkCreateBuffer                                    ) vkGetInstanceProcAddr( instance, "vkCreateBuffer" );
1371     vkDestroyBuffer                                   = cast( PFN_vkDestroyBuffer                                   ) vkGetInstanceProcAddr( instance, "vkDestroyBuffer" );
1372     vkCreateBufferView                                = cast( PFN_vkCreateBufferView                                ) vkGetInstanceProcAddr( instance, "vkCreateBufferView" );
1373     vkDestroyBufferView                               = cast( PFN_vkDestroyBufferView                               ) vkGetInstanceProcAddr( instance, "vkDestroyBufferView" );
1374     vkCreateImage                                     = cast( PFN_vkCreateImage                                     ) vkGetInstanceProcAddr( instance, "vkCreateImage" );
1375     vkDestroyImage                                    = cast( PFN_vkDestroyImage                                    ) vkGetInstanceProcAddr( instance, "vkDestroyImage" );
1376     vkGetImageSubresourceLayout                       = cast( PFN_vkGetImageSubresourceLayout                       ) vkGetInstanceProcAddr( instance, "vkGetImageSubresourceLayout" );
1377     vkCreateImageView                                 = cast( PFN_vkCreateImageView                                 ) vkGetInstanceProcAddr( instance, "vkCreateImageView" );
1378     vkDestroyImageView                                = cast( PFN_vkDestroyImageView                                ) vkGetInstanceProcAddr( instance, "vkDestroyImageView" );
1379     vkCreateShaderModule                              = cast( PFN_vkCreateShaderModule                              ) vkGetInstanceProcAddr( instance, "vkCreateShaderModule" );
1380     vkDestroyShaderModule                             = cast( PFN_vkDestroyShaderModule                             ) vkGetInstanceProcAddr( instance, "vkDestroyShaderModule" );
1381     vkCreatePipelineCache                             = cast( PFN_vkCreatePipelineCache                             ) vkGetInstanceProcAddr( instance, "vkCreatePipelineCache" );
1382     vkDestroyPipelineCache                            = cast( PFN_vkDestroyPipelineCache                            ) vkGetInstanceProcAddr( instance, "vkDestroyPipelineCache" );
1383     vkGetPipelineCacheData                            = cast( PFN_vkGetPipelineCacheData                            ) vkGetInstanceProcAddr( instance, "vkGetPipelineCacheData" );
1384     vkMergePipelineCaches                             = cast( PFN_vkMergePipelineCaches                             ) vkGetInstanceProcAddr( instance, "vkMergePipelineCaches" );
1385     vkCreateGraphicsPipelines                         = cast( PFN_vkCreateGraphicsPipelines                         ) vkGetInstanceProcAddr( instance, "vkCreateGraphicsPipelines" );
1386     vkCreateComputePipelines                          = cast( PFN_vkCreateComputePipelines                          ) vkGetInstanceProcAddr( instance, "vkCreateComputePipelines" );
1387     vkDestroyPipeline                                 = cast( PFN_vkDestroyPipeline                                 ) vkGetInstanceProcAddr( instance, "vkDestroyPipeline" );
1388     vkCreatePipelineLayout                            = cast( PFN_vkCreatePipelineLayout                            ) vkGetInstanceProcAddr( instance, "vkCreatePipelineLayout" );
1389     vkDestroyPipelineLayout                           = cast( PFN_vkDestroyPipelineLayout                           ) vkGetInstanceProcAddr( instance, "vkDestroyPipelineLayout" );
1390     vkCreateSampler                                   = cast( PFN_vkCreateSampler                                   ) vkGetInstanceProcAddr( instance, "vkCreateSampler" );
1391     vkDestroySampler                                  = cast( PFN_vkDestroySampler                                  ) vkGetInstanceProcAddr( instance, "vkDestroySampler" );
1392     vkCreateDescriptorSetLayout                       = cast( PFN_vkCreateDescriptorSetLayout                       ) vkGetInstanceProcAddr( instance, "vkCreateDescriptorSetLayout" );
1393     vkDestroyDescriptorSetLayout                      = cast( PFN_vkDestroyDescriptorSetLayout                      ) vkGetInstanceProcAddr( instance, "vkDestroyDescriptorSetLayout" );
1394     vkCreateDescriptorPool                            = cast( PFN_vkCreateDescriptorPool                            ) vkGetInstanceProcAddr( instance, "vkCreateDescriptorPool" );
1395     vkDestroyDescriptorPool                           = cast( PFN_vkDestroyDescriptorPool                           ) vkGetInstanceProcAddr( instance, "vkDestroyDescriptorPool" );
1396     vkResetDescriptorPool                             = cast( PFN_vkResetDescriptorPool                             ) vkGetInstanceProcAddr( instance, "vkResetDescriptorPool" );
1397     vkAllocateDescriptorSets                          = cast( PFN_vkAllocateDescriptorSets                          ) vkGetInstanceProcAddr( instance, "vkAllocateDescriptorSets" );
1398     vkFreeDescriptorSets                              = cast( PFN_vkFreeDescriptorSets                              ) vkGetInstanceProcAddr( instance, "vkFreeDescriptorSets" );
1399     vkUpdateDescriptorSets                            = cast( PFN_vkUpdateDescriptorSets                            ) vkGetInstanceProcAddr( instance, "vkUpdateDescriptorSets" );
1400     vkCreateFramebuffer                               = cast( PFN_vkCreateFramebuffer                               ) vkGetInstanceProcAddr( instance, "vkCreateFramebuffer" );
1401     vkDestroyFramebuffer                              = cast( PFN_vkDestroyFramebuffer                              ) vkGetInstanceProcAddr( instance, "vkDestroyFramebuffer" );
1402     vkCreateRenderPass                                = cast( PFN_vkCreateRenderPass                                ) vkGetInstanceProcAddr( instance, "vkCreateRenderPass" );
1403     vkDestroyRenderPass                               = cast( PFN_vkDestroyRenderPass                               ) vkGetInstanceProcAddr( instance, "vkDestroyRenderPass" );
1404     vkGetRenderAreaGranularity                        = cast( PFN_vkGetRenderAreaGranularity                        ) vkGetInstanceProcAddr( instance, "vkGetRenderAreaGranularity" );
1405     vkCreateCommandPool                               = cast( PFN_vkCreateCommandPool                               ) vkGetInstanceProcAddr( instance, "vkCreateCommandPool" );
1406     vkDestroyCommandPool                              = cast( PFN_vkDestroyCommandPool                              ) vkGetInstanceProcAddr( instance, "vkDestroyCommandPool" );
1407     vkResetCommandPool                                = cast( PFN_vkResetCommandPool                                ) vkGetInstanceProcAddr( instance, "vkResetCommandPool" );
1408     vkAllocateCommandBuffers                          = cast( PFN_vkAllocateCommandBuffers                          ) vkGetInstanceProcAddr( instance, "vkAllocateCommandBuffers" );
1409     vkFreeCommandBuffers                              = cast( PFN_vkFreeCommandBuffers                              ) vkGetInstanceProcAddr( instance, "vkFreeCommandBuffers" );
1410     vkBeginCommandBuffer                              = cast( PFN_vkBeginCommandBuffer                              ) vkGetInstanceProcAddr( instance, "vkBeginCommandBuffer" );
1411     vkEndCommandBuffer                                = cast( PFN_vkEndCommandBuffer                                ) vkGetInstanceProcAddr( instance, "vkEndCommandBuffer" );
1412     vkResetCommandBuffer                              = cast( PFN_vkResetCommandBuffer                              ) vkGetInstanceProcAddr( instance, "vkResetCommandBuffer" );
1413     vkCmdBindPipeline                                 = cast( PFN_vkCmdBindPipeline                                 ) vkGetInstanceProcAddr( instance, "vkCmdBindPipeline" );
1414     vkCmdSetViewport                                  = cast( PFN_vkCmdSetViewport                                  ) vkGetInstanceProcAddr( instance, "vkCmdSetViewport" );
1415     vkCmdSetScissor                                   = cast( PFN_vkCmdSetScissor                                   ) vkGetInstanceProcAddr( instance, "vkCmdSetScissor" );
1416     vkCmdSetLineWidth                                 = cast( PFN_vkCmdSetLineWidth                                 ) vkGetInstanceProcAddr( instance, "vkCmdSetLineWidth" );
1417     vkCmdSetDepthBias                                 = cast( PFN_vkCmdSetDepthBias                                 ) vkGetInstanceProcAddr( instance, "vkCmdSetDepthBias" );
1418     vkCmdSetBlendConstants                            = cast( PFN_vkCmdSetBlendConstants                            ) vkGetInstanceProcAddr( instance, "vkCmdSetBlendConstants" );
1419     vkCmdSetDepthBounds                               = cast( PFN_vkCmdSetDepthBounds                               ) vkGetInstanceProcAddr( instance, "vkCmdSetDepthBounds" );
1420     vkCmdSetStencilCompareMask                        = cast( PFN_vkCmdSetStencilCompareMask                        ) vkGetInstanceProcAddr( instance, "vkCmdSetStencilCompareMask" );
1421     vkCmdSetStencilWriteMask                          = cast( PFN_vkCmdSetStencilWriteMask                          ) vkGetInstanceProcAddr( instance, "vkCmdSetStencilWriteMask" );
1422     vkCmdSetStencilReference                          = cast( PFN_vkCmdSetStencilReference                          ) vkGetInstanceProcAddr( instance, "vkCmdSetStencilReference" );
1423     vkCmdBindDescriptorSets                           = cast( PFN_vkCmdBindDescriptorSets                           ) vkGetInstanceProcAddr( instance, "vkCmdBindDescriptorSets" );
1424     vkCmdBindIndexBuffer                              = cast( PFN_vkCmdBindIndexBuffer                              ) vkGetInstanceProcAddr( instance, "vkCmdBindIndexBuffer" );
1425     vkCmdBindVertexBuffers                            = cast( PFN_vkCmdBindVertexBuffers                            ) vkGetInstanceProcAddr( instance, "vkCmdBindVertexBuffers" );
1426     vkCmdDraw                                         = cast( PFN_vkCmdDraw                                         ) vkGetInstanceProcAddr( instance, "vkCmdDraw" );
1427     vkCmdDrawIndexed                                  = cast( PFN_vkCmdDrawIndexed                                  ) vkGetInstanceProcAddr( instance, "vkCmdDrawIndexed" );
1428     vkCmdDrawIndirect                                 = cast( PFN_vkCmdDrawIndirect                                 ) vkGetInstanceProcAddr( instance, "vkCmdDrawIndirect" );
1429     vkCmdDrawIndexedIndirect                          = cast( PFN_vkCmdDrawIndexedIndirect                          ) vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirect" );
1430     vkCmdDispatch                                     = cast( PFN_vkCmdDispatch                                     ) vkGetInstanceProcAddr( instance, "vkCmdDispatch" );
1431     vkCmdDispatchIndirect                             = cast( PFN_vkCmdDispatchIndirect                             ) vkGetInstanceProcAddr( instance, "vkCmdDispatchIndirect" );
1432     vkCmdCopyBuffer                                   = cast( PFN_vkCmdCopyBuffer                                   ) vkGetInstanceProcAddr( instance, "vkCmdCopyBuffer" );
1433     vkCmdCopyImage                                    = cast( PFN_vkCmdCopyImage                                    ) vkGetInstanceProcAddr( instance, "vkCmdCopyImage" );
1434     vkCmdBlitImage                                    = cast( PFN_vkCmdBlitImage                                    ) vkGetInstanceProcAddr( instance, "vkCmdBlitImage" );
1435     vkCmdCopyBufferToImage                            = cast( PFN_vkCmdCopyBufferToImage                            ) vkGetInstanceProcAddr( instance, "vkCmdCopyBufferToImage" );
1436     vkCmdCopyImageToBuffer                            = cast( PFN_vkCmdCopyImageToBuffer                            ) vkGetInstanceProcAddr( instance, "vkCmdCopyImageToBuffer" );
1437     vkCmdUpdateBuffer                                 = cast( PFN_vkCmdUpdateBuffer                                 ) vkGetInstanceProcAddr( instance, "vkCmdUpdateBuffer" );
1438     vkCmdFillBuffer                                   = cast( PFN_vkCmdFillBuffer                                   ) vkGetInstanceProcAddr( instance, "vkCmdFillBuffer" );
1439     vkCmdClearColorImage                              = cast( PFN_vkCmdClearColorImage                              ) vkGetInstanceProcAddr( instance, "vkCmdClearColorImage" );
1440     vkCmdClearDepthStencilImage                       = cast( PFN_vkCmdClearDepthStencilImage                       ) vkGetInstanceProcAddr( instance, "vkCmdClearDepthStencilImage" );
1441     vkCmdClearAttachments                             = cast( PFN_vkCmdClearAttachments                             ) vkGetInstanceProcAddr( instance, "vkCmdClearAttachments" );
1442     vkCmdResolveImage                                 = cast( PFN_vkCmdResolveImage                                 ) vkGetInstanceProcAddr( instance, "vkCmdResolveImage" );
1443     vkCmdSetEvent                                     = cast( PFN_vkCmdSetEvent                                     ) vkGetInstanceProcAddr( instance, "vkCmdSetEvent" );
1444     vkCmdResetEvent                                   = cast( PFN_vkCmdResetEvent                                   ) vkGetInstanceProcAddr( instance, "vkCmdResetEvent" );
1445     vkCmdWaitEvents                                   = cast( PFN_vkCmdWaitEvents                                   ) vkGetInstanceProcAddr( instance, "vkCmdWaitEvents" );
1446     vkCmdPipelineBarrier                              = cast( PFN_vkCmdPipelineBarrier                              ) vkGetInstanceProcAddr( instance, "vkCmdPipelineBarrier" );
1447     vkCmdBeginQuery                                   = cast( PFN_vkCmdBeginQuery                                   ) vkGetInstanceProcAddr( instance, "vkCmdBeginQuery" );
1448     vkCmdEndQuery                                     = cast( PFN_vkCmdEndQuery                                     ) vkGetInstanceProcAddr( instance, "vkCmdEndQuery" );
1449     vkCmdResetQueryPool                               = cast( PFN_vkCmdResetQueryPool                               ) vkGetInstanceProcAddr( instance, "vkCmdResetQueryPool" );
1450     vkCmdWriteTimestamp                               = cast( PFN_vkCmdWriteTimestamp                               ) vkGetInstanceProcAddr( instance, "vkCmdWriteTimestamp" );
1451     vkCmdCopyQueryPoolResults                         = cast( PFN_vkCmdCopyQueryPoolResults                         ) vkGetInstanceProcAddr( instance, "vkCmdCopyQueryPoolResults" );
1452     vkCmdPushConstants                                = cast( PFN_vkCmdPushConstants                                ) vkGetInstanceProcAddr( instance, "vkCmdPushConstants" );
1453     vkCmdBeginRenderPass                              = cast( PFN_vkCmdBeginRenderPass                              ) vkGetInstanceProcAddr( instance, "vkCmdBeginRenderPass" );
1454     vkCmdNextSubpass                                  = cast( PFN_vkCmdNextSubpass                                  ) vkGetInstanceProcAddr( instance, "vkCmdNextSubpass" );
1455     vkCmdEndRenderPass                                = cast( PFN_vkCmdEndRenderPass                                ) vkGetInstanceProcAddr( instance, "vkCmdEndRenderPass" );
1456     vkCmdExecuteCommands                              = cast( PFN_vkCmdExecuteCommands                              ) vkGetInstanceProcAddr( instance, "vkCmdExecuteCommands" );
1457 
1458     // VK_VERSION_1_1
1459     vkBindBufferMemory2                               = cast( PFN_vkBindBufferMemory2                               ) vkGetInstanceProcAddr( instance, "vkBindBufferMemory2" );
1460     vkBindImageMemory2                                = cast( PFN_vkBindImageMemory2                                ) vkGetInstanceProcAddr( instance, "vkBindImageMemory2" );
1461     vkGetDeviceGroupPeerMemoryFeatures                = cast( PFN_vkGetDeviceGroupPeerMemoryFeatures                ) vkGetInstanceProcAddr( instance, "vkGetDeviceGroupPeerMemoryFeatures" );
1462     vkCmdSetDeviceMask                                = cast( PFN_vkCmdSetDeviceMask                                ) vkGetInstanceProcAddr( instance, "vkCmdSetDeviceMask" );
1463     vkCmdDispatchBase                                 = cast( PFN_vkCmdDispatchBase                                 ) vkGetInstanceProcAddr( instance, "vkCmdDispatchBase" );
1464     vkGetImageMemoryRequirements2                     = cast( PFN_vkGetImageMemoryRequirements2                     ) vkGetInstanceProcAddr( instance, "vkGetImageMemoryRequirements2" );
1465     vkGetBufferMemoryRequirements2                    = cast( PFN_vkGetBufferMemoryRequirements2                    ) vkGetInstanceProcAddr( instance, "vkGetBufferMemoryRequirements2" );
1466     vkGetImageSparseMemoryRequirements2               = cast( PFN_vkGetImageSparseMemoryRequirements2               ) vkGetInstanceProcAddr( instance, "vkGetImageSparseMemoryRequirements2" );
1467     vkTrimCommandPool                                 = cast( PFN_vkTrimCommandPool                                 ) vkGetInstanceProcAddr( instance, "vkTrimCommandPool" );
1468     vkGetDeviceQueue2                                 = cast( PFN_vkGetDeviceQueue2                                 ) vkGetInstanceProcAddr( instance, "vkGetDeviceQueue2" );
1469     vkCreateSamplerYcbcrConversion                    = cast( PFN_vkCreateSamplerYcbcrConversion                    ) vkGetInstanceProcAddr( instance, "vkCreateSamplerYcbcrConversion" );
1470     vkDestroySamplerYcbcrConversion                   = cast( PFN_vkDestroySamplerYcbcrConversion                   ) vkGetInstanceProcAddr( instance, "vkDestroySamplerYcbcrConversion" );
1471     vkCreateDescriptorUpdateTemplate                  = cast( PFN_vkCreateDescriptorUpdateTemplate                  ) vkGetInstanceProcAddr( instance, "vkCreateDescriptorUpdateTemplate" );
1472     vkDestroyDescriptorUpdateTemplate                 = cast( PFN_vkDestroyDescriptorUpdateTemplate                 ) vkGetInstanceProcAddr( instance, "vkDestroyDescriptorUpdateTemplate" );
1473     vkUpdateDescriptorSetWithTemplate                 = cast( PFN_vkUpdateDescriptorSetWithTemplate                 ) vkGetInstanceProcAddr( instance, "vkUpdateDescriptorSetWithTemplate" );
1474     vkGetDescriptorSetLayoutSupport                   = cast( PFN_vkGetDescriptorSetLayoutSupport                   ) vkGetInstanceProcAddr( instance, "vkGetDescriptorSetLayoutSupport" );
1475 
1476     // VK_VERSION_1_2
1477     vkCmdDrawIndirectCount                            = cast( PFN_vkCmdDrawIndirectCount                            ) vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectCount" );
1478     vkCmdDrawIndexedIndirectCount                     = cast( PFN_vkCmdDrawIndexedIndirectCount                     ) vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirectCount" );
1479     vkCreateRenderPass2                               = cast( PFN_vkCreateRenderPass2                               ) vkGetInstanceProcAddr( instance, "vkCreateRenderPass2" );
1480     vkCmdBeginRenderPass2                             = cast( PFN_vkCmdBeginRenderPass2                             ) vkGetInstanceProcAddr( instance, "vkCmdBeginRenderPass2" );
1481     vkCmdNextSubpass2                                 = cast( PFN_vkCmdNextSubpass2                                 ) vkGetInstanceProcAddr( instance, "vkCmdNextSubpass2" );
1482     vkCmdEndRenderPass2                               = cast( PFN_vkCmdEndRenderPass2                               ) vkGetInstanceProcAddr( instance, "vkCmdEndRenderPass2" );
1483     vkResetQueryPool                                  = cast( PFN_vkResetQueryPool                                  ) vkGetInstanceProcAddr( instance, "vkResetQueryPool" );
1484     vkGetSemaphoreCounterValue                        = cast( PFN_vkGetSemaphoreCounterValue                        ) vkGetInstanceProcAddr( instance, "vkGetSemaphoreCounterValue" );
1485     vkWaitSemaphores                                  = cast( PFN_vkWaitSemaphores                                  ) vkGetInstanceProcAddr( instance, "vkWaitSemaphores" );
1486     vkSignalSemaphore                                 = cast( PFN_vkSignalSemaphore                                 ) vkGetInstanceProcAddr( instance, "vkSignalSemaphore" );
1487     vkGetBufferDeviceAddress                          = cast( PFN_vkGetBufferDeviceAddress                          ) vkGetInstanceProcAddr( instance, "vkGetBufferDeviceAddress" );
1488     vkGetBufferOpaqueCaptureAddress                   = cast( PFN_vkGetBufferOpaqueCaptureAddress                   ) vkGetInstanceProcAddr( instance, "vkGetBufferOpaqueCaptureAddress" );
1489     vkGetDeviceMemoryOpaqueCaptureAddress             = cast( PFN_vkGetDeviceMemoryOpaqueCaptureAddress             ) vkGetInstanceProcAddr( instance, "vkGetDeviceMemoryOpaqueCaptureAddress" );
1490 
1491     // VK_KHR_swapchain
1492     vkCreateSwapchainKHR                              = cast( PFN_vkCreateSwapchainKHR                              ) vkGetInstanceProcAddr( instance, "vkCreateSwapchainKHR" );
1493     vkDestroySwapchainKHR                             = cast( PFN_vkDestroySwapchainKHR                             ) vkGetInstanceProcAddr( instance, "vkDestroySwapchainKHR" );
1494     vkGetSwapchainImagesKHR                           = cast( PFN_vkGetSwapchainImagesKHR                           ) vkGetInstanceProcAddr( instance, "vkGetSwapchainImagesKHR" );
1495     vkAcquireNextImageKHR                             = cast( PFN_vkAcquireNextImageKHR                             ) vkGetInstanceProcAddr( instance, "vkAcquireNextImageKHR" );
1496     vkQueuePresentKHR                                 = cast( PFN_vkQueuePresentKHR                                 ) vkGetInstanceProcAddr( instance, "vkQueuePresentKHR" );
1497     vkGetDeviceGroupPresentCapabilitiesKHR            = cast( PFN_vkGetDeviceGroupPresentCapabilitiesKHR            ) vkGetInstanceProcAddr( instance, "vkGetDeviceGroupPresentCapabilitiesKHR" );
1498     vkGetDeviceGroupSurfacePresentModesKHR            = cast( PFN_vkGetDeviceGroupSurfacePresentModesKHR            ) vkGetInstanceProcAddr( instance, "vkGetDeviceGroupSurfacePresentModesKHR" );
1499     vkAcquireNextImage2KHR                            = cast( PFN_vkAcquireNextImage2KHR                            ) vkGetInstanceProcAddr( instance, "vkAcquireNextImage2KHR" );
1500 
1501     // VK_KHR_display_swapchain
1502     vkCreateSharedSwapchainsKHR                       = cast( PFN_vkCreateSharedSwapchainsKHR                       ) vkGetInstanceProcAddr( instance, "vkCreateSharedSwapchainsKHR" );
1503 
1504     // VK_KHR_dynamic_rendering
1505     vkCmdBeginRenderingKHR                            = cast( PFN_vkCmdBeginRenderingKHR                            ) vkGetInstanceProcAddr( instance, "vkCmdBeginRenderingKHR" );
1506     vkCmdEndRenderingKHR                              = cast( PFN_vkCmdEndRenderingKHR                              ) vkGetInstanceProcAddr( instance, "vkCmdEndRenderingKHR" );
1507 
1508     // VK_KHR_external_memory_fd
1509     vkGetMemoryFdKHR                                  = cast( PFN_vkGetMemoryFdKHR                                  ) vkGetInstanceProcAddr( instance, "vkGetMemoryFdKHR" );
1510     vkGetMemoryFdPropertiesKHR                        = cast( PFN_vkGetMemoryFdPropertiesKHR                        ) vkGetInstanceProcAddr( instance, "vkGetMemoryFdPropertiesKHR" );
1511 
1512     // VK_KHR_external_semaphore_fd
1513     vkImportSemaphoreFdKHR                            = cast( PFN_vkImportSemaphoreFdKHR                            ) vkGetInstanceProcAddr( instance, "vkImportSemaphoreFdKHR" );
1514     vkGetSemaphoreFdKHR                               = cast( PFN_vkGetSemaphoreFdKHR                               ) vkGetInstanceProcAddr( instance, "vkGetSemaphoreFdKHR" );
1515 
1516     // VK_KHR_push_descriptor
1517     vkCmdPushDescriptorSetKHR                         = cast( PFN_vkCmdPushDescriptorSetKHR                         ) vkGetInstanceProcAddr( instance, "vkCmdPushDescriptorSetKHR" );
1518     vkCmdPushDescriptorSetWithTemplateKHR             = cast( PFN_vkCmdPushDescriptorSetWithTemplateKHR             ) vkGetInstanceProcAddr( instance, "vkCmdPushDescriptorSetWithTemplateKHR" );
1519 
1520     // VK_KHR_shared_presentable_image
1521     vkGetSwapchainStatusKHR                           = cast( PFN_vkGetSwapchainStatusKHR                           ) vkGetInstanceProcAddr( instance, "vkGetSwapchainStatusKHR" );
1522 
1523     // VK_KHR_external_fence_fd
1524     vkImportFenceFdKHR                                = cast( PFN_vkImportFenceFdKHR                                ) vkGetInstanceProcAddr( instance, "vkImportFenceFdKHR" );
1525     vkGetFenceFdKHR                                   = cast( PFN_vkGetFenceFdKHR                                   ) vkGetInstanceProcAddr( instance, "vkGetFenceFdKHR" );
1526 
1527     // VK_KHR_performance_query
1528     vkAcquireProfilingLockKHR                         = cast( PFN_vkAcquireProfilingLockKHR                         ) vkGetInstanceProcAddr( instance, "vkAcquireProfilingLockKHR" );
1529     vkReleaseProfilingLockKHR                         = cast( PFN_vkReleaseProfilingLockKHR                         ) vkGetInstanceProcAddr( instance, "vkReleaseProfilingLockKHR" );
1530 
1531     // VK_KHR_fragment_shading_rate
1532     vkCmdSetFragmentShadingRateKHR                    = cast( PFN_vkCmdSetFragmentShadingRateKHR                    ) vkGetInstanceProcAddr( instance, "vkCmdSetFragmentShadingRateKHR" );
1533 
1534     // VK_KHR_present_wait
1535     vkWaitForPresentKHR                               = cast( PFN_vkWaitForPresentKHR                               ) vkGetInstanceProcAddr( instance, "vkWaitForPresentKHR" );
1536 
1537     // VK_KHR_deferred_host_operations
1538     vkCreateDeferredOperationKHR                      = cast( PFN_vkCreateDeferredOperationKHR                      ) vkGetInstanceProcAddr( instance, "vkCreateDeferredOperationKHR" );
1539     vkDestroyDeferredOperationKHR                     = cast( PFN_vkDestroyDeferredOperationKHR                     ) vkGetInstanceProcAddr( instance, "vkDestroyDeferredOperationKHR" );
1540     vkGetDeferredOperationMaxConcurrencyKHR           = cast( PFN_vkGetDeferredOperationMaxConcurrencyKHR           ) vkGetInstanceProcAddr( instance, "vkGetDeferredOperationMaxConcurrencyKHR" );
1541     vkGetDeferredOperationResultKHR                   = cast( PFN_vkGetDeferredOperationResultKHR                   ) vkGetInstanceProcAddr( instance, "vkGetDeferredOperationResultKHR" );
1542     vkDeferredOperationJoinKHR                        = cast( PFN_vkDeferredOperationJoinKHR                        ) vkGetInstanceProcAddr( instance, "vkDeferredOperationJoinKHR" );
1543 
1544     // VK_KHR_pipeline_executable_properties
1545     vkGetPipelineExecutablePropertiesKHR              = cast( PFN_vkGetPipelineExecutablePropertiesKHR              ) vkGetInstanceProcAddr( instance, "vkGetPipelineExecutablePropertiesKHR" );
1546     vkGetPipelineExecutableStatisticsKHR              = cast( PFN_vkGetPipelineExecutableStatisticsKHR              ) vkGetInstanceProcAddr( instance, "vkGetPipelineExecutableStatisticsKHR" );
1547     vkGetPipelineExecutableInternalRepresentationsKHR = cast( PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) vkGetInstanceProcAddr( instance, "vkGetPipelineExecutableInternalRepresentationsKHR" );
1548 
1549     // VK_KHR_synchronization2
1550     vkCmdSetEvent2KHR                                 = cast( PFN_vkCmdSetEvent2KHR                                 ) vkGetInstanceProcAddr( instance, "vkCmdSetEvent2KHR" );
1551     vkCmdResetEvent2KHR                               = cast( PFN_vkCmdResetEvent2KHR                               ) vkGetInstanceProcAddr( instance, "vkCmdResetEvent2KHR" );
1552     vkCmdWaitEvents2KHR                               = cast( PFN_vkCmdWaitEvents2KHR                               ) vkGetInstanceProcAddr( instance, "vkCmdWaitEvents2KHR" );
1553     vkCmdPipelineBarrier2KHR                          = cast( PFN_vkCmdPipelineBarrier2KHR                          ) vkGetInstanceProcAddr( instance, "vkCmdPipelineBarrier2KHR" );
1554     vkCmdWriteTimestamp2KHR                           = cast( PFN_vkCmdWriteTimestamp2KHR                           ) vkGetInstanceProcAddr( instance, "vkCmdWriteTimestamp2KHR" );
1555     vkQueueSubmit2KHR                                 = cast( PFN_vkQueueSubmit2KHR                                 ) vkGetInstanceProcAddr( instance, "vkQueueSubmit2KHR" );
1556     vkCmdWriteBufferMarker2AMD                        = cast( PFN_vkCmdWriteBufferMarker2AMD                        ) vkGetInstanceProcAddr( instance, "vkCmdWriteBufferMarker2AMD" );
1557     vkGetQueueCheckpointData2NV                       = cast( PFN_vkGetQueueCheckpointData2NV                       ) vkGetInstanceProcAddr( instance, "vkGetQueueCheckpointData2NV" );
1558 
1559     // VK_KHR_copy_commands2
1560     vkCmdCopyBuffer2KHR                               = cast( PFN_vkCmdCopyBuffer2KHR                               ) vkGetInstanceProcAddr( instance, "vkCmdCopyBuffer2KHR" );
1561     vkCmdCopyImage2KHR                                = cast( PFN_vkCmdCopyImage2KHR                                ) vkGetInstanceProcAddr( instance, "vkCmdCopyImage2KHR" );
1562     vkCmdCopyBufferToImage2KHR                        = cast( PFN_vkCmdCopyBufferToImage2KHR                        ) vkGetInstanceProcAddr( instance, "vkCmdCopyBufferToImage2KHR" );
1563     vkCmdCopyImageToBuffer2KHR                        = cast( PFN_vkCmdCopyImageToBuffer2KHR                        ) vkGetInstanceProcAddr( instance, "vkCmdCopyImageToBuffer2KHR" );
1564     vkCmdBlitImage2KHR                                = cast( PFN_vkCmdBlitImage2KHR                                ) vkGetInstanceProcAddr( instance, "vkCmdBlitImage2KHR" );
1565     vkCmdResolveImage2KHR                             = cast( PFN_vkCmdResolveImage2KHR                             ) vkGetInstanceProcAddr( instance, "vkCmdResolveImage2KHR" );
1566 
1567     // VK_KHR_maintenance4
1568     vkGetDeviceBufferMemoryRequirementsKHR            = cast( PFN_vkGetDeviceBufferMemoryRequirementsKHR            ) vkGetInstanceProcAddr( instance, "vkGetDeviceBufferMemoryRequirementsKHR" );
1569     vkGetDeviceImageMemoryRequirementsKHR             = cast( PFN_vkGetDeviceImageMemoryRequirementsKHR             ) vkGetInstanceProcAddr( instance, "vkGetDeviceImageMemoryRequirementsKHR" );
1570     vkGetDeviceImageSparseMemoryRequirementsKHR       = cast( PFN_vkGetDeviceImageSparseMemoryRequirementsKHR       ) vkGetInstanceProcAddr( instance, "vkGetDeviceImageSparseMemoryRequirementsKHR" );
1571 
1572     // VK_EXT_debug_marker
1573     vkDebugMarkerSetObjectTagEXT                      = cast( PFN_vkDebugMarkerSetObjectTagEXT                      ) vkGetInstanceProcAddr( instance, "vkDebugMarkerSetObjectTagEXT" );
1574     vkDebugMarkerSetObjectNameEXT                     = cast( PFN_vkDebugMarkerSetObjectNameEXT                     ) vkGetInstanceProcAddr( instance, "vkDebugMarkerSetObjectNameEXT" );
1575     vkCmdDebugMarkerBeginEXT                          = cast( PFN_vkCmdDebugMarkerBeginEXT                          ) vkGetInstanceProcAddr( instance, "vkCmdDebugMarkerBeginEXT" );
1576     vkCmdDebugMarkerEndEXT                            = cast( PFN_vkCmdDebugMarkerEndEXT                            ) vkGetInstanceProcAddr( instance, "vkCmdDebugMarkerEndEXT" );
1577     vkCmdDebugMarkerInsertEXT                         = cast( PFN_vkCmdDebugMarkerInsertEXT                         ) vkGetInstanceProcAddr( instance, "vkCmdDebugMarkerInsertEXT" );
1578 
1579     // VK_EXT_transform_feedback
1580     vkCmdBindTransformFeedbackBuffersEXT              = cast( PFN_vkCmdBindTransformFeedbackBuffersEXT              ) vkGetInstanceProcAddr( instance, "vkCmdBindTransformFeedbackBuffersEXT" );
1581     vkCmdBeginTransformFeedbackEXT                    = cast( PFN_vkCmdBeginTransformFeedbackEXT                    ) vkGetInstanceProcAddr( instance, "vkCmdBeginTransformFeedbackEXT" );
1582     vkCmdEndTransformFeedbackEXT                      = cast( PFN_vkCmdEndTransformFeedbackEXT                      ) vkGetInstanceProcAddr( instance, "vkCmdEndTransformFeedbackEXT" );
1583     vkCmdBeginQueryIndexedEXT                         = cast( PFN_vkCmdBeginQueryIndexedEXT                         ) vkGetInstanceProcAddr( instance, "vkCmdBeginQueryIndexedEXT" );
1584     vkCmdEndQueryIndexedEXT                           = cast( PFN_vkCmdEndQueryIndexedEXT                           ) vkGetInstanceProcAddr( instance, "vkCmdEndQueryIndexedEXT" );
1585     vkCmdDrawIndirectByteCountEXT                     = cast( PFN_vkCmdDrawIndirectByteCountEXT                     ) vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectByteCountEXT" );
1586 
1587     // VK_NVX_binary_import
1588     vkCreateCuModuleNVX                               = cast( PFN_vkCreateCuModuleNVX                               ) vkGetInstanceProcAddr( instance, "vkCreateCuModuleNVX" );
1589     vkCreateCuFunctionNVX                             = cast( PFN_vkCreateCuFunctionNVX                             ) vkGetInstanceProcAddr( instance, "vkCreateCuFunctionNVX" );
1590     vkDestroyCuModuleNVX                              = cast( PFN_vkDestroyCuModuleNVX                              ) vkGetInstanceProcAddr( instance, "vkDestroyCuModuleNVX" );
1591     vkDestroyCuFunctionNVX                            = cast( PFN_vkDestroyCuFunctionNVX                            ) vkGetInstanceProcAddr( instance, "vkDestroyCuFunctionNVX" );
1592     vkCmdCuLaunchKernelNVX                            = cast( PFN_vkCmdCuLaunchKernelNVX                            ) vkGetInstanceProcAddr( instance, "vkCmdCuLaunchKernelNVX" );
1593 
1594     // VK_NVX_image_view_handle
1595     vkGetImageViewHandleNVX                           = cast( PFN_vkGetImageViewHandleNVX                           ) vkGetInstanceProcAddr( instance, "vkGetImageViewHandleNVX" );
1596     vkGetImageViewAddressNVX                          = cast( PFN_vkGetImageViewAddressNVX                          ) vkGetInstanceProcAddr( instance, "vkGetImageViewAddressNVX" );
1597 
1598     // VK_AMD_shader_info
1599     vkGetShaderInfoAMD                                = cast( PFN_vkGetShaderInfoAMD                                ) vkGetInstanceProcAddr( instance, "vkGetShaderInfoAMD" );
1600 
1601     // VK_EXT_conditional_rendering
1602     vkCmdBeginConditionalRenderingEXT                 = cast( PFN_vkCmdBeginConditionalRenderingEXT                 ) vkGetInstanceProcAddr( instance, "vkCmdBeginConditionalRenderingEXT" );
1603     vkCmdEndConditionalRenderingEXT                   = cast( PFN_vkCmdEndConditionalRenderingEXT                   ) vkGetInstanceProcAddr( instance, "vkCmdEndConditionalRenderingEXT" );
1604 
1605     // VK_NV_clip_space_w_scaling
1606     vkCmdSetViewportWScalingNV                        = cast( PFN_vkCmdSetViewportWScalingNV                        ) vkGetInstanceProcAddr( instance, "vkCmdSetViewportWScalingNV" );
1607 
1608     // VK_EXT_display_control
1609     vkDisplayPowerControlEXT                          = cast( PFN_vkDisplayPowerControlEXT                          ) vkGetInstanceProcAddr( instance, "vkDisplayPowerControlEXT" );
1610     vkRegisterDeviceEventEXT                          = cast( PFN_vkRegisterDeviceEventEXT                          ) vkGetInstanceProcAddr( instance, "vkRegisterDeviceEventEXT" );
1611     vkRegisterDisplayEventEXT                         = cast( PFN_vkRegisterDisplayEventEXT                         ) vkGetInstanceProcAddr( instance, "vkRegisterDisplayEventEXT" );
1612     vkGetSwapchainCounterEXT                          = cast( PFN_vkGetSwapchainCounterEXT                          ) vkGetInstanceProcAddr( instance, "vkGetSwapchainCounterEXT" );
1613 
1614     // VK_GOOGLE_display_timing
1615     vkGetRefreshCycleDurationGOOGLE                   = cast( PFN_vkGetRefreshCycleDurationGOOGLE                   ) vkGetInstanceProcAddr( instance, "vkGetRefreshCycleDurationGOOGLE" );
1616     vkGetPastPresentationTimingGOOGLE                 = cast( PFN_vkGetPastPresentationTimingGOOGLE                 ) vkGetInstanceProcAddr( instance, "vkGetPastPresentationTimingGOOGLE" );
1617 
1618     // VK_EXT_discard_rectangles
1619     vkCmdSetDiscardRectangleEXT                       = cast( PFN_vkCmdSetDiscardRectangleEXT                       ) vkGetInstanceProcAddr( instance, "vkCmdSetDiscardRectangleEXT" );
1620 
1621     // VK_EXT_hdr_metadata
1622     vkSetHdrMetadataEXT                               = cast( PFN_vkSetHdrMetadataEXT                               ) vkGetInstanceProcAddr( instance, "vkSetHdrMetadataEXT" );
1623 
1624     // VK_EXT_debug_utils
1625     vkSetDebugUtilsObjectNameEXT                      = cast( PFN_vkSetDebugUtilsObjectNameEXT                      ) vkGetInstanceProcAddr( instance, "vkSetDebugUtilsObjectNameEXT" );
1626     vkSetDebugUtilsObjectTagEXT                       = cast( PFN_vkSetDebugUtilsObjectTagEXT                       ) vkGetInstanceProcAddr( instance, "vkSetDebugUtilsObjectTagEXT" );
1627     vkQueueBeginDebugUtilsLabelEXT                    = cast( PFN_vkQueueBeginDebugUtilsLabelEXT                    ) vkGetInstanceProcAddr( instance, "vkQueueBeginDebugUtilsLabelEXT" );
1628     vkQueueEndDebugUtilsLabelEXT                      = cast( PFN_vkQueueEndDebugUtilsLabelEXT                      ) vkGetInstanceProcAddr( instance, "vkQueueEndDebugUtilsLabelEXT" );
1629     vkQueueInsertDebugUtilsLabelEXT                   = cast( PFN_vkQueueInsertDebugUtilsLabelEXT                   ) vkGetInstanceProcAddr( instance, "vkQueueInsertDebugUtilsLabelEXT" );
1630     vkCmdBeginDebugUtilsLabelEXT                      = cast( PFN_vkCmdBeginDebugUtilsLabelEXT                      ) vkGetInstanceProcAddr( instance, "vkCmdBeginDebugUtilsLabelEXT" );
1631     vkCmdEndDebugUtilsLabelEXT                        = cast( PFN_vkCmdEndDebugUtilsLabelEXT                        ) vkGetInstanceProcAddr( instance, "vkCmdEndDebugUtilsLabelEXT" );
1632     vkCmdInsertDebugUtilsLabelEXT                     = cast( PFN_vkCmdInsertDebugUtilsLabelEXT                     ) vkGetInstanceProcAddr( instance, "vkCmdInsertDebugUtilsLabelEXT" );
1633 
1634     // VK_EXT_sample_locations
1635     vkCmdSetSampleLocationsEXT                        = cast( PFN_vkCmdSetSampleLocationsEXT                        ) vkGetInstanceProcAddr( instance, "vkCmdSetSampleLocationsEXT" );
1636 
1637     // VK_EXT_image_drm_format_modifier
1638     vkGetImageDrmFormatModifierPropertiesEXT          = cast( PFN_vkGetImageDrmFormatModifierPropertiesEXT          ) vkGetInstanceProcAddr( instance, "vkGetImageDrmFormatModifierPropertiesEXT" );
1639 
1640     // VK_EXT_validation_cache
1641     vkCreateValidationCacheEXT                        = cast( PFN_vkCreateValidationCacheEXT                        ) vkGetInstanceProcAddr( instance, "vkCreateValidationCacheEXT" );
1642     vkDestroyValidationCacheEXT                       = cast( PFN_vkDestroyValidationCacheEXT                       ) vkGetInstanceProcAddr( instance, "vkDestroyValidationCacheEXT" );
1643     vkMergeValidationCachesEXT                        = cast( PFN_vkMergeValidationCachesEXT                        ) vkGetInstanceProcAddr( instance, "vkMergeValidationCachesEXT" );
1644     vkGetValidationCacheDataEXT                       = cast( PFN_vkGetValidationCacheDataEXT                       ) vkGetInstanceProcAddr( instance, "vkGetValidationCacheDataEXT" );
1645 
1646     // VK_NV_shading_rate_image
1647     vkCmdBindShadingRateImageNV                       = cast( PFN_vkCmdBindShadingRateImageNV                       ) vkGetInstanceProcAddr( instance, "vkCmdBindShadingRateImageNV" );
1648     vkCmdSetViewportShadingRatePaletteNV              = cast( PFN_vkCmdSetViewportShadingRatePaletteNV              ) vkGetInstanceProcAddr( instance, "vkCmdSetViewportShadingRatePaletteNV" );
1649     vkCmdSetCoarseSampleOrderNV                       = cast( PFN_vkCmdSetCoarseSampleOrderNV                       ) vkGetInstanceProcAddr( instance, "vkCmdSetCoarseSampleOrderNV" );
1650 
1651     // VK_NV_ray_tracing
1652     vkCreateAccelerationStructureNV                   = cast( PFN_vkCreateAccelerationStructureNV                   ) vkGetInstanceProcAddr( instance, "vkCreateAccelerationStructureNV" );
1653     vkDestroyAccelerationStructureNV                  = cast( PFN_vkDestroyAccelerationStructureNV                  ) vkGetInstanceProcAddr( instance, "vkDestroyAccelerationStructureNV" );
1654     vkGetAccelerationStructureMemoryRequirementsNV    = cast( PFN_vkGetAccelerationStructureMemoryRequirementsNV    ) vkGetInstanceProcAddr( instance, "vkGetAccelerationStructureMemoryRequirementsNV" );
1655     vkBindAccelerationStructureMemoryNV               = cast( PFN_vkBindAccelerationStructureMemoryNV               ) vkGetInstanceProcAddr( instance, "vkBindAccelerationStructureMemoryNV" );
1656     vkCmdBuildAccelerationStructureNV                 = cast( PFN_vkCmdBuildAccelerationStructureNV                 ) vkGetInstanceProcAddr( instance, "vkCmdBuildAccelerationStructureNV" );
1657     vkCmdCopyAccelerationStructureNV                  = cast( PFN_vkCmdCopyAccelerationStructureNV                  ) vkGetInstanceProcAddr( instance, "vkCmdCopyAccelerationStructureNV" );
1658     vkCmdTraceRaysNV                                  = cast( PFN_vkCmdTraceRaysNV                                  ) vkGetInstanceProcAddr( instance, "vkCmdTraceRaysNV" );
1659     vkCreateRayTracingPipelinesNV                     = cast( PFN_vkCreateRayTracingPipelinesNV                     ) vkGetInstanceProcAddr( instance, "vkCreateRayTracingPipelinesNV" );
1660     vkGetRayTracingShaderGroupHandlesKHR              = cast( PFN_vkGetRayTracingShaderGroupHandlesKHR              ) vkGetInstanceProcAddr( instance, "vkGetRayTracingShaderGroupHandlesKHR" );
1661     vkGetAccelerationStructureHandleNV                = cast( PFN_vkGetAccelerationStructureHandleNV                ) vkGetInstanceProcAddr( instance, "vkGetAccelerationStructureHandleNV" );
1662     vkCmdWriteAccelerationStructuresPropertiesNV      = cast( PFN_vkCmdWriteAccelerationStructuresPropertiesNV      ) vkGetInstanceProcAddr( instance, "vkCmdWriteAccelerationStructuresPropertiesNV" );
1663     vkCompileDeferredNV                               = cast( PFN_vkCompileDeferredNV                               ) vkGetInstanceProcAddr( instance, "vkCompileDeferredNV" );
1664 
1665     // VK_EXT_external_memory_host
1666     vkGetMemoryHostPointerPropertiesEXT               = cast( PFN_vkGetMemoryHostPointerPropertiesEXT               ) vkGetInstanceProcAddr( instance, "vkGetMemoryHostPointerPropertiesEXT" );
1667 
1668     // VK_AMD_buffer_marker
1669     vkCmdWriteBufferMarkerAMD                         = cast( PFN_vkCmdWriteBufferMarkerAMD                         ) vkGetInstanceProcAddr( instance, "vkCmdWriteBufferMarkerAMD" );
1670 
1671     // VK_EXT_calibrated_timestamps
1672     vkGetCalibratedTimestampsEXT                      = cast( PFN_vkGetCalibratedTimestampsEXT                      ) vkGetInstanceProcAddr( instance, "vkGetCalibratedTimestampsEXT" );
1673 
1674     // VK_NV_mesh_shader
1675     vkCmdDrawMeshTasksNV                              = cast( PFN_vkCmdDrawMeshTasksNV                              ) vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksNV" );
1676     vkCmdDrawMeshTasksIndirectNV                      = cast( PFN_vkCmdDrawMeshTasksIndirectNV                      ) vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksIndirectNV" );
1677     vkCmdDrawMeshTasksIndirectCountNV                 = cast( PFN_vkCmdDrawMeshTasksIndirectCountNV                 ) vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksIndirectCountNV" );
1678 
1679     // VK_NV_scissor_exclusive
1680     vkCmdSetExclusiveScissorNV                        = cast( PFN_vkCmdSetExclusiveScissorNV                        ) vkGetInstanceProcAddr( instance, "vkCmdSetExclusiveScissorNV" );
1681 
1682     // VK_NV_device_diagnostic_checkpoints
1683     vkCmdSetCheckpointNV                              = cast( PFN_vkCmdSetCheckpointNV                              ) vkGetInstanceProcAddr( instance, "vkCmdSetCheckpointNV" );
1684     vkGetQueueCheckpointDataNV                        = cast( PFN_vkGetQueueCheckpointDataNV                        ) vkGetInstanceProcAddr( instance, "vkGetQueueCheckpointDataNV" );
1685 
1686     // VK_INTEL_performance_query
1687     vkInitializePerformanceApiINTEL                   = cast( PFN_vkInitializePerformanceApiINTEL                   ) vkGetInstanceProcAddr( instance, "vkInitializePerformanceApiINTEL" );
1688     vkUninitializePerformanceApiINTEL                 = cast( PFN_vkUninitializePerformanceApiINTEL                 ) vkGetInstanceProcAddr( instance, "vkUninitializePerformanceApiINTEL" );
1689     vkCmdSetPerformanceMarkerINTEL                    = cast( PFN_vkCmdSetPerformanceMarkerINTEL                    ) vkGetInstanceProcAddr( instance, "vkCmdSetPerformanceMarkerINTEL" );
1690     vkCmdSetPerformanceStreamMarkerINTEL              = cast( PFN_vkCmdSetPerformanceStreamMarkerINTEL              ) vkGetInstanceProcAddr( instance, "vkCmdSetPerformanceStreamMarkerINTEL" );
1691     vkCmdSetPerformanceOverrideINTEL                  = cast( PFN_vkCmdSetPerformanceOverrideINTEL                  ) vkGetInstanceProcAddr( instance, "vkCmdSetPerformanceOverrideINTEL" );
1692     vkAcquirePerformanceConfigurationINTEL            = cast( PFN_vkAcquirePerformanceConfigurationINTEL            ) vkGetInstanceProcAddr( instance, "vkAcquirePerformanceConfigurationINTEL" );
1693     vkReleasePerformanceConfigurationINTEL            = cast( PFN_vkReleasePerformanceConfigurationINTEL            ) vkGetInstanceProcAddr( instance, "vkReleasePerformanceConfigurationINTEL" );
1694     vkQueueSetPerformanceConfigurationINTEL           = cast( PFN_vkQueueSetPerformanceConfigurationINTEL           ) vkGetInstanceProcAddr( instance, "vkQueueSetPerformanceConfigurationINTEL" );
1695     vkGetPerformanceParameterINTEL                    = cast( PFN_vkGetPerformanceParameterINTEL                    ) vkGetInstanceProcAddr( instance, "vkGetPerformanceParameterINTEL" );
1696 
1697     // VK_AMD_display_native_hdr
1698     vkSetLocalDimmingAMD                              = cast( PFN_vkSetLocalDimmingAMD                              ) vkGetInstanceProcAddr( instance, "vkSetLocalDimmingAMD" );
1699 
1700     // VK_EXT_line_rasterization
1701     vkCmdSetLineStippleEXT                            = cast( PFN_vkCmdSetLineStippleEXT                            ) vkGetInstanceProcAddr( instance, "vkCmdSetLineStippleEXT" );
1702 
1703     // VK_EXT_extended_dynamic_state
1704     vkCmdSetCullModeEXT                               = cast( PFN_vkCmdSetCullModeEXT                               ) vkGetInstanceProcAddr( instance, "vkCmdSetCullModeEXT" );
1705     vkCmdSetFrontFaceEXT                              = cast( PFN_vkCmdSetFrontFaceEXT                              ) vkGetInstanceProcAddr( instance, "vkCmdSetFrontFaceEXT" );
1706     vkCmdSetPrimitiveTopologyEXT                      = cast( PFN_vkCmdSetPrimitiveTopologyEXT                      ) vkGetInstanceProcAddr( instance, "vkCmdSetPrimitiveTopologyEXT" );
1707     vkCmdSetViewportWithCountEXT                      = cast( PFN_vkCmdSetViewportWithCountEXT                      ) vkGetInstanceProcAddr( instance, "vkCmdSetViewportWithCountEXT" );
1708     vkCmdSetScissorWithCountEXT                       = cast( PFN_vkCmdSetScissorWithCountEXT                       ) vkGetInstanceProcAddr( instance, "vkCmdSetScissorWithCountEXT" );
1709     vkCmdBindVertexBuffers2EXT                        = cast( PFN_vkCmdBindVertexBuffers2EXT                        ) vkGetInstanceProcAddr( instance, "vkCmdBindVertexBuffers2EXT" );
1710     vkCmdSetDepthTestEnableEXT                        = cast( PFN_vkCmdSetDepthTestEnableEXT                        ) vkGetInstanceProcAddr( instance, "vkCmdSetDepthTestEnableEXT" );
1711     vkCmdSetDepthWriteEnableEXT                       = cast( PFN_vkCmdSetDepthWriteEnableEXT                       ) vkGetInstanceProcAddr( instance, "vkCmdSetDepthWriteEnableEXT" );
1712     vkCmdSetDepthCompareOpEXT                         = cast( PFN_vkCmdSetDepthCompareOpEXT                         ) vkGetInstanceProcAddr( instance, "vkCmdSetDepthCompareOpEXT" );
1713     vkCmdSetDepthBoundsTestEnableEXT                  = cast( PFN_vkCmdSetDepthBoundsTestEnableEXT                  ) vkGetInstanceProcAddr( instance, "vkCmdSetDepthBoundsTestEnableEXT" );
1714     vkCmdSetStencilTestEnableEXT                      = cast( PFN_vkCmdSetStencilTestEnableEXT                      ) vkGetInstanceProcAddr( instance, "vkCmdSetStencilTestEnableEXT" );
1715     vkCmdSetStencilOpEXT                              = cast( PFN_vkCmdSetStencilOpEXT                              ) vkGetInstanceProcAddr( instance, "vkCmdSetStencilOpEXT" );
1716 
1717     // VK_NV_device_generated_commands
1718     vkGetGeneratedCommandsMemoryRequirementsNV        = cast( PFN_vkGetGeneratedCommandsMemoryRequirementsNV        ) vkGetInstanceProcAddr( instance, "vkGetGeneratedCommandsMemoryRequirementsNV" );
1719     vkCmdPreprocessGeneratedCommandsNV                = cast( PFN_vkCmdPreprocessGeneratedCommandsNV                ) vkGetInstanceProcAddr( instance, "vkCmdPreprocessGeneratedCommandsNV" );
1720     vkCmdExecuteGeneratedCommandsNV                   = cast( PFN_vkCmdExecuteGeneratedCommandsNV                   ) vkGetInstanceProcAddr( instance, "vkCmdExecuteGeneratedCommandsNV" );
1721     vkCmdBindPipelineShaderGroupNV                    = cast( PFN_vkCmdBindPipelineShaderGroupNV                    ) vkGetInstanceProcAddr( instance, "vkCmdBindPipelineShaderGroupNV" );
1722     vkCreateIndirectCommandsLayoutNV                  = cast( PFN_vkCreateIndirectCommandsLayoutNV                  ) vkGetInstanceProcAddr( instance, "vkCreateIndirectCommandsLayoutNV" );
1723     vkDestroyIndirectCommandsLayoutNV                 = cast( PFN_vkDestroyIndirectCommandsLayoutNV                 ) vkGetInstanceProcAddr( instance, "vkDestroyIndirectCommandsLayoutNV" );
1724 
1725     // VK_EXT_private_data
1726     vkCreatePrivateDataSlotEXT                        = cast( PFN_vkCreatePrivateDataSlotEXT                        ) vkGetInstanceProcAddr( instance, "vkCreatePrivateDataSlotEXT" );
1727     vkDestroyPrivateDataSlotEXT                       = cast( PFN_vkDestroyPrivateDataSlotEXT                       ) vkGetInstanceProcAddr( instance, "vkDestroyPrivateDataSlotEXT" );
1728     vkSetPrivateDataEXT                               = cast( PFN_vkSetPrivateDataEXT                               ) vkGetInstanceProcAddr( instance, "vkSetPrivateDataEXT" );
1729     vkGetPrivateDataEXT                               = cast( PFN_vkGetPrivateDataEXT                               ) vkGetInstanceProcAddr( instance, "vkGetPrivateDataEXT" );
1730 
1731     // VK_NV_fragment_shading_rate_enums
1732     vkCmdSetFragmentShadingRateEnumNV                 = cast( PFN_vkCmdSetFragmentShadingRateEnumNV                 ) vkGetInstanceProcAddr( instance, "vkCmdSetFragmentShadingRateEnumNV" );
1733 
1734     // VK_EXT_vertex_input_dynamic_state
1735     vkCmdSetVertexInputEXT                            = cast( PFN_vkCmdSetVertexInputEXT                            ) vkGetInstanceProcAddr( instance, "vkCmdSetVertexInputEXT" );
1736 
1737     // VK_HUAWEI_subpass_shading
1738     vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI   = cast( PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI   ) vkGetInstanceProcAddr( instance, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI" );
1739     vkCmdSubpassShadingHUAWEI                         = cast( PFN_vkCmdSubpassShadingHUAWEI                         ) vkGetInstanceProcAddr( instance, "vkCmdSubpassShadingHUAWEI" );
1740 
1741     // VK_HUAWEI_invocation_mask
1742     vkCmdBindInvocationMaskHUAWEI                     = cast( PFN_vkCmdBindInvocationMaskHUAWEI                     ) vkGetInstanceProcAddr( instance, "vkCmdBindInvocationMaskHUAWEI" );
1743 
1744     // VK_NV_external_memory_rdma
1745     vkGetMemoryRemoteAddressNV                        = cast( PFN_vkGetMemoryRemoteAddressNV                        ) vkGetInstanceProcAddr( instance, "vkGetMemoryRemoteAddressNV" );
1746 
1747     // VK_EXT_extended_dynamic_state2
1748     vkCmdSetPatchControlPointsEXT                     = cast( PFN_vkCmdSetPatchControlPointsEXT                     ) vkGetInstanceProcAddr( instance, "vkCmdSetPatchControlPointsEXT" );
1749     vkCmdSetRasterizerDiscardEnableEXT                = cast( PFN_vkCmdSetRasterizerDiscardEnableEXT                ) vkGetInstanceProcAddr( instance, "vkCmdSetRasterizerDiscardEnableEXT" );
1750     vkCmdSetDepthBiasEnableEXT                        = cast( PFN_vkCmdSetDepthBiasEnableEXT                        ) vkGetInstanceProcAddr( instance, "vkCmdSetDepthBiasEnableEXT" );
1751     vkCmdSetLogicOpEXT                                = cast( PFN_vkCmdSetLogicOpEXT                                ) vkGetInstanceProcAddr( instance, "vkCmdSetLogicOpEXT" );
1752     vkCmdSetPrimitiveRestartEnableEXT                 = cast( PFN_vkCmdSetPrimitiveRestartEnableEXT                 ) vkGetInstanceProcAddr( instance, "vkCmdSetPrimitiveRestartEnableEXT" );
1753 
1754     // VK_EXT_color_write_enable
1755     vkCmdSetColorWriteEnableEXT                       = cast( PFN_vkCmdSetColorWriteEnableEXT                       ) vkGetInstanceProcAddr( instance, "vkCmdSetColorWriteEnableEXT" );
1756 
1757     // VK_EXT_multi_draw
1758     vkCmdDrawMultiEXT                                 = cast( PFN_vkCmdDrawMultiEXT                                 ) vkGetInstanceProcAddr( instance, "vkCmdDrawMultiEXT" );
1759     vkCmdDrawMultiIndexedEXT                          = cast( PFN_vkCmdDrawMultiIndexedEXT                          ) vkGetInstanceProcAddr( instance, "vkCmdDrawMultiIndexedEXT" );
1760 
1761     // VK_EXT_pageable_device_local_memory
1762     vkSetDeviceMemoryPriorityEXT                      = cast( PFN_vkSetDeviceMemoryPriorityEXT                      ) vkGetInstanceProcAddr( instance, "vkSetDeviceMemoryPriorityEXT" );
1763 
1764     // VK_KHR_acceleration_structure
1765     vkCreateAccelerationStructureKHR                  = cast( PFN_vkCreateAccelerationStructureKHR                  ) vkGetInstanceProcAddr( instance, "vkCreateAccelerationStructureKHR" );
1766     vkDestroyAccelerationStructureKHR                 = cast( PFN_vkDestroyAccelerationStructureKHR                 ) vkGetInstanceProcAddr( instance, "vkDestroyAccelerationStructureKHR" );
1767     vkCmdBuildAccelerationStructuresKHR               = cast( PFN_vkCmdBuildAccelerationStructuresKHR               ) vkGetInstanceProcAddr( instance, "vkCmdBuildAccelerationStructuresKHR" );
1768     vkCmdBuildAccelerationStructuresIndirectKHR       = cast( PFN_vkCmdBuildAccelerationStructuresIndirectKHR       ) vkGetInstanceProcAddr( instance, "vkCmdBuildAccelerationStructuresIndirectKHR" );
1769     vkBuildAccelerationStructuresKHR                  = cast( PFN_vkBuildAccelerationStructuresKHR                  ) vkGetInstanceProcAddr( instance, "vkBuildAccelerationStructuresKHR" );
1770     vkCopyAccelerationStructureKHR                    = cast( PFN_vkCopyAccelerationStructureKHR                    ) vkGetInstanceProcAddr( instance, "vkCopyAccelerationStructureKHR" );
1771     vkCopyAccelerationStructureToMemoryKHR            = cast( PFN_vkCopyAccelerationStructureToMemoryKHR            ) vkGetInstanceProcAddr( instance, "vkCopyAccelerationStructureToMemoryKHR" );
1772     vkCopyMemoryToAccelerationStructureKHR            = cast( PFN_vkCopyMemoryToAccelerationStructureKHR            ) vkGetInstanceProcAddr( instance, "vkCopyMemoryToAccelerationStructureKHR" );
1773     vkWriteAccelerationStructuresPropertiesKHR        = cast( PFN_vkWriteAccelerationStructuresPropertiesKHR        ) vkGetInstanceProcAddr( instance, "vkWriteAccelerationStructuresPropertiesKHR" );
1774     vkCmdCopyAccelerationStructureKHR                 = cast( PFN_vkCmdCopyAccelerationStructureKHR                 ) vkGetInstanceProcAddr( instance, "vkCmdCopyAccelerationStructureKHR" );
1775     vkCmdCopyAccelerationStructureToMemoryKHR         = cast( PFN_vkCmdCopyAccelerationStructureToMemoryKHR         ) vkGetInstanceProcAddr( instance, "vkCmdCopyAccelerationStructureToMemoryKHR" );
1776     vkCmdCopyMemoryToAccelerationStructureKHR         = cast( PFN_vkCmdCopyMemoryToAccelerationStructureKHR         ) vkGetInstanceProcAddr( instance, "vkCmdCopyMemoryToAccelerationStructureKHR" );
1777     vkGetAccelerationStructureDeviceAddressKHR        = cast( PFN_vkGetAccelerationStructureDeviceAddressKHR        ) vkGetInstanceProcAddr( instance, "vkGetAccelerationStructureDeviceAddressKHR" );
1778     vkCmdWriteAccelerationStructuresPropertiesKHR     = cast( PFN_vkCmdWriteAccelerationStructuresPropertiesKHR     ) vkGetInstanceProcAddr( instance, "vkCmdWriteAccelerationStructuresPropertiesKHR" );
1779     vkGetDeviceAccelerationStructureCompatibilityKHR  = cast( PFN_vkGetDeviceAccelerationStructureCompatibilityKHR  ) vkGetInstanceProcAddr( instance, "vkGetDeviceAccelerationStructureCompatibilityKHR" );
1780     vkGetAccelerationStructureBuildSizesKHR           = cast( PFN_vkGetAccelerationStructureBuildSizesKHR           ) vkGetInstanceProcAddr( instance, "vkGetAccelerationStructureBuildSizesKHR" );
1781 
1782     // VK_KHR_ray_tracing_pipeline
1783     vkCmdTraceRaysKHR                                 = cast( PFN_vkCmdTraceRaysKHR                                 ) vkGetInstanceProcAddr( instance, "vkCmdTraceRaysKHR" );
1784     vkCreateRayTracingPipelinesKHR                    = cast( PFN_vkCreateRayTracingPipelinesKHR                    ) vkGetInstanceProcAddr( instance, "vkCreateRayTracingPipelinesKHR" );
1785     vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = cast( PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) vkGetInstanceProcAddr( instance, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR" );
1786     vkCmdTraceRaysIndirectKHR                         = cast( PFN_vkCmdTraceRaysIndirectKHR                         ) vkGetInstanceProcAddr( instance, "vkCmdTraceRaysIndirectKHR" );
1787     vkGetRayTracingShaderGroupStackSizeKHR            = cast( PFN_vkGetRayTracingShaderGroupStackSizeKHR            ) vkGetInstanceProcAddr( instance, "vkGetRayTracingShaderGroupStackSizeKHR" );
1788     vkCmdSetRayTracingPipelineStackSizeKHR            = cast( PFN_vkCmdSetRayTracingPipelineStackSizeKHR            ) vkGetInstanceProcAddr( instance, "vkCmdSetRayTracingPipelineStackSizeKHR" );
1789 }
1790 
1791 
1792 /// with a valid VkDevice call this function to retrieve VkDevice, VkQueue and VkCommandBuffer related functions
1793 /// the functions call directly VkDevice and related resources and can be retrieved for one and only one VkDevice
1794 /// calling this function again with another VkDevices will overwrite the __gshared functions retrieved previously
1795 /// see module erupted.dispatch_device if multiple VkDevices will be used
1796 void loadDeviceLevelFunctions( VkDevice device ) {
1797     assert( vkGetDeviceProcAddr !is null, "Function pointer vkGetDeviceProcAddr is null!\nCall loadGlobalLevelFunctions -> loadInstanceLevelFunctions -> loadDeviceLevelFunctions( device )" );
1798 
1799     // VK_VERSION_1_0
1800     vkDestroyDevice                                   = cast( PFN_vkDestroyDevice                                   ) vkGetDeviceProcAddr( device, "vkDestroyDevice" );
1801     vkGetDeviceQueue                                  = cast( PFN_vkGetDeviceQueue                                  ) vkGetDeviceProcAddr( device, "vkGetDeviceQueue" );
1802     vkQueueSubmit                                     = cast( PFN_vkQueueSubmit                                     ) vkGetDeviceProcAddr( device, "vkQueueSubmit" );
1803     vkQueueWaitIdle                                   = cast( PFN_vkQueueWaitIdle                                   ) vkGetDeviceProcAddr( device, "vkQueueWaitIdle" );
1804     vkDeviceWaitIdle                                  = cast( PFN_vkDeviceWaitIdle                                  ) vkGetDeviceProcAddr( device, "vkDeviceWaitIdle" );
1805     vkAllocateMemory                                  = cast( PFN_vkAllocateMemory                                  ) vkGetDeviceProcAddr( device, "vkAllocateMemory" );
1806     vkFreeMemory                                      = cast( PFN_vkFreeMemory                                      ) vkGetDeviceProcAddr( device, "vkFreeMemory" );
1807     vkMapMemory                                       = cast( PFN_vkMapMemory                                       ) vkGetDeviceProcAddr( device, "vkMapMemory" );
1808     vkUnmapMemory                                     = cast( PFN_vkUnmapMemory                                     ) vkGetDeviceProcAddr( device, "vkUnmapMemory" );
1809     vkFlushMappedMemoryRanges                         = cast( PFN_vkFlushMappedMemoryRanges                         ) vkGetDeviceProcAddr( device, "vkFlushMappedMemoryRanges" );
1810     vkInvalidateMappedMemoryRanges                    = cast( PFN_vkInvalidateMappedMemoryRanges                    ) vkGetDeviceProcAddr( device, "vkInvalidateMappedMemoryRanges" );
1811     vkGetDeviceMemoryCommitment                       = cast( PFN_vkGetDeviceMemoryCommitment                       ) vkGetDeviceProcAddr( device, "vkGetDeviceMemoryCommitment" );
1812     vkBindBufferMemory                                = cast( PFN_vkBindBufferMemory                                ) vkGetDeviceProcAddr( device, "vkBindBufferMemory" );
1813     vkBindImageMemory                                 = cast( PFN_vkBindImageMemory                                 ) vkGetDeviceProcAddr( device, "vkBindImageMemory" );
1814     vkGetBufferMemoryRequirements                     = cast( PFN_vkGetBufferMemoryRequirements                     ) vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements" );
1815     vkGetImageMemoryRequirements                      = cast( PFN_vkGetImageMemoryRequirements                      ) vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements" );
1816     vkGetImageSparseMemoryRequirements                = cast( PFN_vkGetImageSparseMemoryRequirements                ) vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements" );
1817     vkQueueBindSparse                                 = cast( PFN_vkQueueBindSparse                                 ) vkGetDeviceProcAddr( device, "vkQueueBindSparse" );
1818     vkCreateFence                                     = cast( PFN_vkCreateFence                                     ) vkGetDeviceProcAddr( device, "vkCreateFence" );
1819     vkDestroyFence                                    = cast( PFN_vkDestroyFence                                    ) vkGetDeviceProcAddr( device, "vkDestroyFence" );
1820     vkResetFences                                     = cast( PFN_vkResetFences                                     ) vkGetDeviceProcAddr( device, "vkResetFences" );
1821     vkGetFenceStatus                                  = cast( PFN_vkGetFenceStatus                                  ) vkGetDeviceProcAddr( device, "vkGetFenceStatus" );
1822     vkWaitForFences                                   = cast( PFN_vkWaitForFences                                   ) vkGetDeviceProcAddr( device, "vkWaitForFences" );
1823     vkCreateSemaphore                                 = cast( PFN_vkCreateSemaphore                                 ) vkGetDeviceProcAddr( device, "vkCreateSemaphore" );
1824     vkDestroySemaphore                                = cast( PFN_vkDestroySemaphore                                ) vkGetDeviceProcAddr( device, "vkDestroySemaphore" );
1825     vkCreateEvent                                     = cast( PFN_vkCreateEvent                                     ) vkGetDeviceProcAddr( device, "vkCreateEvent" );
1826     vkDestroyEvent                                    = cast( PFN_vkDestroyEvent                                    ) vkGetDeviceProcAddr( device, "vkDestroyEvent" );
1827     vkGetEventStatus                                  = cast( PFN_vkGetEventStatus                                  ) vkGetDeviceProcAddr( device, "vkGetEventStatus" );
1828     vkSetEvent                                        = cast( PFN_vkSetEvent                                        ) vkGetDeviceProcAddr( device, "vkSetEvent" );
1829     vkResetEvent                                      = cast( PFN_vkResetEvent                                      ) vkGetDeviceProcAddr( device, "vkResetEvent" );
1830     vkCreateQueryPool                                 = cast( PFN_vkCreateQueryPool                                 ) vkGetDeviceProcAddr( device, "vkCreateQueryPool" );
1831     vkDestroyQueryPool                                = cast( PFN_vkDestroyQueryPool                                ) vkGetDeviceProcAddr( device, "vkDestroyQueryPool" );
1832     vkGetQueryPoolResults                             = cast( PFN_vkGetQueryPoolResults                             ) vkGetDeviceProcAddr( device, "vkGetQueryPoolResults" );
1833     vkCreateBuffer                                    = cast( PFN_vkCreateBuffer                                    ) vkGetDeviceProcAddr( device, "vkCreateBuffer" );
1834     vkDestroyBuffer                                   = cast( PFN_vkDestroyBuffer                                   ) vkGetDeviceProcAddr( device, "vkDestroyBuffer" );
1835     vkCreateBufferView                                = cast( PFN_vkCreateBufferView                                ) vkGetDeviceProcAddr( device, "vkCreateBufferView" );
1836     vkDestroyBufferView                               = cast( PFN_vkDestroyBufferView                               ) vkGetDeviceProcAddr( device, "vkDestroyBufferView" );
1837     vkCreateImage                                     = cast( PFN_vkCreateImage                                     ) vkGetDeviceProcAddr( device, "vkCreateImage" );
1838     vkDestroyImage                                    = cast( PFN_vkDestroyImage                                    ) vkGetDeviceProcAddr( device, "vkDestroyImage" );
1839     vkGetImageSubresourceLayout                       = cast( PFN_vkGetImageSubresourceLayout                       ) vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout" );
1840     vkCreateImageView                                 = cast( PFN_vkCreateImageView                                 ) vkGetDeviceProcAddr( device, "vkCreateImageView" );
1841     vkDestroyImageView                                = cast( PFN_vkDestroyImageView                                ) vkGetDeviceProcAddr( device, "vkDestroyImageView" );
1842     vkCreateShaderModule                              = cast( PFN_vkCreateShaderModule                              ) vkGetDeviceProcAddr( device, "vkCreateShaderModule" );
1843     vkDestroyShaderModule                             = cast( PFN_vkDestroyShaderModule                             ) vkGetDeviceProcAddr( device, "vkDestroyShaderModule" );
1844     vkCreatePipelineCache                             = cast( PFN_vkCreatePipelineCache                             ) vkGetDeviceProcAddr( device, "vkCreatePipelineCache" );
1845     vkDestroyPipelineCache                            = cast( PFN_vkDestroyPipelineCache                            ) vkGetDeviceProcAddr( device, "vkDestroyPipelineCache" );
1846     vkGetPipelineCacheData                            = cast( PFN_vkGetPipelineCacheData                            ) vkGetDeviceProcAddr( device, "vkGetPipelineCacheData" );
1847     vkMergePipelineCaches                             = cast( PFN_vkMergePipelineCaches                             ) vkGetDeviceProcAddr( device, "vkMergePipelineCaches" );
1848     vkCreateGraphicsPipelines                         = cast( PFN_vkCreateGraphicsPipelines                         ) vkGetDeviceProcAddr( device, "vkCreateGraphicsPipelines" );
1849     vkCreateComputePipelines                          = cast( PFN_vkCreateComputePipelines                          ) vkGetDeviceProcAddr( device, "vkCreateComputePipelines" );
1850     vkDestroyPipeline                                 = cast( PFN_vkDestroyPipeline                                 ) vkGetDeviceProcAddr( device, "vkDestroyPipeline" );
1851     vkCreatePipelineLayout                            = cast( PFN_vkCreatePipelineLayout                            ) vkGetDeviceProcAddr( device, "vkCreatePipelineLayout" );
1852     vkDestroyPipelineLayout                           = cast( PFN_vkDestroyPipelineLayout                           ) vkGetDeviceProcAddr( device, "vkDestroyPipelineLayout" );
1853     vkCreateSampler                                   = cast( PFN_vkCreateSampler                                   ) vkGetDeviceProcAddr( device, "vkCreateSampler" );
1854     vkDestroySampler                                  = cast( PFN_vkDestroySampler                                  ) vkGetDeviceProcAddr( device, "vkDestroySampler" );
1855     vkCreateDescriptorSetLayout                       = cast( PFN_vkCreateDescriptorSetLayout                       ) vkGetDeviceProcAddr( device, "vkCreateDescriptorSetLayout" );
1856     vkDestroyDescriptorSetLayout                      = cast( PFN_vkDestroyDescriptorSetLayout                      ) vkGetDeviceProcAddr( device, "vkDestroyDescriptorSetLayout" );
1857     vkCreateDescriptorPool                            = cast( PFN_vkCreateDescriptorPool                            ) vkGetDeviceProcAddr( device, "vkCreateDescriptorPool" );
1858     vkDestroyDescriptorPool                           = cast( PFN_vkDestroyDescriptorPool                           ) vkGetDeviceProcAddr( device, "vkDestroyDescriptorPool" );
1859     vkResetDescriptorPool                             = cast( PFN_vkResetDescriptorPool                             ) vkGetDeviceProcAddr( device, "vkResetDescriptorPool" );
1860     vkAllocateDescriptorSets                          = cast( PFN_vkAllocateDescriptorSets                          ) vkGetDeviceProcAddr( device, "vkAllocateDescriptorSets" );
1861     vkFreeDescriptorSets                              = cast( PFN_vkFreeDescriptorSets                              ) vkGetDeviceProcAddr( device, "vkFreeDescriptorSets" );
1862     vkUpdateDescriptorSets                            = cast( PFN_vkUpdateDescriptorSets                            ) vkGetDeviceProcAddr( device, "vkUpdateDescriptorSets" );
1863     vkCreateFramebuffer                               = cast( PFN_vkCreateFramebuffer                               ) vkGetDeviceProcAddr( device, "vkCreateFramebuffer" );
1864     vkDestroyFramebuffer                              = cast( PFN_vkDestroyFramebuffer                              ) vkGetDeviceProcAddr( device, "vkDestroyFramebuffer" );
1865     vkCreateRenderPass                                = cast( PFN_vkCreateRenderPass                                ) vkGetDeviceProcAddr( device, "vkCreateRenderPass" );
1866     vkDestroyRenderPass                               = cast( PFN_vkDestroyRenderPass                               ) vkGetDeviceProcAddr( device, "vkDestroyRenderPass" );
1867     vkGetRenderAreaGranularity                        = cast( PFN_vkGetRenderAreaGranularity                        ) vkGetDeviceProcAddr( device, "vkGetRenderAreaGranularity" );
1868     vkCreateCommandPool                               = cast( PFN_vkCreateCommandPool                               ) vkGetDeviceProcAddr( device, "vkCreateCommandPool" );
1869     vkDestroyCommandPool                              = cast( PFN_vkDestroyCommandPool                              ) vkGetDeviceProcAddr( device, "vkDestroyCommandPool" );
1870     vkResetCommandPool                                = cast( PFN_vkResetCommandPool                                ) vkGetDeviceProcAddr( device, "vkResetCommandPool" );
1871     vkAllocateCommandBuffers                          = cast( PFN_vkAllocateCommandBuffers                          ) vkGetDeviceProcAddr( device, "vkAllocateCommandBuffers" );
1872     vkFreeCommandBuffers                              = cast( PFN_vkFreeCommandBuffers                              ) vkGetDeviceProcAddr( device, "vkFreeCommandBuffers" );
1873     vkBeginCommandBuffer                              = cast( PFN_vkBeginCommandBuffer                              ) vkGetDeviceProcAddr( device, "vkBeginCommandBuffer" );
1874     vkEndCommandBuffer                                = cast( PFN_vkEndCommandBuffer                                ) vkGetDeviceProcAddr( device, "vkEndCommandBuffer" );
1875     vkResetCommandBuffer                              = cast( PFN_vkResetCommandBuffer                              ) vkGetDeviceProcAddr( device, "vkResetCommandBuffer" );
1876     vkCmdBindPipeline                                 = cast( PFN_vkCmdBindPipeline                                 ) vkGetDeviceProcAddr( device, "vkCmdBindPipeline" );
1877     vkCmdSetViewport                                  = cast( PFN_vkCmdSetViewport                                  ) vkGetDeviceProcAddr( device, "vkCmdSetViewport" );
1878     vkCmdSetScissor                                   = cast( PFN_vkCmdSetScissor                                   ) vkGetDeviceProcAddr( device, "vkCmdSetScissor" );
1879     vkCmdSetLineWidth                                 = cast( PFN_vkCmdSetLineWidth                                 ) vkGetDeviceProcAddr( device, "vkCmdSetLineWidth" );
1880     vkCmdSetDepthBias                                 = cast( PFN_vkCmdSetDepthBias                                 ) vkGetDeviceProcAddr( device, "vkCmdSetDepthBias" );
1881     vkCmdSetBlendConstants                            = cast( PFN_vkCmdSetBlendConstants                            ) vkGetDeviceProcAddr( device, "vkCmdSetBlendConstants" );
1882     vkCmdSetDepthBounds                               = cast( PFN_vkCmdSetDepthBounds                               ) vkGetDeviceProcAddr( device, "vkCmdSetDepthBounds" );
1883     vkCmdSetStencilCompareMask                        = cast( PFN_vkCmdSetStencilCompareMask                        ) vkGetDeviceProcAddr( device, "vkCmdSetStencilCompareMask" );
1884     vkCmdSetStencilWriteMask                          = cast( PFN_vkCmdSetStencilWriteMask                          ) vkGetDeviceProcAddr( device, "vkCmdSetStencilWriteMask" );
1885     vkCmdSetStencilReference                          = cast( PFN_vkCmdSetStencilReference                          ) vkGetDeviceProcAddr( device, "vkCmdSetStencilReference" );
1886     vkCmdBindDescriptorSets                           = cast( PFN_vkCmdBindDescriptorSets                           ) vkGetDeviceProcAddr( device, "vkCmdBindDescriptorSets" );
1887     vkCmdBindIndexBuffer                              = cast( PFN_vkCmdBindIndexBuffer                              ) vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer" );
1888     vkCmdBindVertexBuffers                            = cast( PFN_vkCmdBindVertexBuffers                            ) vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers" );
1889     vkCmdDraw                                         = cast( PFN_vkCmdDraw                                         ) vkGetDeviceProcAddr( device, "vkCmdDraw" );
1890     vkCmdDrawIndexed                                  = cast( PFN_vkCmdDrawIndexed                                  ) vkGetDeviceProcAddr( device, "vkCmdDrawIndexed" );
1891     vkCmdDrawIndirect                                 = cast( PFN_vkCmdDrawIndirect                                 ) vkGetDeviceProcAddr( device, "vkCmdDrawIndirect" );
1892     vkCmdDrawIndexedIndirect                          = cast( PFN_vkCmdDrawIndexedIndirect                          ) vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirect" );
1893     vkCmdDispatch                                     = cast( PFN_vkCmdDispatch                                     ) vkGetDeviceProcAddr( device, "vkCmdDispatch" );
1894     vkCmdDispatchIndirect                             = cast( PFN_vkCmdDispatchIndirect                             ) vkGetDeviceProcAddr( device, "vkCmdDispatchIndirect" );
1895     vkCmdCopyBuffer                                   = cast( PFN_vkCmdCopyBuffer                                   ) vkGetDeviceProcAddr( device, "vkCmdCopyBuffer" );
1896     vkCmdCopyImage                                    = cast( PFN_vkCmdCopyImage                                    ) vkGetDeviceProcAddr( device, "vkCmdCopyImage" );
1897     vkCmdBlitImage                                    = cast( PFN_vkCmdBlitImage                                    ) vkGetDeviceProcAddr( device, "vkCmdBlitImage" );
1898     vkCmdCopyBufferToImage                            = cast( PFN_vkCmdCopyBufferToImage                            ) vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage" );
1899     vkCmdCopyImageToBuffer                            = cast( PFN_vkCmdCopyImageToBuffer                            ) vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer" );
1900     vkCmdUpdateBuffer                                 = cast( PFN_vkCmdUpdateBuffer                                 ) vkGetDeviceProcAddr( device, "vkCmdUpdateBuffer" );
1901     vkCmdFillBuffer                                   = cast( PFN_vkCmdFillBuffer                                   ) vkGetDeviceProcAddr( device, "vkCmdFillBuffer" );
1902     vkCmdClearColorImage                              = cast( PFN_vkCmdClearColorImage                              ) vkGetDeviceProcAddr( device, "vkCmdClearColorImage" );
1903     vkCmdClearDepthStencilImage                       = cast( PFN_vkCmdClearDepthStencilImage                       ) vkGetDeviceProcAddr( device, "vkCmdClearDepthStencilImage" );
1904     vkCmdClearAttachments                             = cast( PFN_vkCmdClearAttachments                             ) vkGetDeviceProcAddr( device, "vkCmdClearAttachments" );
1905     vkCmdResolveImage                                 = cast( PFN_vkCmdResolveImage                                 ) vkGetDeviceProcAddr( device, "vkCmdResolveImage" );
1906     vkCmdSetEvent                                     = cast( PFN_vkCmdSetEvent                                     ) vkGetDeviceProcAddr( device, "vkCmdSetEvent" );
1907     vkCmdResetEvent                                   = cast( PFN_vkCmdResetEvent                                   ) vkGetDeviceProcAddr( device, "vkCmdResetEvent" );
1908     vkCmdWaitEvents                                   = cast( PFN_vkCmdWaitEvents                                   ) vkGetDeviceProcAddr( device, "vkCmdWaitEvents" );
1909     vkCmdPipelineBarrier                              = cast( PFN_vkCmdPipelineBarrier                              ) vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier" );
1910     vkCmdBeginQuery                                   = cast( PFN_vkCmdBeginQuery                                   ) vkGetDeviceProcAddr( device, "vkCmdBeginQuery" );
1911     vkCmdEndQuery                                     = cast( PFN_vkCmdEndQuery                                     ) vkGetDeviceProcAddr( device, "vkCmdEndQuery" );
1912     vkCmdResetQueryPool                               = cast( PFN_vkCmdResetQueryPool                               ) vkGetDeviceProcAddr( device, "vkCmdResetQueryPool" );
1913     vkCmdWriteTimestamp                               = cast( PFN_vkCmdWriteTimestamp                               ) vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp" );
1914     vkCmdCopyQueryPoolResults                         = cast( PFN_vkCmdCopyQueryPoolResults                         ) vkGetDeviceProcAddr( device, "vkCmdCopyQueryPoolResults" );
1915     vkCmdPushConstants                                = cast( PFN_vkCmdPushConstants                                ) vkGetDeviceProcAddr( device, "vkCmdPushConstants" );
1916     vkCmdBeginRenderPass                              = cast( PFN_vkCmdBeginRenderPass                              ) vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass" );
1917     vkCmdNextSubpass                                  = cast( PFN_vkCmdNextSubpass                                  ) vkGetDeviceProcAddr( device, "vkCmdNextSubpass" );
1918     vkCmdEndRenderPass                                = cast( PFN_vkCmdEndRenderPass                                ) vkGetDeviceProcAddr( device, "vkCmdEndRenderPass" );
1919     vkCmdExecuteCommands                              = cast( PFN_vkCmdExecuteCommands                              ) vkGetDeviceProcAddr( device, "vkCmdExecuteCommands" );
1920 
1921     // VK_VERSION_1_1
1922     vkBindBufferMemory2                               = cast( PFN_vkBindBufferMemory2                               ) vkGetDeviceProcAddr( device, "vkBindBufferMemory2" );
1923     vkBindImageMemory2                                = cast( PFN_vkBindImageMemory2                                ) vkGetDeviceProcAddr( device, "vkBindImageMemory2" );
1924     vkGetDeviceGroupPeerMemoryFeatures                = cast( PFN_vkGetDeviceGroupPeerMemoryFeatures                ) vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeatures" );
1925     vkCmdSetDeviceMask                                = cast( PFN_vkCmdSetDeviceMask                                ) vkGetDeviceProcAddr( device, "vkCmdSetDeviceMask" );
1926     vkCmdDispatchBase                                 = cast( PFN_vkCmdDispatchBase                                 ) vkGetDeviceProcAddr( device, "vkCmdDispatchBase" );
1927     vkGetImageMemoryRequirements2                     = cast( PFN_vkGetImageMemoryRequirements2                     ) vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2" );
1928     vkGetBufferMemoryRequirements2                    = cast( PFN_vkGetBufferMemoryRequirements2                    ) vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2" );
1929     vkGetImageSparseMemoryRequirements2               = cast( PFN_vkGetImageSparseMemoryRequirements2               ) vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2" );
1930     vkTrimCommandPool                                 = cast( PFN_vkTrimCommandPool                                 ) vkGetDeviceProcAddr( device, "vkTrimCommandPool" );
1931     vkGetDeviceQueue2                                 = cast( PFN_vkGetDeviceQueue2                                 ) vkGetDeviceProcAddr( device, "vkGetDeviceQueue2" );
1932     vkCreateSamplerYcbcrConversion                    = cast( PFN_vkCreateSamplerYcbcrConversion                    ) vkGetDeviceProcAddr( device, "vkCreateSamplerYcbcrConversion" );
1933     vkDestroySamplerYcbcrConversion                   = cast( PFN_vkDestroySamplerYcbcrConversion                   ) vkGetDeviceProcAddr( device, "vkDestroySamplerYcbcrConversion" );
1934     vkCreateDescriptorUpdateTemplate                  = cast( PFN_vkCreateDescriptorUpdateTemplate                  ) vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplate" );
1935     vkDestroyDescriptorUpdateTemplate                 = cast( PFN_vkDestroyDescriptorUpdateTemplate                 ) vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplate" );
1936     vkUpdateDescriptorSetWithTemplate                 = cast( PFN_vkUpdateDescriptorSetWithTemplate                 ) vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplate" );
1937     vkGetDescriptorSetLayoutSupport                   = cast( PFN_vkGetDescriptorSetLayoutSupport                   ) vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSupport" );
1938 
1939     // VK_VERSION_1_2
1940     vkCmdDrawIndirectCount                            = cast( PFN_vkCmdDrawIndirectCount                            ) vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCount" );
1941     vkCmdDrawIndexedIndirectCount                     = cast( PFN_vkCmdDrawIndexedIndirectCount                     ) vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCount" );
1942     vkCreateRenderPass2                               = cast( PFN_vkCreateRenderPass2                               ) vkGetDeviceProcAddr( device, "vkCreateRenderPass2" );
1943     vkCmdBeginRenderPass2                             = cast( PFN_vkCmdBeginRenderPass2                             ) vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass2" );
1944     vkCmdNextSubpass2                                 = cast( PFN_vkCmdNextSubpass2                                 ) vkGetDeviceProcAddr( device, "vkCmdNextSubpass2" );
1945     vkCmdEndRenderPass2                               = cast( PFN_vkCmdEndRenderPass2                               ) vkGetDeviceProcAddr( device, "vkCmdEndRenderPass2" );
1946     vkResetQueryPool                                  = cast( PFN_vkResetQueryPool                                  ) vkGetDeviceProcAddr( device, "vkResetQueryPool" );
1947     vkGetSemaphoreCounterValue                        = cast( PFN_vkGetSemaphoreCounterValue                        ) vkGetDeviceProcAddr( device, "vkGetSemaphoreCounterValue" );
1948     vkWaitSemaphores                                  = cast( PFN_vkWaitSemaphores                                  ) vkGetDeviceProcAddr( device, "vkWaitSemaphores" );
1949     vkSignalSemaphore                                 = cast( PFN_vkSignalSemaphore                                 ) vkGetDeviceProcAddr( device, "vkSignalSemaphore" );
1950     vkGetBufferDeviceAddress                          = cast( PFN_vkGetBufferDeviceAddress                          ) vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddress" );
1951     vkGetBufferOpaqueCaptureAddress                   = cast( PFN_vkGetBufferOpaqueCaptureAddress                   ) vkGetDeviceProcAddr( device, "vkGetBufferOpaqueCaptureAddress" );
1952     vkGetDeviceMemoryOpaqueCaptureAddress             = cast( PFN_vkGetDeviceMemoryOpaqueCaptureAddress             ) vkGetDeviceProcAddr( device, "vkGetDeviceMemoryOpaqueCaptureAddress" );
1953 
1954     // VK_KHR_swapchain
1955     vkCreateSwapchainKHR                              = cast( PFN_vkCreateSwapchainKHR                              ) vkGetDeviceProcAddr( device, "vkCreateSwapchainKHR" );
1956     vkDestroySwapchainKHR                             = cast( PFN_vkDestroySwapchainKHR                             ) vkGetDeviceProcAddr( device, "vkDestroySwapchainKHR" );
1957     vkGetSwapchainImagesKHR                           = cast( PFN_vkGetSwapchainImagesKHR                           ) vkGetDeviceProcAddr( device, "vkGetSwapchainImagesKHR" );
1958     vkAcquireNextImageKHR                             = cast( PFN_vkAcquireNextImageKHR                             ) vkGetDeviceProcAddr( device, "vkAcquireNextImageKHR" );
1959     vkQueuePresentKHR                                 = cast( PFN_vkQueuePresentKHR                                 ) vkGetDeviceProcAddr( device, "vkQueuePresentKHR" );
1960     vkGetDeviceGroupPresentCapabilitiesKHR            = cast( PFN_vkGetDeviceGroupPresentCapabilitiesKHR            ) vkGetDeviceProcAddr( device, "vkGetDeviceGroupPresentCapabilitiesKHR" );
1961     vkGetDeviceGroupSurfacePresentModesKHR            = cast( PFN_vkGetDeviceGroupSurfacePresentModesKHR            ) vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModesKHR" );
1962     vkAcquireNextImage2KHR                            = cast( PFN_vkAcquireNextImage2KHR                            ) vkGetDeviceProcAddr( device, "vkAcquireNextImage2KHR" );
1963 
1964     // VK_KHR_display_swapchain
1965     vkCreateSharedSwapchainsKHR                       = cast( PFN_vkCreateSharedSwapchainsKHR                       ) vkGetDeviceProcAddr( device, "vkCreateSharedSwapchainsKHR" );
1966 
1967     // VK_KHR_dynamic_rendering
1968     vkCmdBeginRenderingKHR                            = cast( PFN_vkCmdBeginRenderingKHR                            ) vkGetDeviceProcAddr( device, "vkCmdBeginRenderingKHR" );
1969     vkCmdEndRenderingKHR                              = cast( PFN_vkCmdEndRenderingKHR                              ) vkGetDeviceProcAddr( device, "vkCmdEndRenderingKHR" );
1970 
1971     // VK_KHR_external_memory_fd
1972     vkGetMemoryFdKHR                                  = cast( PFN_vkGetMemoryFdKHR                                  ) vkGetDeviceProcAddr( device, "vkGetMemoryFdKHR" );
1973     vkGetMemoryFdPropertiesKHR                        = cast( PFN_vkGetMemoryFdPropertiesKHR                        ) vkGetDeviceProcAddr( device, "vkGetMemoryFdPropertiesKHR" );
1974 
1975     // VK_KHR_external_semaphore_fd
1976     vkImportSemaphoreFdKHR                            = cast( PFN_vkImportSemaphoreFdKHR                            ) vkGetDeviceProcAddr( device, "vkImportSemaphoreFdKHR" );
1977     vkGetSemaphoreFdKHR                               = cast( PFN_vkGetSemaphoreFdKHR                               ) vkGetDeviceProcAddr( device, "vkGetSemaphoreFdKHR" );
1978 
1979     // VK_KHR_push_descriptor
1980     vkCmdPushDescriptorSetKHR                         = cast( PFN_vkCmdPushDescriptorSetKHR                         ) vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetKHR" );
1981     vkCmdPushDescriptorSetWithTemplateKHR             = cast( PFN_vkCmdPushDescriptorSetWithTemplateKHR             ) vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplateKHR" );
1982 
1983     // VK_KHR_shared_presentable_image
1984     vkGetSwapchainStatusKHR                           = cast( PFN_vkGetSwapchainStatusKHR                           ) vkGetDeviceProcAddr( device, "vkGetSwapchainStatusKHR" );
1985 
1986     // VK_KHR_external_fence_fd
1987     vkImportFenceFdKHR                                = cast( PFN_vkImportFenceFdKHR                                ) vkGetDeviceProcAddr( device, "vkImportFenceFdKHR" );
1988     vkGetFenceFdKHR                                   = cast( PFN_vkGetFenceFdKHR                                   ) vkGetDeviceProcAddr( device, "vkGetFenceFdKHR" );
1989 
1990     // VK_KHR_performance_query
1991     vkAcquireProfilingLockKHR                         = cast( PFN_vkAcquireProfilingLockKHR                         ) vkGetDeviceProcAddr( device, "vkAcquireProfilingLockKHR" );
1992     vkReleaseProfilingLockKHR                         = cast( PFN_vkReleaseProfilingLockKHR                         ) vkGetDeviceProcAddr( device, "vkReleaseProfilingLockKHR" );
1993 
1994     // VK_KHR_fragment_shading_rate
1995     vkCmdSetFragmentShadingRateKHR                    = cast( PFN_vkCmdSetFragmentShadingRateKHR                    ) vkGetDeviceProcAddr( device, "vkCmdSetFragmentShadingRateKHR" );
1996 
1997     // VK_KHR_present_wait
1998     vkWaitForPresentKHR                               = cast( PFN_vkWaitForPresentKHR                               ) vkGetDeviceProcAddr( device, "vkWaitForPresentKHR" );
1999 
2000     // VK_KHR_deferred_host_operations
2001     vkCreateDeferredOperationKHR                      = cast( PFN_vkCreateDeferredOperationKHR                      ) vkGetDeviceProcAddr( device, "vkCreateDeferredOperationKHR" );
2002     vkDestroyDeferredOperationKHR                     = cast( PFN_vkDestroyDeferredOperationKHR                     ) vkGetDeviceProcAddr( device, "vkDestroyDeferredOperationKHR" );
2003     vkGetDeferredOperationMaxConcurrencyKHR           = cast( PFN_vkGetDeferredOperationMaxConcurrencyKHR           ) vkGetDeviceProcAddr( device, "vkGetDeferredOperationMaxConcurrencyKHR" );
2004     vkGetDeferredOperationResultKHR                   = cast( PFN_vkGetDeferredOperationResultKHR                   ) vkGetDeviceProcAddr( device, "vkGetDeferredOperationResultKHR" );
2005     vkDeferredOperationJoinKHR                        = cast( PFN_vkDeferredOperationJoinKHR                        ) vkGetDeviceProcAddr( device, "vkDeferredOperationJoinKHR" );
2006 
2007     // VK_KHR_pipeline_executable_properties
2008     vkGetPipelineExecutablePropertiesKHR              = cast( PFN_vkGetPipelineExecutablePropertiesKHR              ) vkGetDeviceProcAddr( device, "vkGetPipelineExecutablePropertiesKHR" );
2009     vkGetPipelineExecutableStatisticsKHR              = cast( PFN_vkGetPipelineExecutableStatisticsKHR              ) vkGetDeviceProcAddr( device, "vkGetPipelineExecutableStatisticsKHR" );
2010     vkGetPipelineExecutableInternalRepresentationsKHR = cast( PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) vkGetDeviceProcAddr( device, "vkGetPipelineExecutableInternalRepresentationsKHR" );
2011 
2012     // VK_KHR_synchronization2
2013     vkCmdSetEvent2KHR                                 = cast( PFN_vkCmdSetEvent2KHR                                 ) vkGetDeviceProcAddr( device, "vkCmdSetEvent2KHR" );
2014     vkCmdResetEvent2KHR                               = cast( PFN_vkCmdResetEvent2KHR                               ) vkGetDeviceProcAddr( device, "vkCmdResetEvent2KHR" );
2015     vkCmdWaitEvents2KHR                               = cast( PFN_vkCmdWaitEvents2KHR                               ) vkGetDeviceProcAddr( device, "vkCmdWaitEvents2KHR" );
2016     vkCmdPipelineBarrier2KHR                          = cast( PFN_vkCmdPipelineBarrier2KHR                          ) vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier2KHR" );
2017     vkCmdWriteTimestamp2KHR                           = cast( PFN_vkCmdWriteTimestamp2KHR                           ) vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp2KHR" );
2018     vkQueueSubmit2KHR                                 = cast( PFN_vkQueueSubmit2KHR                                 ) vkGetDeviceProcAddr( device, "vkQueueSubmit2KHR" );
2019     vkCmdWriteBufferMarker2AMD                        = cast( PFN_vkCmdWriteBufferMarker2AMD                        ) vkGetDeviceProcAddr( device, "vkCmdWriteBufferMarker2AMD" );
2020     vkGetQueueCheckpointData2NV                       = cast( PFN_vkGetQueueCheckpointData2NV                       ) vkGetDeviceProcAddr( device, "vkGetQueueCheckpointData2NV" );
2021 
2022     // VK_KHR_copy_commands2
2023     vkCmdCopyBuffer2KHR                               = cast( PFN_vkCmdCopyBuffer2KHR                               ) vkGetDeviceProcAddr( device, "vkCmdCopyBuffer2KHR" );
2024     vkCmdCopyImage2KHR                                = cast( PFN_vkCmdCopyImage2KHR                                ) vkGetDeviceProcAddr( device, "vkCmdCopyImage2KHR" );
2025     vkCmdCopyBufferToImage2KHR                        = cast( PFN_vkCmdCopyBufferToImage2KHR                        ) vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage2KHR" );
2026     vkCmdCopyImageToBuffer2KHR                        = cast( PFN_vkCmdCopyImageToBuffer2KHR                        ) vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer2KHR" );
2027     vkCmdBlitImage2KHR                                = cast( PFN_vkCmdBlitImage2KHR                                ) vkGetDeviceProcAddr( device, "vkCmdBlitImage2KHR" );
2028     vkCmdResolveImage2KHR                             = cast( PFN_vkCmdResolveImage2KHR                             ) vkGetDeviceProcAddr( device, "vkCmdResolveImage2KHR" );
2029 
2030     // VK_KHR_maintenance4
2031     vkGetDeviceBufferMemoryRequirementsKHR            = cast( PFN_vkGetDeviceBufferMemoryRequirementsKHR            ) vkGetDeviceProcAddr( device, "vkGetDeviceBufferMemoryRequirementsKHR" );
2032     vkGetDeviceImageMemoryRequirementsKHR             = cast( PFN_vkGetDeviceImageMemoryRequirementsKHR             ) vkGetDeviceProcAddr( device, "vkGetDeviceImageMemoryRequirementsKHR" );
2033     vkGetDeviceImageSparseMemoryRequirementsKHR       = cast( PFN_vkGetDeviceImageSparseMemoryRequirementsKHR       ) vkGetDeviceProcAddr( device, "vkGetDeviceImageSparseMemoryRequirementsKHR" );
2034 
2035     // VK_EXT_debug_marker
2036     vkDebugMarkerSetObjectTagEXT                      = cast( PFN_vkDebugMarkerSetObjectTagEXT                      ) vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectTagEXT" );
2037     vkDebugMarkerSetObjectNameEXT                     = cast( PFN_vkDebugMarkerSetObjectNameEXT                     ) vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectNameEXT" );
2038     vkCmdDebugMarkerBeginEXT                          = cast( PFN_vkCmdDebugMarkerBeginEXT                          ) vkGetDeviceProcAddr( device, "vkCmdDebugMarkerBeginEXT" );
2039     vkCmdDebugMarkerEndEXT                            = cast( PFN_vkCmdDebugMarkerEndEXT                            ) vkGetDeviceProcAddr( device, "vkCmdDebugMarkerEndEXT" );
2040     vkCmdDebugMarkerInsertEXT                         = cast( PFN_vkCmdDebugMarkerInsertEXT                         ) vkGetDeviceProcAddr( device, "vkCmdDebugMarkerInsertEXT" );
2041 
2042     // VK_EXT_transform_feedback
2043     vkCmdBindTransformFeedbackBuffersEXT              = cast( PFN_vkCmdBindTransformFeedbackBuffersEXT              ) vkGetDeviceProcAddr( device, "vkCmdBindTransformFeedbackBuffersEXT" );
2044     vkCmdBeginTransformFeedbackEXT                    = cast( PFN_vkCmdBeginTransformFeedbackEXT                    ) vkGetDeviceProcAddr( device, "vkCmdBeginTransformFeedbackEXT" );
2045     vkCmdEndTransformFeedbackEXT                      = cast( PFN_vkCmdEndTransformFeedbackEXT                      ) vkGetDeviceProcAddr( device, "vkCmdEndTransformFeedbackEXT" );
2046     vkCmdBeginQueryIndexedEXT                         = cast( PFN_vkCmdBeginQueryIndexedEXT                         ) vkGetDeviceProcAddr( device, "vkCmdBeginQueryIndexedEXT" );
2047     vkCmdEndQueryIndexedEXT                           = cast( PFN_vkCmdEndQueryIndexedEXT                           ) vkGetDeviceProcAddr( device, "vkCmdEndQueryIndexedEXT" );
2048     vkCmdDrawIndirectByteCountEXT                     = cast( PFN_vkCmdDrawIndirectByteCountEXT                     ) vkGetDeviceProcAddr( device, "vkCmdDrawIndirectByteCountEXT" );
2049 
2050     // VK_NVX_binary_import
2051     vkCreateCuModuleNVX                               = cast( PFN_vkCreateCuModuleNVX                               ) vkGetDeviceProcAddr( device, "vkCreateCuModuleNVX" );
2052     vkCreateCuFunctionNVX                             = cast( PFN_vkCreateCuFunctionNVX                             ) vkGetDeviceProcAddr( device, "vkCreateCuFunctionNVX" );
2053     vkDestroyCuModuleNVX                              = cast( PFN_vkDestroyCuModuleNVX                              ) vkGetDeviceProcAddr( device, "vkDestroyCuModuleNVX" );
2054     vkDestroyCuFunctionNVX                            = cast( PFN_vkDestroyCuFunctionNVX                            ) vkGetDeviceProcAddr( device, "vkDestroyCuFunctionNVX" );
2055     vkCmdCuLaunchKernelNVX                            = cast( PFN_vkCmdCuLaunchKernelNVX                            ) vkGetDeviceProcAddr( device, "vkCmdCuLaunchKernelNVX" );
2056 
2057     // VK_NVX_image_view_handle
2058     vkGetImageViewHandleNVX                           = cast( PFN_vkGetImageViewHandleNVX                           ) vkGetDeviceProcAddr( device, "vkGetImageViewHandleNVX" );
2059     vkGetImageViewAddressNVX                          = cast( PFN_vkGetImageViewAddressNVX                          ) vkGetDeviceProcAddr( device, "vkGetImageViewAddressNVX" );
2060 
2061     // VK_AMD_shader_info
2062     vkGetShaderInfoAMD                                = cast( PFN_vkGetShaderInfoAMD                                ) vkGetDeviceProcAddr( device, "vkGetShaderInfoAMD" );
2063 
2064     // VK_EXT_conditional_rendering
2065     vkCmdBeginConditionalRenderingEXT                 = cast( PFN_vkCmdBeginConditionalRenderingEXT                 ) vkGetDeviceProcAddr( device, "vkCmdBeginConditionalRenderingEXT" );
2066     vkCmdEndConditionalRenderingEXT                   = cast( PFN_vkCmdEndConditionalRenderingEXT                   ) vkGetDeviceProcAddr( device, "vkCmdEndConditionalRenderingEXT" );
2067 
2068     // VK_NV_clip_space_w_scaling
2069     vkCmdSetViewportWScalingNV                        = cast( PFN_vkCmdSetViewportWScalingNV                        ) vkGetDeviceProcAddr( device, "vkCmdSetViewportWScalingNV" );
2070 
2071     // VK_EXT_display_control
2072     vkDisplayPowerControlEXT                          = cast( PFN_vkDisplayPowerControlEXT                          ) vkGetDeviceProcAddr( device, "vkDisplayPowerControlEXT" );
2073     vkRegisterDeviceEventEXT                          = cast( PFN_vkRegisterDeviceEventEXT                          ) vkGetDeviceProcAddr( device, "vkRegisterDeviceEventEXT" );
2074     vkRegisterDisplayEventEXT                         = cast( PFN_vkRegisterDisplayEventEXT                         ) vkGetDeviceProcAddr( device, "vkRegisterDisplayEventEXT" );
2075     vkGetSwapchainCounterEXT                          = cast( PFN_vkGetSwapchainCounterEXT                          ) vkGetDeviceProcAddr( device, "vkGetSwapchainCounterEXT" );
2076 
2077     // VK_GOOGLE_display_timing
2078     vkGetRefreshCycleDurationGOOGLE                   = cast( PFN_vkGetRefreshCycleDurationGOOGLE                   ) vkGetDeviceProcAddr( device, "vkGetRefreshCycleDurationGOOGLE" );
2079     vkGetPastPresentationTimingGOOGLE                 = cast( PFN_vkGetPastPresentationTimingGOOGLE                 ) vkGetDeviceProcAddr( device, "vkGetPastPresentationTimingGOOGLE" );
2080 
2081     // VK_EXT_discard_rectangles
2082     vkCmdSetDiscardRectangleEXT                       = cast( PFN_vkCmdSetDiscardRectangleEXT                       ) vkGetDeviceProcAddr( device, "vkCmdSetDiscardRectangleEXT" );
2083 
2084     // VK_EXT_hdr_metadata
2085     vkSetHdrMetadataEXT                               = cast( PFN_vkSetHdrMetadataEXT                               ) vkGetDeviceProcAddr( device, "vkSetHdrMetadataEXT" );
2086 
2087     // VK_EXT_debug_utils
2088     vkSetDebugUtilsObjectNameEXT                      = cast( PFN_vkSetDebugUtilsObjectNameEXT                      ) vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectNameEXT" );
2089     vkSetDebugUtilsObjectTagEXT                       = cast( PFN_vkSetDebugUtilsObjectTagEXT                       ) vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectTagEXT" );
2090     vkQueueBeginDebugUtilsLabelEXT                    = cast( PFN_vkQueueBeginDebugUtilsLabelEXT                    ) vkGetDeviceProcAddr( device, "vkQueueBeginDebugUtilsLabelEXT" );
2091     vkQueueEndDebugUtilsLabelEXT                      = cast( PFN_vkQueueEndDebugUtilsLabelEXT                      ) vkGetDeviceProcAddr( device, "vkQueueEndDebugUtilsLabelEXT" );
2092     vkQueueInsertDebugUtilsLabelEXT                   = cast( PFN_vkQueueInsertDebugUtilsLabelEXT                   ) vkGetDeviceProcAddr( device, "vkQueueInsertDebugUtilsLabelEXT" );
2093     vkCmdBeginDebugUtilsLabelEXT                      = cast( PFN_vkCmdBeginDebugUtilsLabelEXT                      ) vkGetDeviceProcAddr( device, "vkCmdBeginDebugUtilsLabelEXT" );
2094     vkCmdEndDebugUtilsLabelEXT                        = cast( PFN_vkCmdEndDebugUtilsLabelEXT                        ) vkGetDeviceProcAddr( device, "vkCmdEndDebugUtilsLabelEXT" );
2095     vkCmdInsertDebugUtilsLabelEXT                     = cast( PFN_vkCmdInsertDebugUtilsLabelEXT                     ) vkGetDeviceProcAddr( device, "vkCmdInsertDebugUtilsLabelEXT" );
2096 
2097     // VK_EXT_sample_locations
2098     vkCmdSetSampleLocationsEXT                        = cast( PFN_vkCmdSetSampleLocationsEXT                        ) vkGetDeviceProcAddr( device, "vkCmdSetSampleLocationsEXT" );
2099 
2100     // VK_EXT_image_drm_format_modifier
2101     vkGetImageDrmFormatModifierPropertiesEXT          = cast( PFN_vkGetImageDrmFormatModifierPropertiesEXT          ) vkGetDeviceProcAddr( device, "vkGetImageDrmFormatModifierPropertiesEXT" );
2102 
2103     // VK_EXT_validation_cache
2104     vkCreateValidationCacheEXT                        = cast( PFN_vkCreateValidationCacheEXT                        ) vkGetDeviceProcAddr( device, "vkCreateValidationCacheEXT" );
2105     vkDestroyValidationCacheEXT                       = cast( PFN_vkDestroyValidationCacheEXT                       ) vkGetDeviceProcAddr( device, "vkDestroyValidationCacheEXT" );
2106     vkMergeValidationCachesEXT                        = cast( PFN_vkMergeValidationCachesEXT                        ) vkGetDeviceProcAddr( device, "vkMergeValidationCachesEXT" );
2107     vkGetValidationCacheDataEXT                       = cast( PFN_vkGetValidationCacheDataEXT                       ) vkGetDeviceProcAddr( device, "vkGetValidationCacheDataEXT" );
2108 
2109     // VK_NV_shading_rate_image
2110     vkCmdBindShadingRateImageNV                       = cast( PFN_vkCmdBindShadingRateImageNV                       ) vkGetDeviceProcAddr( device, "vkCmdBindShadingRateImageNV" );
2111     vkCmdSetViewportShadingRatePaletteNV              = cast( PFN_vkCmdSetViewportShadingRatePaletteNV              ) vkGetDeviceProcAddr( device, "vkCmdSetViewportShadingRatePaletteNV" );
2112     vkCmdSetCoarseSampleOrderNV                       = cast( PFN_vkCmdSetCoarseSampleOrderNV                       ) vkGetDeviceProcAddr( device, "vkCmdSetCoarseSampleOrderNV" );
2113 
2114     // VK_NV_ray_tracing
2115     vkCreateAccelerationStructureNV                   = cast( PFN_vkCreateAccelerationStructureNV                   ) vkGetDeviceProcAddr( device, "vkCreateAccelerationStructureNV" );
2116     vkDestroyAccelerationStructureNV                  = cast( PFN_vkDestroyAccelerationStructureNV                  ) vkGetDeviceProcAddr( device, "vkDestroyAccelerationStructureNV" );
2117     vkGetAccelerationStructureMemoryRequirementsNV    = cast( PFN_vkGetAccelerationStructureMemoryRequirementsNV    ) vkGetDeviceProcAddr( device, "vkGetAccelerationStructureMemoryRequirementsNV" );
2118     vkBindAccelerationStructureMemoryNV               = cast( PFN_vkBindAccelerationStructureMemoryNV               ) vkGetDeviceProcAddr( device, "vkBindAccelerationStructureMemoryNV" );
2119     vkCmdBuildAccelerationStructureNV                 = cast( PFN_vkCmdBuildAccelerationStructureNV                 ) vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructureNV" );
2120     vkCmdCopyAccelerationStructureNV                  = cast( PFN_vkCmdCopyAccelerationStructureNV                  ) vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureNV" );
2121     vkCmdTraceRaysNV                                  = cast( PFN_vkCmdTraceRaysNV                                  ) vkGetDeviceProcAddr( device, "vkCmdTraceRaysNV" );
2122     vkCreateRayTracingPipelinesNV                     = cast( PFN_vkCreateRayTracingPipelinesNV                     ) vkGetDeviceProcAddr( device, "vkCreateRayTracingPipelinesNV" );
2123     vkGetRayTracingShaderGroupHandlesKHR              = cast( PFN_vkGetRayTracingShaderGroupHandlesKHR              ) vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupHandlesKHR" );
2124     vkGetAccelerationStructureHandleNV                = cast( PFN_vkGetAccelerationStructureHandleNV                ) vkGetDeviceProcAddr( device, "vkGetAccelerationStructureHandleNV" );
2125     vkCmdWriteAccelerationStructuresPropertiesNV      = cast( PFN_vkCmdWriteAccelerationStructuresPropertiesNV      ) vkGetDeviceProcAddr( device, "vkCmdWriteAccelerationStructuresPropertiesNV" );
2126     vkCompileDeferredNV                               = cast( PFN_vkCompileDeferredNV                               ) vkGetDeviceProcAddr( device, "vkCompileDeferredNV" );
2127 
2128     // VK_EXT_external_memory_host
2129     vkGetMemoryHostPointerPropertiesEXT               = cast( PFN_vkGetMemoryHostPointerPropertiesEXT               ) vkGetDeviceProcAddr( device, "vkGetMemoryHostPointerPropertiesEXT" );
2130 
2131     // VK_AMD_buffer_marker
2132     vkCmdWriteBufferMarkerAMD                         = cast( PFN_vkCmdWriteBufferMarkerAMD                         ) vkGetDeviceProcAddr( device, "vkCmdWriteBufferMarkerAMD" );
2133 
2134     // VK_EXT_calibrated_timestamps
2135     vkGetCalibratedTimestampsEXT                      = cast( PFN_vkGetCalibratedTimestampsEXT                      ) vkGetDeviceProcAddr( device, "vkGetCalibratedTimestampsEXT" );
2136 
2137     // VK_NV_mesh_shader
2138     vkCmdDrawMeshTasksNV                              = cast( PFN_vkCmdDrawMeshTasksNV                              ) vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksNV" );
2139     vkCmdDrawMeshTasksIndirectNV                      = cast( PFN_vkCmdDrawMeshTasksIndirectNV                      ) vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectNV" );
2140     vkCmdDrawMeshTasksIndirectCountNV                 = cast( PFN_vkCmdDrawMeshTasksIndirectCountNV                 ) vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectCountNV" );
2141 
2142     // VK_NV_scissor_exclusive
2143     vkCmdSetExclusiveScissorNV                        = cast( PFN_vkCmdSetExclusiveScissorNV                        ) vkGetDeviceProcAddr( device, "vkCmdSetExclusiveScissorNV" );
2144 
2145     // VK_NV_device_diagnostic_checkpoints
2146     vkCmdSetCheckpointNV                              = cast( PFN_vkCmdSetCheckpointNV                              ) vkGetDeviceProcAddr( device, "vkCmdSetCheckpointNV" );
2147     vkGetQueueCheckpointDataNV                        = cast( PFN_vkGetQueueCheckpointDataNV                        ) vkGetDeviceProcAddr( device, "vkGetQueueCheckpointDataNV" );
2148 
2149     // VK_INTEL_performance_query
2150     vkInitializePerformanceApiINTEL                   = cast( PFN_vkInitializePerformanceApiINTEL                   ) vkGetDeviceProcAddr( device, "vkInitializePerformanceApiINTEL" );
2151     vkUninitializePerformanceApiINTEL                 = cast( PFN_vkUninitializePerformanceApiINTEL                 ) vkGetDeviceProcAddr( device, "vkUninitializePerformanceApiINTEL" );
2152     vkCmdSetPerformanceMarkerINTEL                    = cast( PFN_vkCmdSetPerformanceMarkerINTEL                    ) vkGetDeviceProcAddr( device, "vkCmdSetPerformanceMarkerINTEL" );
2153     vkCmdSetPerformanceStreamMarkerINTEL              = cast( PFN_vkCmdSetPerformanceStreamMarkerINTEL              ) vkGetDeviceProcAddr( device, "vkCmdSetPerformanceStreamMarkerINTEL" );
2154     vkCmdSetPerformanceOverrideINTEL                  = cast( PFN_vkCmdSetPerformanceOverrideINTEL                  ) vkGetDeviceProcAddr( device, "vkCmdSetPerformanceOverrideINTEL" );
2155     vkAcquirePerformanceConfigurationINTEL            = cast( PFN_vkAcquirePerformanceConfigurationINTEL            ) vkGetDeviceProcAddr( device, "vkAcquirePerformanceConfigurationINTEL" );
2156     vkReleasePerformanceConfigurationINTEL            = cast( PFN_vkReleasePerformanceConfigurationINTEL            ) vkGetDeviceProcAddr( device, "vkReleasePerformanceConfigurationINTEL" );
2157     vkQueueSetPerformanceConfigurationINTEL           = cast( PFN_vkQueueSetPerformanceConfigurationINTEL           ) vkGetDeviceProcAddr( device, "vkQueueSetPerformanceConfigurationINTEL" );
2158     vkGetPerformanceParameterINTEL                    = cast( PFN_vkGetPerformanceParameterINTEL                    ) vkGetDeviceProcAddr( device, "vkGetPerformanceParameterINTEL" );
2159 
2160     // VK_AMD_display_native_hdr
2161     vkSetLocalDimmingAMD                              = cast( PFN_vkSetLocalDimmingAMD                              ) vkGetDeviceProcAddr( device, "vkSetLocalDimmingAMD" );
2162 
2163     // VK_EXT_line_rasterization
2164     vkCmdSetLineStippleEXT                            = cast( PFN_vkCmdSetLineStippleEXT                            ) vkGetDeviceProcAddr( device, "vkCmdSetLineStippleEXT" );
2165 
2166     // VK_EXT_extended_dynamic_state
2167     vkCmdSetCullModeEXT                               = cast( PFN_vkCmdSetCullModeEXT                               ) vkGetDeviceProcAddr( device, "vkCmdSetCullModeEXT" );
2168     vkCmdSetFrontFaceEXT                              = cast( PFN_vkCmdSetFrontFaceEXT                              ) vkGetDeviceProcAddr( device, "vkCmdSetFrontFaceEXT" );
2169     vkCmdSetPrimitiveTopologyEXT                      = cast( PFN_vkCmdSetPrimitiveTopologyEXT                      ) vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveTopologyEXT" );
2170     vkCmdSetViewportWithCountEXT                      = cast( PFN_vkCmdSetViewportWithCountEXT                      ) vkGetDeviceProcAddr( device, "vkCmdSetViewportWithCountEXT" );
2171     vkCmdSetScissorWithCountEXT                       = cast( PFN_vkCmdSetScissorWithCountEXT                       ) vkGetDeviceProcAddr( device, "vkCmdSetScissorWithCountEXT" );
2172     vkCmdBindVertexBuffers2EXT                        = cast( PFN_vkCmdBindVertexBuffers2EXT                        ) vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers2EXT" );
2173     vkCmdSetDepthTestEnableEXT                        = cast( PFN_vkCmdSetDepthTestEnableEXT                        ) vkGetDeviceProcAddr( device, "vkCmdSetDepthTestEnableEXT" );
2174     vkCmdSetDepthWriteEnableEXT                       = cast( PFN_vkCmdSetDepthWriteEnableEXT                       ) vkGetDeviceProcAddr( device, "vkCmdSetDepthWriteEnableEXT" );
2175     vkCmdSetDepthCompareOpEXT                         = cast( PFN_vkCmdSetDepthCompareOpEXT                         ) vkGetDeviceProcAddr( device, "vkCmdSetDepthCompareOpEXT" );
2176     vkCmdSetDepthBoundsTestEnableEXT                  = cast( PFN_vkCmdSetDepthBoundsTestEnableEXT                  ) vkGetDeviceProcAddr( device, "vkCmdSetDepthBoundsTestEnableEXT" );
2177     vkCmdSetStencilTestEnableEXT                      = cast( PFN_vkCmdSetStencilTestEnableEXT                      ) vkGetDeviceProcAddr( device, "vkCmdSetStencilTestEnableEXT" );
2178     vkCmdSetStencilOpEXT                              = cast( PFN_vkCmdSetStencilOpEXT                              ) vkGetDeviceProcAddr( device, "vkCmdSetStencilOpEXT" );
2179 
2180     // VK_NV_device_generated_commands
2181     vkGetGeneratedCommandsMemoryRequirementsNV        = cast( PFN_vkGetGeneratedCommandsMemoryRequirementsNV        ) vkGetDeviceProcAddr( device, "vkGetGeneratedCommandsMemoryRequirementsNV" );
2182     vkCmdPreprocessGeneratedCommandsNV                = cast( PFN_vkCmdPreprocessGeneratedCommandsNV                ) vkGetDeviceProcAddr( device, "vkCmdPreprocessGeneratedCommandsNV" );
2183     vkCmdExecuteGeneratedCommandsNV                   = cast( PFN_vkCmdExecuteGeneratedCommandsNV                   ) vkGetDeviceProcAddr( device, "vkCmdExecuteGeneratedCommandsNV" );
2184     vkCmdBindPipelineShaderGroupNV                    = cast( PFN_vkCmdBindPipelineShaderGroupNV                    ) vkGetDeviceProcAddr( device, "vkCmdBindPipelineShaderGroupNV" );
2185     vkCreateIndirectCommandsLayoutNV                  = cast( PFN_vkCreateIndirectCommandsLayoutNV                  ) vkGetDeviceProcAddr( device, "vkCreateIndirectCommandsLayoutNV" );
2186     vkDestroyIndirectCommandsLayoutNV                 = cast( PFN_vkDestroyIndirectCommandsLayoutNV                 ) vkGetDeviceProcAddr( device, "vkDestroyIndirectCommandsLayoutNV" );
2187 
2188     // VK_EXT_private_data
2189     vkCreatePrivateDataSlotEXT                        = cast( PFN_vkCreatePrivateDataSlotEXT                        ) vkGetDeviceProcAddr( device, "vkCreatePrivateDataSlotEXT" );
2190     vkDestroyPrivateDataSlotEXT                       = cast( PFN_vkDestroyPrivateDataSlotEXT                       ) vkGetDeviceProcAddr( device, "vkDestroyPrivateDataSlotEXT" );
2191     vkSetPrivateDataEXT                               = cast( PFN_vkSetPrivateDataEXT                               ) vkGetDeviceProcAddr( device, "vkSetPrivateDataEXT" );
2192     vkGetPrivateDataEXT                               = cast( PFN_vkGetPrivateDataEXT                               ) vkGetDeviceProcAddr( device, "vkGetPrivateDataEXT" );
2193 
2194     // VK_NV_fragment_shading_rate_enums
2195     vkCmdSetFragmentShadingRateEnumNV                 = cast( PFN_vkCmdSetFragmentShadingRateEnumNV                 ) vkGetDeviceProcAddr( device, "vkCmdSetFragmentShadingRateEnumNV" );
2196 
2197     // VK_EXT_vertex_input_dynamic_state
2198     vkCmdSetVertexInputEXT                            = cast( PFN_vkCmdSetVertexInputEXT                            ) vkGetDeviceProcAddr( device, "vkCmdSetVertexInputEXT" );
2199 
2200     // VK_HUAWEI_subpass_shading
2201     vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI   = cast( PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI   ) vkGetDeviceProcAddr( device, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI" );
2202     vkCmdSubpassShadingHUAWEI                         = cast( PFN_vkCmdSubpassShadingHUAWEI                         ) vkGetDeviceProcAddr( device, "vkCmdSubpassShadingHUAWEI" );
2203 
2204     // VK_HUAWEI_invocation_mask
2205     vkCmdBindInvocationMaskHUAWEI                     = cast( PFN_vkCmdBindInvocationMaskHUAWEI                     ) vkGetDeviceProcAddr( device, "vkCmdBindInvocationMaskHUAWEI" );
2206 
2207     // VK_NV_external_memory_rdma
2208     vkGetMemoryRemoteAddressNV                        = cast( PFN_vkGetMemoryRemoteAddressNV                        ) vkGetDeviceProcAddr( device, "vkGetMemoryRemoteAddressNV" );
2209 
2210     // VK_EXT_extended_dynamic_state2
2211     vkCmdSetPatchControlPointsEXT                     = cast( PFN_vkCmdSetPatchControlPointsEXT                     ) vkGetDeviceProcAddr( device, "vkCmdSetPatchControlPointsEXT" );
2212     vkCmdSetRasterizerDiscardEnableEXT                = cast( PFN_vkCmdSetRasterizerDiscardEnableEXT                ) vkGetDeviceProcAddr( device, "vkCmdSetRasterizerDiscardEnableEXT" );
2213     vkCmdSetDepthBiasEnableEXT                        = cast( PFN_vkCmdSetDepthBiasEnableEXT                        ) vkGetDeviceProcAddr( device, "vkCmdSetDepthBiasEnableEXT" );
2214     vkCmdSetLogicOpEXT                                = cast( PFN_vkCmdSetLogicOpEXT                                ) vkGetDeviceProcAddr( device, "vkCmdSetLogicOpEXT" );
2215     vkCmdSetPrimitiveRestartEnableEXT                 = cast( PFN_vkCmdSetPrimitiveRestartEnableEXT                 ) vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveRestartEnableEXT" );
2216 
2217     // VK_EXT_color_write_enable
2218     vkCmdSetColorWriteEnableEXT                       = cast( PFN_vkCmdSetColorWriteEnableEXT                       ) vkGetDeviceProcAddr( device, "vkCmdSetColorWriteEnableEXT" );
2219 
2220     // VK_EXT_multi_draw
2221     vkCmdDrawMultiEXT                                 = cast( PFN_vkCmdDrawMultiEXT                                 ) vkGetDeviceProcAddr( device, "vkCmdDrawMultiEXT" );
2222     vkCmdDrawMultiIndexedEXT                          = cast( PFN_vkCmdDrawMultiIndexedEXT                          ) vkGetDeviceProcAddr( device, "vkCmdDrawMultiIndexedEXT" );
2223 
2224     // VK_EXT_pageable_device_local_memory
2225     vkSetDeviceMemoryPriorityEXT                      = cast( PFN_vkSetDeviceMemoryPriorityEXT                      ) vkGetDeviceProcAddr( device, "vkSetDeviceMemoryPriorityEXT" );
2226 
2227     // VK_KHR_acceleration_structure
2228     vkCreateAccelerationStructureKHR                  = cast( PFN_vkCreateAccelerationStructureKHR                  ) vkGetDeviceProcAddr( device, "vkCreateAccelerationStructureKHR" );
2229     vkDestroyAccelerationStructureKHR                 = cast( PFN_vkDestroyAccelerationStructureKHR                 ) vkGetDeviceProcAddr( device, "vkDestroyAccelerationStructureKHR" );
2230     vkCmdBuildAccelerationStructuresKHR               = cast( PFN_vkCmdBuildAccelerationStructuresKHR               ) vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructuresKHR" );
2231     vkCmdBuildAccelerationStructuresIndirectKHR       = cast( PFN_vkCmdBuildAccelerationStructuresIndirectKHR       ) vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructuresIndirectKHR" );
2232     vkBuildAccelerationStructuresKHR                  = cast( PFN_vkBuildAccelerationStructuresKHR                  ) vkGetDeviceProcAddr( device, "vkBuildAccelerationStructuresKHR" );
2233     vkCopyAccelerationStructureKHR                    = cast( PFN_vkCopyAccelerationStructureKHR                    ) vkGetDeviceProcAddr( device, "vkCopyAccelerationStructureKHR" );
2234     vkCopyAccelerationStructureToMemoryKHR            = cast( PFN_vkCopyAccelerationStructureToMemoryKHR            ) vkGetDeviceProcAddr( device, "vkCopyAccelerationStructureToMemoryKHR" );
2235     vkCopyMemoryToAccelerationStructureKHR            = cast( PFN_vkCopyMemoryToAccelerationStructureKHR            ) vkGetDeviceProcAddr( device, "vkCopyMemoryToAccelerationStructureKHR" );
2236     vkWriteAccelerationStructuresPropertiesKHR        = cast( PFN_vkWriteAccelerationStructuresPropertiesKHR        ) vkGetDeviceProcAddr( device, "vkWriteAccelerationStructuresPropertiesKHR" );
2237     vkCmdCopyAccelerationStructureKHR                 = cast( PFN_vkCmdCopyAccelerationStructureKHR                 ) vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureKHR" );
2238     vkCmdCopyAccelerationStructureToMemoryKHR         = cast( PFN_vkCmdCopyAccelerationStructureToMemoryKHR         ) vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureToMemoryKHR" );
2239     vkCmdCopyMemoryToAccelerationStructureKHR         = cast( PFN_vkCmdCopyMemoryToAccelerationStructureKHR         ) vkGetDeviceProcAddr( device, "vkCmdCopyMemoryToAccelerationStructureKHR" );
2240     vkGetAccelerationStructureDeviceAddressKHR        = cast( PFN_vkGetAccelerationStructureDeviceAddressKHR        ) vkGetDeviceProcAddr( device, "vkGetAccelerationStructureDeviceAddressKHR" );
2241     vkCmdWriteAccelerationStructuresPropertiesKHR     = cast( PFN_vkCmdWriteAccelerationStructuresPropertiesKHR     ) vkGetDeviceProcAddr( device, "vkCmdWriteAccelerationStructuresPropertiesKHR" );
2242     vkGetDeviceAccelerationStructureCompatibilityKHR  = cast( PFN_vkGetDeviceAccelerationStructureCompatibilityKHR  ) vkGetDeviceProcAddr( device, "vkGetDeviceAccelerationStructureCompatibilityKHR" );
2243     vkGetAccelerationStructureBuildSizesKHR           = cast( PFN_vkGetAccelerationStructureBuildSizesKHR           ) vkGetDeviceProcAddr( device, "vkGetAccelerationStructureBuildSizesKHR" );
2244 
2245     // VK_KHR_ray_tracing_pipeline
2246     vkCmdTraceRaysKHR                                 = cast( PFN_vkCmdTraceRaysKHR                                 ) vkGetDeviceProcAddr( device, "vkCmdTraceRaysKHR" );
2247     vkCreateRayTracingPipelinesKHR                    = cast( PFN_vkCreateRayTracingPipelinesKHR                    ) vkGetDeviceProcAddr( device, "vkCreateRayTracingPipelinesKHR" );
2248     vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = cast( PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) vkGetDeviceProcAddr( device, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR" );
2249     vkCmdTraceRaysIndirectKHR                         = cast( PFN_vkCmdTraceRaysIndirectKHR                         ) vkGetDeviceProcAddr( device, "vkCmdTraceRaysIndirectKHR" );
2250     vkGetRayTracingShaderGroupStackSizeKHR            = cast( PFN_vkGetRayTracingShaderGroupStackSizeKHR            ) vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupStackSizeKHR" );
2251     vkCmdSetRayTracingPipelineStackSizeKHR            = cast( PFN_vkCmdSetRayTracingPipelineStackSizeKHR            ) vkGetDeviceProcAddr( device, "vkCmdSetRayTracingPipelineStackSizeKHR" );
2252 }
2253