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