1 /**
2  * Dlang vulkan device related func loader as struct members
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.dispatch_device;
9 
10 public import erupted.types;
11 import erupted.functions;
12 
13 nothrow @nogc:
14 
15 
16 /// struct to group per device device level functions into a custom namespace
17 /// keeps track of the device to which the functions are bound
18 /// additionally to the device related vulkan functions, convenience functions exist
19 /// with same name but omitting the vk prefix as well as the first (VkDevice) parameter
20 /// these functions forward to their vk counterparts using the VkDevice member of the DispatchDevice
21 /// Moreover the same convenience functions exist for vkCmd... functions. In this case the
22 /// first parameter is substituted with the public member VkCommandBuffer commandBuffer,
23 /// which must have been set to a valid command buffer before usage.
24 struct DispatchDevice {
25 
26     private VkDevice                           device          = VK_NULL_HANDLE;
27     private const( VkAllocationCallbacks )*    allocator       = null;
28     VkCommandBuffer                            commandBuffer   = VK_NULL_HANDLE;
29 
30 
31     /// return copy of the internal VkDevice
32     VkDevice vkDevice() {
33         return device;
34     }
35 
36 
37     /// return const allocator address
38     const( VkAllocationCallbacks )* pAllocator() {
39         return allocator;
40     }
41 
42 
43     /// constructor forwards parameter 'device' to 'this.loadDeviceLevelFunctions'
44     this( VkDevice device, const( VkAllocationCallbacks )* allocator = null ) {
45         this.loadDeviceLevelFunctions( device );
46     }
47 
48 
49     /// load the device level member functions
50     /// this also sets the private member 'device' to the passed in VkDevice
51     /// as well as the otional host allocator
52     /// if a custom allocator is required it must be specified here and cannot be changed throughout the liftime of the device
53     /// now the DispatchDevice can be used e.g.:
54     ///      auto dd = DispatchDevice( device );
55     ///      dd.vkDestroyDevice( dd.vkDevice, pAllocator );
56     /// convenience functions to omit the first arg and the allocator do exist, see bellow
57     void loadDeviceLevelFunctions( VkDevice device, const( VkAllocationCallbacks )* allocator = null ) {
58         assert( vkGetInstanceProcAddr !is null, "Function pointer vkGetInstanceProcAddr is null!\nCall loadGlobalLevelFunctions -> loadInstanceLevelFunctions -> DispatchDevice.loadDeviceLevelFunctions" );
59         this.allocator = allocator;
60         this.device = device;
61 
62         // VK_VERSION_1_0
63         vkDestroyDevice                                        = cast( PFN_vkDestroyDevice                                        ) vkGetDeviceProcAddr( device, "vkDestroyDevice" );
64         vkGetDeviceQueue                                       = cast( PFN_vkGetDeviceQueue                                       ) vkGetDeviceProcAddr( device, "vkGetDeviceQueue" );
65         vkQueueSubmit                                          = cast( PFN_vkQueueSubmit                                          ) vkGetDeviceProcAddr( device, "vkQueueSubmit" );
66         vkQueueWaitIdle                                        = cast( PFN_vkQueueWaitIdle                                        ) vkGetDeviceProcAddr( device, "vkQueueWaitIdle" );
67         vkDeviceWaitIdle                                       = cast( PFN_vkDeviceWaitIdle                                       ) vkGetDeviceProcAddr( device, "vkDeviceWaitIdle" );
68         vkAllocateMemory                                       = cast( PFN_vkAllocateMemory                                       ) vkGetDeviceProcAddr( device, "vkAllocateMemory" );
69         vkFreeMemory                                           = cast( PFN_vkFreeMemory                                           ) vkGetDeviceProcAddr( device, "vkFreeMemory" );
70         vkMapMemory                                            = cast( PFN_vkMapMemory                                            ) vkGetDeviceProcAddr( device, "vkMapMemory" );
71         vkUnmapMemory                                          = cast( PFN_vkUnmapMemory                                          ) vkGetDeviceProcAddr( device, "vkUnmapMemory" );
72         vkFlushMappedMemoryRanges                              = cast( PFN_vkFlushMappedMemoryRanges                              ) vkGetDeviceProcAddr( device, "vkFlushMappedMemoryRanges" );
73         vkInvalidateMappedMemoryRanges                         = cast( PFN_vkInvalidateMappedMemoryRanges                         ) vkGetDeviceProcAddr( device, "vkInvalidateMappedMemoryRanges" );
74         vkGetDeviceMemoryCommitment                            = cast( PFN_vkGetDeviceMemoryCommitment                            ) vkGetDeviceProcAddr( device, "vkGetDeviceMemoryCommitment" );
75         vkBindBufferMemory                                     = cast( PFN_vkBindBufferMemory                                     ) vkGetDeviceProcAddr( device, "vkBindBufferMemory" );
76         vkBindImageMemory                                      = cast( PFN_vkBindImageMemory                                      ) vkGetDeviceProcAddr( device, "vkBindImageMemory" );
77         vkGetBufferMemoryRequirements                          = cast( PFN_vkGetBufferMemoryRequirements                          ) vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements" );
78         vkGetImageMemoryRequirements                           = cast( PFN_vkGetImageMemoryRequirements                           ) vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements" );
79         vkGetImageSparseMemoryRequirements                     = cast( PFN_vkGetImageSparseMemoryRequirements                     ) vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements" );
80         vkQueueBindSparse                                      = cast( PFN_vkQueueBindSparse                                      ) vkGetDeviceProcAddr( device, "vkQueueBindSparse" );
81         vkCreateFence                                          = cast( PFN_vkCreateFence                                          ) vkGetDeviceProcAddr( device, "vkCreateFence" );
82         vkDestroyFence                                         = cast( PFN_vkDestroyFence                                         ) vkGetDeviceProcAddr( device, "vkDestroyFence" );
83         vkResetFences                                          = cast( PFN_vkResetFences                                          ) vkGetDeviceProcAddr( device, "vkResetFences" );
84         vkGetFenceStatus                                       = cast( PFN_vkGetFenceStatus                                       ) vkGetDeviceProcAddr( device, "vkGetFenceStatus" );
85         vkWaitForFences                                        = cast( PFN_vkWaitForFences                                        ) vkGetDeviceProcAddr( device, "vkWaitForFences" );
86         vkCreateSemaphore                                      = cast( PFN_vkCreateSemaphore                                      ) vkGetDeviceProcAddr( device, "vkCreateSemaphore" );
87         vkDestroySemaphore                                     = cast( PFN_vkDestroySemaphore                                     ) vkGetDeviceProcAddr( device, "vkDestroySemaphore" );
88         vkCreateEvent                                          = cast( PFN_vkCreateEvent                                          ) vkGetDeviceProcAddr( device, "vkCreateEvent" );
89         vkDestroyEvent                                         = cast( PFN_vkDestroyEvent                                         ) vkGetDeviceProcAddr( device, "vkDestroyEvent" );
90         vkGetEventStatus                                       = cast( PFN_vkGetEventStatus                                       ) vkGetDeviceProcAddr( device, "vkGetEventStatus" );
91         vkSetEvent                                             = cast( PFN_vkSetEvent                                             ) vkGetDeviceProcAddr( device, "vkSetEvent" );
92         vkResetEvent                                           = cast( PFN_vkResetEvent                                           ) vkGetDeviceProcAddr( device, "vkResetEvent" );
93         vkCreateQueryPool                                      = cast( PFN_vkCreateQueryPool                                      ) vkGetDeviceProcAddr( device, "vkCreateQueryPool" );
94         vkDestroyQueryPool                                     = cast( PFN_vkDestroyQueryPool                                     ) vkGetDeviceProcAddr( device, "vkDestroyQueryPool" );
95         vkGetQueryPoolResults                                  = cast( PFN_vkGetQueryPoolResults                                  ) vkGetDeviceProcAddr( device, "vkGetQueryPoolResults" );
96         vkCreateBuffer                                         = cast( PFN_vkCreateBuffer                                         ) vkGetDeviceProcAddr( device, "vkCreateBuffer" );
97         vkDestroyBuffer                                        = cast( PFN_vkDestroyBuffer                                        ) vkGetDeviceProcAddr( device, "vkDestroyBuffer" );
98         vkCreateBufferView                                     = cast( PFN_vkCreateBufferView                                     ) vkGetDeviceProcAddr( device, "vkCreateBufferView" );
99         vkDestroyBufferView                                    = cast( PFN_vkDestroyBufferView                                    ) vkGetDeviceProcAddr( device, "vkDestroyBufferView" );
100         vkCreateImage                                          = cast( PFN_vkCreateImage                                          ) vkGetDeviceProcAddr( device, "vkCreateImage" );
101         vkDestroyImage                                         = cast( PFN_vkDestroyImage                                         ) vkGetDeviceProcAddr( device, "vkDestroyImage" );
102         vkGetImageSubresourceLayout                            = cast( PFN_vkGetImageSubresourceLayout                            ) vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout" );
103         vkCreateImageView                                      = cast( PFN_vkCreateImageView                                      ) vkGetDeviceProcAddr( device, "vkCreateImageView" );
104         vkDestroyImageView                                     = cast( PFN_vkDestroyImageView                                     ) vkGetDeviceProcAddr( device, "vkDestroyImageView" );
105         vkCreateShaderModule                                   = cast( PFN_vkCreateShaderModule                                   ) vkGetDeviceProcAddr( device, "vkCreateShaderModule" );
106         vkDestroyShaderModule                                  = cast( PFN_vkDestroyShaderModule                                  ) vkGetDeviceProcAddr( device, "vkDestroyShaderModule" );
107         vkCreatePipelineCache                                  = cast( PFN_vkCreatePipelineCache                                  ) vkGetDeviceProcAddr( device, "vkCreatePipelineCache" );
108         vkDestroyPipelineCache                                 = cast( PFN_vkDestroyPipelineCache                                 ) vkGetDeviceProcAddr( device, "vkDestroyPipelineCache" );
109         vkGetPipelineCacheData                                 = cast( PFN_vkGetPipelineCacheData                                 ) vkGetDeviceProcAddr( device, "vkGetPipelineCacheData" );
110         vkMergePipelineCaches                                  = cast( PFN_vkMergePipelineCaches                                  ) vkGetDeviceProcAddr( device, "vkMergePipelineCaches" );
111         vkCreateGraphicsPipelines                              = cast( PFN_vkCreateGraphicsPipelines                              ) vkGetDeviceProcAddr( device, "vkCreateGraphicsPipelines" );
112         vkCreateComputePipelines                               = cast( PFN_vkCreateComputePipelines                               ) vkGetDeviceProcAddr( device, "vkCreateComputePipelines" );
113         vkDestroyPipeline                                      = cast( PFN_vkDestroyPipeline                                      ) vkGetDeviceProcAddr( device, "vkDestroyPipeline" );
114         vkCreatePipelineLayout                                 = cast( PFN_vkCreatePipelineLayout                                 ) vkGetDeviceProcAddr( device, "vkCreatePipelineLayout" );
115         vkDestroyPipelineLayout                                = cast( PFN_vkDestroyPipelineLayout                                ) vkGetDeviceProcAddr( device, "vkDestroyPipelineLayout" );
116         vkCreateSampler                                        = cast( PFN_vkCreateSampler                                        ) vkGetDeviceProcAddr( device, "vkCreateSampler" );
117         vkDestroySampler                                       = cast( PFN_vkDestroySampler                                       ) vkGetDeviceProcAddr( device, "vkDestroySampler" );
118         vkCreateDescriptorSetLayout                            = cast( PFN_vkCreateDescriptorSetLayout                            ) vkGetDeviceProcAddr( device, "vkCreateDescriptorSetLayout" );
119         vkDestroyDescriptorSetLayout                           = cast( PFN_vkDestroyDescriptorSetLayout                           ) vkGetDeviceProcAddr( device, "vkDestroyDescriptorSetLayout" );
120         vkCreateDescriptorPool                                 = cast( PFN_vkCreateDescriptorPool                                 ) vkGetDeviceProcAddr( device, "vkCreateDescriptorPool" );
121         vkDestroyDescriptorPool                                = cast( PFN_vkDestroyDescriptorPool                                ) vkGetDeviceProcAddr( device, "vkDestroyDescriptorPool" );
122         vkResetDescriptorPool                                  = cast( PFN_vkResetDescriptorPool                                  ) vkGetDeviceProcAddr( device, "vkResetDescriptorPool" );
123         vkAllocateDescriptorSets                               = cast( PFN_vkAllocateDescriptorSets                               ) vkGetDeviceProcAddr( device, "vkAllocateDescriptorSets" );
124         vkFreeDescriptorSets                                   = cast( PFN_vkFreeDescriptorSets                                   ) vkGetDeviceProcAddr( device, "vkFreeDescriptorSets" );
125         vkUpdateDescriptorSets                                 = cast( PFN_vkUpdateDescriptorSets                                 ) vkGetDeviceProcAddr( device, "vkUpdateDescriptorSets" );
126         vkCreateFramebuffer                                    = cast( PFN_vkCreateFramebuffer                                    ) vkGetDeviceProcAddr( device, "vkCreateFramebuffer" );
127         vkDestroyFramebuffer                                   = cast( PFN_vkDestroyFramebuffer                                   ) vkGetDeviceProcAddr( device, "vkDestroyFramebuffer" );
128         vkCreateRenderPass                                     = cast( PFN_vkCreateRenderPass                                     ) vkGetDeviceProcAddr( device, "vkCreateRenderPass" );
129         vkDestroyRenderPass                                    = cast( PFN_vkDestroyRenderPass                                    ) vkGetDeviceProcAddr( device, "vkDestroyRenderPass" );
130         vkGetRenderAreaGranularity                             = cast( PFN_vkGetRenderAreaGranularity                             ) vkGetDeviceProcAddr( device, "vkGetRenderAreaGranularity" );
131         vkCreateCommandPool                                    = cast( PFN_vkCreateCommandPool                                    ) vkGetDeviceProcAddr( device, "vkCreateCommandPool" );
132         vkDestroyCommandPool                                   = cast( PFN_vkDestroyCommandPool                                   ) vkGetDeviceProcAddr( device, "vkDestroyCommandPool" );
133         vkResetCommandPool                                     = cast( PFN_vkResetCommandPool                                     ) vkGetDeviceProcAddr( device, "vkResetCommandPool" );
134         vkAllocateCommandBuffers                               = cast( PFN_vkAllocateCommandBuffers                               ) vkGetDeviceProcAddr( device, "vkAllocateCommandBuffers" );
135         vkFreeCommandBuffers                                   = cast( PFN_vkFreeCommandBuffers                                   ) vkGetDeviceProcAddr( device, "vkFreeCommandBuffers" );
136         vkBeginCommandBuffer                                   = cast( PFN_vkBeginCommandBuffer                                   ) vkGetDeviceProcAddr( device, "vkBeginCommandBuffer" );
137         vkEndCommandBuffer                                     = cast( PFN_vkEndCommandBuffer                                     ) vkGetDeviceProcAddr( device, "vkEndCommandBuffer" );
138         vkResetCommandBuffer                                   = cast( PFN_vkResetCommandBuffer                                   ) vkGetDeviceProcAddr( device, "vkResetCommandBuffer" );
139         vkCmdBindPipeline                                      = cast( PFN_vkCmdBindPipeline                                      ) vkGetDeviceProcAddr( device, "vkCmdBindPipeline" );
140         vkCmdSetViewport                                       = cast( PFN_vkCmdSetViewport                                       ) vkGetDeviceProcAddr( device, "vkCmdSetViewport" );
141         vkCmdSetScissor                                        = cast( PFN_vkCmdSetScissor                                        ) vkGetDeviceProcAddr( device, "vkCmdSetScissor" );
142         vkCmdSetLineWidth                                      = cast( PFN_vkCmdSetLineWidth                                      ) vkGetDeviceProcAddr( device, "vkCmdSetLineWidth" );
143         vkCmdSetDepthBias                                      = cast( PFN_vkCmdSetDepthBias                                      ) vkGetDeviceProcAddr( device, "vkCmdSetDepthBias" );
144         vkCmdSetBlendConstants                                 = cast( PFN_vkCmdSetBlendConstants                                 ) vkGetDeviceProcAddr( device, "vkCmdSetBlendConstants" );
145         vkCmdSetDepthBounds                                    = cast( PFN_vkCmdSetDepthBounds                                    ) vkGetDeviceProcAddr( device, "vkCmdSetDepthBounds" );
146         vkCmdSetStencilCompareMask                             = cast( PFN_vkCmdSetStencilCompareMask                             ) vkGetDeviceProcAddr( device, "vkCmdSetStencilCompareMask" );
147         vkCmdSetStencilWriteMask                               = cast( PFN_vkCmdSetStencilWriteMask                               ) vkGetDeviceProcAddr( device, "vkCmdSetStencilWriteMask" );
148         vkCmdSetStencilReference                               = cast( PFN_vkCmdSetStencilReference                               ) vkGetDeviceProcAddr( device, "vkCmdSetStencilReference" );
149         vkCmdBindDescriptorSets                                = cast( PFN_vkCmdBindDescriptorSets                                ) vkGetDeviceProcAddr( device, "vkCmdBindDescriptorSets" );
150         vkCmdBindIndexBuffer                                   = cast( PFN_vkCmdBindIndexBuffer                                   ) vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer" );
151         vkCmdBindVertexBuffers                                 = cast( PFN_vkCmdBindVertexBuffers                                 ) vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers" );
152         vkCmdDraw                                              = cast( PFN_vkCmdDraw                                              ) vkGetDeviceProcAddr( device, "vkCmdDraw" );
153         vkCmdDrawIndexed                                       = cast( PFN_vkCmdDrawIndexed                                       ) vkGetDeviceProcAddr( device, "vkCmdDrawIndexed" );
154         vkCmdDrawIndirect                                      = cast( PFN_vkCmdDrawIndirect                                      ) vkGetDeviceProcAddr( device, "vkCmdDrawIndirect" );
155         vkCmdDrawIndexedIndirect                               = cast( PFN_vkCmdDrawIndexedIndirect                               ) vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirect" );
156         vkCmdDispatch                                          = cast( PFN_vkCmdDispatch                                          ) vkGetDeviceProcAddr( device, "vkCmdDispatch" );
157         vkCmdDispatchIndirect                                  = cast( PFN_vkCmdDispatchIndirect                                  ) vkGetDeviceProcAddr( device, "vkCmdDispatchIndirect" );
158         vkCmdCopyBuffer                                        = cast( PFN_vkCmdCopyBuffer                                        ) vkGetDeviceProcAddr( device, "vkCmdCopyBuffer" );
159         vkCmdCopyImage                                         = cast( PFN_vkCmdCopyImage                                         ) vkGetDeviceProcAddr( device, "vkCmdCopyImage" );
160         vkCmdBlitImage                                         = cast( PFN_vkCmdBlitImage                                         ) vkGetDeviceProcAddr( device, "vkCmdBlitImage" );
161         vkCmdCopyBufferToImage                                 = cast( PFN_vkCmdCopyBufferToImage                                 ) vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage" );
162         vkCmdCopyImageToBuffer                                 = cast( PFN_vkCmdCopyImageToBuffer                                 ) vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer" );
163         vkCmdUpdateBuffer                                      = cast( PFN_vkCmdUpdateBuffer                                      ) vkGetDeviceProcAddr( device, "vkCmdUpdateBuffer" );
164         vkCmdFillBuffer                                        = cast( PFN_vkCmdFillBuffer                                        ) vkGetDeviceProcAddr( device, "vkCmdFillBuffer" );
165         vkCmdClearColorImage                                   = cast( PFN_vkCmdClearColorImage                                   ) vkGetDeviceProcAddr( device, "vkCmdClearColorImage" );
166         vkCmdClearDepthStencilImage                            = cast( PFN_vkCmdClearDepthStencilImage                            ) vkGetDeviceProcAddr( device, "vkCmdClearDepthStencilImage" );
167         vkCmdClearAttachments                                  = cast( PFN_vkCmdClearAttachments                                  ) vkGetDeviceProcAddr( device, "vkCmdClearAttachments" );
168         vkCmdResolveImage                                      = cast( PFN_vkCmdResolveImage                                      ) vkGetDeviceProcAddr( device, "vkCmdResolveImage" );
169         vkCmdSetEvent                                          = cast( PFN_vkCmdSetEvent                                          ) vkGetDeviceProcAddr( device, "vkCmdSetEvent" );
170         vkCmdResetEvent                                        = cast( PFN_vkCmdResetEvent                                        ) vkGetDeviceProcAddr( device, "vkCmdResetEvent" );
171         vkCmdWaitEvents                                        = cast( PFN_vkCmdWaitEvents                                        ) vkGetDeviceProcAddr( device, "vkCmdWaitEvents" );
172         vkCmdPipelineBarrier                                   = cast( PFN_vkCmdPipelineBarrier                                   ) vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier" );
173         vkCmdBeginQuery                                        = cast( PFN_vkCmdBeginQuery                                        ) vkGetDeviceProcAddr( device, "vkCmdBeginQuery" );
174         vkCmdEndQuery                                          = cast( PFN_vkCmdEndQuery                                          ) vkGetDeviceProcAddr( device, "vkCmdEndQuery" );
175         vkCmdResetQueryPool                                    = cast( PFN_vkCmdResetQueryPool                                    ) vkGetDeviceProcAddr( device, "vkCmdResetQueryPool" );
176         vkCmdWriteTimestamp                                    = cast( PFN_vkCmdWriteTimestamp                                    ) vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp" );
177         vkCmdCopyQueryPoolResults                              = cast( PFN_vkCmdCopyQueryPoolResults                              ) vkGetDeviceProcAddr( device, "vkCmdCopyQueryPoolResults" );
178         vkCmdPushConstants                                     = cast( PFN_vkCmdPushConstants                                     ) vkGetDeviceProcAddr( device, "vkCmdPushConstants" );
179         vkCmdBeginRenderPass                                   = cast( PFN_vkCmdBeginRenderPass                                   ) vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass" );
180         vkCmdNextSubpass                                       = cast( PFN_vkCmdNextSubpass                                       ) vkGetDeviceProcAddr( device, "vkCmdNextSubpass" );
181         vkCmdEndRenderPass                                     = cast( PFN_vkCmdEndRenderPass                                     ) vkGetDeviceProcAddr( device, "vkCmdEndRenderPass" );
182         vkCmdExecuteCommands                                   = cast( PFN_vkCmdExecuteCommands                                   ) vkGetDeviceProcAddr( device, "vkCmdExecuteCommands" );
183 
184         // VK_VERSION_1_1
185         vkBindBufferMemory2                                    = cast( PFN_vkBindBufferMemory2                                    ) vkGetDeviceProcAddr( device, "vkBindBufferMemory2" );
186         vkBindImageMemory2                                     = cast( PFN_vkBindImageMemory2                                     ) vkGetDeviceProcAddr( device, "vkBindImageMemory2" );
187         vkGetDeviceGroupPeerMemoryFeatures                     = cast( PFN_vkGetDeviceGroupPeerMemoryFeatures                     ) vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeatures" );
188         vkCmdSetDeviceMask                                     = cast( PFN_vkCmdSetDeviceMask                                     ) vkGetDeviceProcAddr( device, "vkCmdSetDeviceMask" );
189         vkCmdDispatchBase                                      = cast( PFN_vkCmdDispatchBase                                      ) vkGetDeviceProcAddr( device, "vkCmdDispatchBase" );
190         vkGetImageMemoryRequirements2                          = cast( PFN_vkGetImageMemoryRequirements2                          ) vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2" );
191         vkGetBufferMemoryRequirements2                         = cast( PFN_vkGetBufferMemoryRequirements2                         ) vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2" );
192         vkGetImageSparseMemoryRequirements2                    = cast( PFN_vkGetImageSparseMemoryRequirements2                    ) vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2" );
193         vkTrimCommandPool                                      = cast( PFN_vkTrimCommandPool                                      ) vkGetDeviceProcAddr( device, "vkTrimCommandPool" );
194         vkGetDeviceQueue2                                      = cast( PFN_vkGetDeviceQueue2                                      ) vkGetDeviceProcAddr( device, "vkGetDeviceQueue2" );
195         vkCreateSamplerYcbcrConversion                         = cast( PFN_vkCreateSamplerYcbcrConversion                         ) vkGetDeviceProcAddr( device, "vkCreateSamplerYcbcrConversion" );
196         vkDestroySamplerYcbcrConversion                        = cast( PFN_vkDestroySamplerYcbcrConversion                        ) vkGetDeviceProcAddr( device, "vkDestroySamplerYcbcrConversion" );
197         vkCreateDescriptorUpdateTemplate                       = cast( PFN_vkCreateDescriptorUpdateTemplate                       ) vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplate" );
198         vkDestroyDescriptorUpdateTemplate                      = cast( PFN_vkDestroyDescriptorUpdateTemplate                      ) vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplate" );
199         vkUpdateDescriptorSetWithTemplate                      = cast( PFN_vkUpdateDescriptorSetWithTemplate                      ) vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplate" );
200         vkGetDescriptorSetLayoutSupport                        = cast( PFN_vkGetDescriptorSetLayoutSupport                        ) vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSupport" );
201 
202         // VK_KHR_swapchain
203         vkCreateSwapchainKHR                                   = cast( PFN_vkCreateSwapchainKHR                                   ) vkGetDeviceProcAddr( device, "vkCreateSwapchainKHR" );
204         vkDestroySwapchainKHR                                  = cast( PFN_vkDestroySwapchainKHR                                  ) vkGetDeviceProcAddr( device, "vkDestroySwapchainKHR" );
205         vkGetSwapchainImagesKHR                                = cast( PFN_vkGetSwapchainImagesKHR                                ) vkGetDeviceProcAddr( device, "vkGetSwapchainImagesKHR" );
206         vkAcquireNextImageKHR                                  = cast( PFN_vkAcquireNextImageKHR                                  ) vkGetDeviceProcAddr( device, "vkAcquireNextImageKHR" );
207         vkQueuePresentKHR                                      = cast( PFN_vkQueuePresentKHR                                      ) vkGetDeviceProcAddr( device, "vkQueuePresentKHR" );
208         vkGetDeviceGroupPresentCapabilitiesKHR                 = cast( PFN_vkGetDeviceGroupPresentCapabilitiesKHR                 ) vkGetDeviceProcAddr( device, "vkGetDeviceGroupPresentCapabilitiesKHR" );
209         vkGetDeviceGroupSurfacePresentModesKHR                 = cast( PFN_vkGetDeviceGroupSurfacePresentModesKHR                 ) vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModesKHR" );
210         vkAcquireNextImage2KHR                                 = cast( PFN_vkAcquireNextImage2KHR                                 ) vkGetDeviceProcAddr( device, "vkAcquireNextImage2KHR" );
211 
212         // VK_KHR_display_swapchain
213         vkCreateSharedSwapchainsKHR                            = cast( PFN_vkCreateSharedSwapchainsKHR                            ) vkGetDeviceProcAddr( device, "vkCreateSharedSwapchainsKHR" );
214 
215         // VK_KHR_external_memory_fd
216         vkGetMemoryFdKHR                                       = cast( PFN_vkGetMemoryFdKHR                                       ) vkGetDeviceProcAddr( device, "vkGetMemoryFdKHR" );
217         vkGetMemoryFdPropertiesKHR                             = cast( PFN_vkGetMemoryFdPropertiesKHR                             ) vkGetDeviceProcAddr( device, "vkGetMemoryFdPropertiesKHR" );
218 
219         // VK_KHR_external_semaphore_fd
220         vkImportSemaphoreFdKHR                                 = cast( PFN_vkImportSemaphoreFdKHR                                 ) vkGetDeviceProcAddr( device, "vkImportSemaphoreFdKHR" );
221         vkGetSemaphoreFdKHR                                    = cast( PFN_vkGetSemaphoreFdKHR                                    ) vkGetDeviceProcAddr( device, "vkGetSemaphoreFdKHR" );
222 
223         // VK_KHR_push_descriptor
224         vkCmdPushDescriptorSetKHR                              = cast( PFN_vkCmdPushDescriptorSetKHR                              ) vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetKHR" );
225         vkCmdPushDescriptorSetWithTemplateKHR                  = cast( PFN_vkCmdPushDescriptorSetWithTemplateKHR                  ) vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplateKHR" );
226 
227         // VK_KHR_create_renderpass2
228         vkCreateRenderPass2KHR                                 = cast( PFN_vkCreateRenderPass2KHR                                 ) vkGetDeviceProcAddr( device, "vkCreateRenderPass2KHR" );
229         vkCmdBeginRenderPass2KHR                               = cast( PFN_vkCmdBeginRenderPass2KHR                               ) vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass2KHR" );
230         vkCmdNextSubpass2KHR                                   = cast( PFN_vkCmdNextSubpass2KHR                                   ) vkGetDeviceProcAddr( device, "vkCmdNextSubpass2KHR" );
231         vkCmdEndRenderPass2KHR                                 = cast( PFN_vkCmdEndRenderPass2KHR                                 ) vkGetDeviceProcAddr( device, "vkCmdEndRenderPass2KHR" );
232 
233         // VK_KHR_shared_presentable_image
234         vkGetSwapchainStatusKHR                                = cast( PFN_vkGetSwapchainStatusKHR                                ) vkGetDeviceProcAddr( device, "vkGetSwapchainStatusKHR" );
235 
236         // VK_KHR_external_fence_fd
237         vkImportFenceFdKHR                                     = cast( PFN_vkImportFenceFdKHR                                     ) vkGetDeviceProcAddr( device, "vkImportFenceFdKHR" );
238         vkGetFenceFdKHR                                        = cast( PFN_vkGetFenceFdKHR                                        ) vkGetDeviceProcAddr( device, "vkGetFenceFdKHR" );
239 
240         // VK_KHR_draw_indirect_count
241         vkCmdDrawIndirectCountKHR                              = cast( PFN_vkCmdDrawIndirectCountKHR                              ) vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountKHR" );
242         vkCmdDrawIndexedIndirectCountKHR                       = cast( PFN_vkCmdDrawIndexedIndirectCountKHR                       ) vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountKHR" );
243 
244         // VK_EXT_debug_marker
245         vkDebugMarkerSetObjectTagEXT                           = cast( PFN_vkDebugMarkerSetObjectTagEXT                           ) vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectTagEXT" );
246         vkDebugMarkerSetObjectNameEXT                          = cast( PFN_vkDebugMarkerSetObjectNameEXT                          ) vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectNameEXT" );
247         vkCmdDebugMarkerBeginEXT                               = cast( PFN_vkCmdDebugMarkerBeginEXT                               ) vkGetDeviceProcAddr( device, "vkCmdDebugMarkerBeginEXT" );
248         vkCmdDebugMarkerEndEXT                                 = cast( PFN_vkCmdDebugMarkerEndEXT                                 ) vkGetDeviceProcAddr( device, "vkCmdDebugMarkerEndEXT" );
249         vkCmdDebugMarkerInsertEXT                              = cast( PFN_vkCmdDebugMarkerInsertEXT                              ) vkGetDeviceProcAddr( device, "vkCmdDebugMarkerInsertEXT" );
250 
251         // VK_AMD_draw_indirect_count
252         vkCmdDrawIndirectCountAMD                              = cast( PFN_vkCmdDrawIndirectCountAMD                              ) vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountAMD" );
253         vkCmdDrawIndexedIndirectCountAMD                       = cast( PFN_vkCmdDrawIndexedIndirectCountAMD                       ) vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountAMD" );
254 
255         // VK_AMD_shader_info
256         vkGetShaderInfoAMD                                     = cast( PFN_vkGetShaderInfoAMD                                     ) vkGetDeviceProcAddr( device, "vkGetShaderInfoAMD" );
257 
258         // VK_EXT_conditional_rendering
259         vkCmdBeginConditionalRenderingEXT                      = cast( PFN_vkCmdBeginConditionalRenderingEXT                      ) vkGetDeviceProcAddr( device, "vkCmdBeginConditionalRenderingEXT" );
260         vkCmdEndConditionalRenderingEXT                        = cast( PFN_vkCmdEndConditionalRenderingEXT                        ) vkGetDeviceProcAddr( device, "vkCmdEndConditionalRenderingEXT" );
261 
262         // VK_NVX_device_generated_commands
263         vkCmdProcessCommandsNVX                                = cast( PFN_vkCmdProcessCommandsNVX                                ) vkGetDeviceProcAddr( device, "vkCmdProcessCommandsNVX" );
264         vkCmdReserveSpaceForCommandsNVX                        = cast( PFN_vkCmdReserveSpaceForCommandsNVX                        ) vkGetDeviceProcAddr( device, "vkCmdReserveSpaceForCommandsNVX" );
265         vkCreateIndirectCommandsLayoutNVX                      = cast( PFN_vkCreateIndirectCommandsLayoutNVX                      ) vkGetDeviceProcAddr( device, "vkCreateIndirectCommandsLayoutNVX" );
266         vkDestroyIndirectCommandsLayoutNVX                     = cast( PFN_vkDestroyIndirectCommandsLayoutNVX                     ) vkGetDeviceProcAddr( device, "vkDestroyIndirectCommandsLayoutNVX" );
267         vkCreateObjectTableNVX                                 = cast( PFN_vkCreateObjectTableNVX                                 ) vkGetDeviceProcAddr( device, "vkCreateObjectTableNVX" );
268         vkDestroyObjectTableNVX                                = cast( PFN_vkDestroyObjectTableNVX                                ) vkGetDeviceProcAddr( device, "vkDestroyObjectTableNVX" );
269         vkRegisterObjectsNVX                                   = cast( PFN_vkRegisterObjectsNVX                                   ) vkGetDeviceProcAddr( device, "vkRegisterObjectsNVX" );
270         vkUnregisterObjectsNVX                                 = cast( PFN_vkUnregisterObjectsNVX                                 ) vkGetDeviceProcAddr( device, "vkUnregisterObjectsNVX" );
271 
272         // VK_NV_clip_space_w_scaling
273         vkCmdSetViewportWScalingNV                             = cast( PFN_vkCmdSetViewportWScalingNV                             ) vkGetDeviceProcAddr( device, "vkCmdSetViewportWScalingNV" );
274 
275         // VK_EXT_display_control
276         vkDisplayPowerControlEXT                               = cast( PFN_vkDisplayPowerControlEXT                               ) vkGetDeviceProcAddr( device, "vkDisplayPowerControlEXT" );
277         vkRegisterDeviceEventEXT                               = cast( PFN_vkRegisterDeviceEventEXT                               ) vkGetDeviceProcAddr( device, "vkRegisterDeviceEventEXT" );
278         vkRegisterDisplayEventEXT                              = cast( PFN_vkRegisterDisplayEventEXT                              ) vkGetDeviceProcAddr( device, "vkRegisterDisplayEventEXT" );
279         vkGetSwapchainCounterEXT                               = cast( PFN_vkGetSwapchainCounterEXT                               ) vkGetDeviceProcAddr( device, "vkGetSwapchainCounterEXT" );
280 
281         // VK_GOOGLE_display_timing
282         vkGetRefreshCycleDurationGOOGLE                        = cast( PFN_vkGetRefreshCycleDurationGOOGLE                        ) vkGetDeviceProcAddr( device, "vkGetRefreshCycleDurationGOOGLE" );
283         vkGetPastPresentationTimingGOOGLE                      = cast( PFN_vkGetPastPresentationTimingGOOGLE                      ) vkGetDeviceProcAddr( device, "vkGetPastPresentationTimingGOOGLE" );
284 
285         // VK_EXT_discard_rectangles
286         vkCmdSetDiscardRectangleEXT                            = cast( PFN_vkCmdSetDiscardRectangleEXT                            ) vkGetDeviceProcAddr( device, "vkCmdSetDiscardRectangleEXT" );
287 
288         // VK_EXT_hdr_metadata
289         vkSetHdrMetadataEXT                                    = cast( PFN_vkSetHdrMetadataEXT                                    ) vkGetDeviceProcAddr( device, "vkSetHdrMetadataEXT" );
290 
291         // VK_EXT_debug_utils
292         vkSetDebugUtilsObjectNameEXT                           = cast( PFN_vkSetDebugUtilsObjectNameEXT                           ) vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectNameEXT" );
293         vkSetDebugUtilsObjectTagEXT                            = cast( PFN_vkSetDebugUtilsObjectTagEXT                            ) vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectTagEXT" );
294         vkQueueBeginDebugUtilsLabelEXT                         = cast( PFN_vkQueueBeginDebugUtilsLabelEXT                         ) vkGetDeviceProcAddr( device, "vkQueueBeginDebugUtilsLabelEXT" );
295         vkQueueEndDebugUtilsLabelEXT                           = cast( PFN_vkQueueEndDebugUtilsLabelEXT                           ) vkGetDeviceProcAddr( device, "vkQueueEndDebugUtilsLabelEXT" );
296         vkQueueInsertDebugUtilsLabelEXT                        = cast( PFN_vkQueueInsertDebugUtilsLabelEXT                        ) vkGetDeviceProcAddr( device, "vkQueueInsertDebugUtilsLabelEXT" );
297         vkCmdBeginDebugUtilsLabelEXT                           = cast( PFN_vkCmdBeginDebugUtilsLabelEXT                           ) vkGetDeviceProcAddr( device, "vkCmdBeginDebugUtilsLabelEXT" );
298         vkCmdEndDebugUtilsLabelEXT                             = cast( PFN_vkCmdEndDebugUtilsLabelEXT                             ) vkGetDeviceProcAddr( device, "vkCmdEndDebugUtilsLabelEXT" );
299         vkCmdInsertDebugUtilsLabelEXT                          = cast( PFN_vkCmdInsertDebugUtilsLabelEXT                          ) vkGetDeviceProcAddr( device, "vkCmdInsertDebugUtilsLabelEXT" );
300 
301         // VK_EXT_sample_locations
302         vkCmdSetSampleLocationsEXT                             = cast( PFN_vkCmdSetSampleLocationsEXT                             ) vkGetDeviceProcAddr( device, "vkCmdSetSampleLocationsEXT" );
303 
304         // VK_EXT_validation_cache
305         vkCreateValidationCacheEXT                             = cast( PFN_vkCreateValidationCacheEXT                             ) vkGetDeviceProcAddr( device, "vkCreateValidationCacheEXT" );
306         vkDestroyValidationCacheEXT                            = cast( PFN_vkDestroyValidationCacheEXT                            ) vkGetDeviceProcAddr( device, "vkDestroyValidationCacheEXT" );
307         vkMergeValidationCachesEXT                             = cast( PFN_vkMergeValidationCachesEXT                             ) vkGetDeviceProcAddr( device, "vkMergeValidationCachesEXT" );
308         vkGetValidationCacheDataEXT                            = cast( PFN_vkGetValidationCacheDataEXT                            ) vkGetDeviceProcAddr( device, "vkGetValidationCacheDataEXT" );
309 
310         // VK_NV_shading_rate_image
311         vkCmdBindShadingRateImageNV                            = cast( PFN_vkCmdBindShadingRateImageNV                            ) vkGetDeviceProcAddr( device, "vkCmdBindShadingRateImageNV" );
312         vkCmdSetViewportShadingRatePaletteNV                   = cast( PFN_vkCmdSetViewportShadingRatePaletteNV                   ) vkGetDeviceProcAddr( device, "vkCmdSetViewportShadingRatePaletteNV" );
313         vkCmdSetCoarseSampleOrderNV                            = cast( PFN_vkCmdSetCoarseSampleOrderNV                            ) vkGetDeviceProcAddr( device, "vkCmdSetCoarseSampleOrderNV" );
314 
315         // VK_NVX_raytracing
316         vkCreateAccelerationStructureNVX                       = cast( PFN_vkCreateAccelerationStructureNVX                       ) vkGetDeviceProcAddr( device, "vkCreateAccelerationStructureNVX" );
317         vkDestroyAccelerationStructureNVX                      = cast( PFN_vkDestroyAccelerationStructureNVX                      ) vkGetDeviceProcAddr( device, "vkDestroyAccelerationStructureNVX" );
318         vkGetAccelerationStructureMemoryRequirementsNVX        = cast( PFN_vkGetAccelerationStructureMemoryRequirementsNVX        ) vkGetDeviceProcAddr( device, "vkGetAccelerationStructureMemoryRequirementsNVX" );
319         vkGetAccelerationStructureScratchMemoryRequirementsNVX = cast( PFN_vkGetAccelerationStructureScratchMemoryRequirementsNVX ) vkGetDeviceProcAddr( device, "vkGetAccelerationStructureScratchMemoryRequirementsNVX" );
320         vkBindAccelerationStructureMemoryNVX                   = cast( PFN_vkBindAccelerationStructureMemoryNVX                   ) vkGetDeviceProcAddr( device, "vkBindAccelerationStructureMemoryNVX" );
321         vkCmdBuildAccelerationStructureNVX                     = cast( PFN_vkCmdBuildAccelerationStructureNVX                     ) vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructureNVX" );
322         vkCmdCopyAccelerationStructureNVX                      = cast( PFN_vkCmdCopyAccelerationStructureNVX                      ) vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureNVX" );
323         vkCmdTraceRaysNVX                                      = cast( PFN_vkCmdTraceRaysNVX                                      ) vkGetDeviceProcAddr( device, "vkCmdTraceRaysNVX" );
324         vkCreateRaytracingPipelinesNVX                         = cast( PFN_vkCreateRaytracingPipelinesNVX                         ) vkGetDeviceProcAddr( device, "vkCreateRaytracingPipelinesNVX" );
325         vkGetRaytracingShaderHandlesNVX                        = cast( PFN_vkGetRaytracingShaderHandlesNVX                        ) vkGetDeviceProcAddr( device, "vkGetRaytracingShaderHandlesNVX" );
326         vkGetAccelerationStructureHandleNVX                    = cast( PFN_vkGetAccelerationStructureHandleNVX                    ) vkGetDeviceProcAddr( device, "vkGetAccelerationStructureHandleNVX" );
327         vkCmdWriteAccelerationStructurePropertiesNVX           = cast( PFN_vkCmdWriteAccelerationStructurePropertiesNVX           ) vkGetDeviceProcAddr( device, "vkCmdWriteAccelerationStructurePropertiesNVX" );
328         vkCompileDeferredNVX                                   = cast( PFN_vkCompileDeferredNVX                                   ) vkGetDeviceProcAddr( device, "vkCompileDeferredNVX" );
329 
330         // VK_EXT_external_memory_host
331         vkGetMemoryHostPointerPropertiesEXT                    = cast( PFN_vkGetMemoryHostPointerPropertiesEXT                    ) vkGetDeviceProcAddr( device, "vkGetMemoryHostPointerPropertiesEXT" );
332 
333         // VK_AMD_buffer_marker
334         vkCmdWriteBufferMarkerAMD                              = cast( PFN_vkCmdWriteBufferMarkerAMD                              ) vkGetDeviceProcAddr( device, "vkCmdWriteBufferMarkerAMD" );
335 
336         // VK_NV_mesh_shader
337         vkCmdDrawMeshTasksNV                                   = cast( PFN_vkCmdDrawMeshTasksNV                                   ) vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksNV" );
338         vkCmdDrawMeshTasksIndirectNV                           = cast( PFN_vkCmdDrawMeshTasksIndirectNV                           ) vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectNV" );
339         vkCmdDrawMeshTasksIndirectCountNV                      = cast( PFN_vkCmdDrawMeshTasksIndirectCountNV                      ) vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectCountNV" );
340 
341         // VK_NV_scissor_exclusive
342         vkCmdSetExclusiveScissorNV                             = cast( PFN_vkCmdSetExclusiveScissorNV                             ) vkGetDeviceProcAddr( device, "vkCmdSetExclusiveScissorNV" );
343 
344         // VK_NV_device_diagnostic_checkpoints
345         vkCmdSetCheckpointNV                                   = cast( PFN_vkCmdSetCheckpointNV                                   ) vkGetDeviceProcAddr( device, "vkCmdSetCheckpointNV" );
346         vkGetQueueCheckpointDataNV                             = cast( PFN_vkGetQueueCheckpointDataNV                             ) vkGetDeviceProcAddr( device, "vkGetQueueCheckpointDataNV" );
347     }
348 
349 
350     /// convenience member functions, forwarded to corresponding vulkan functions
351     /// parameters of type VkDevice, const( VkAllocationCallbacks )* and VkCommandBuffer are omitted
352     /// they will be supplied by the member properties vkDevice, pAllocator and the public member commandBuffer
353     /// e.g.:
354     ///      auto dd = DispatchDevice( device );
355     ///      dd.DestroyDevice();       // instead of: dd.vkDestroyDevice( dd.vkDevice, pAllocator );
356     ///
357     /// Same mechanism works with functions which require a VkCommandBuffer as first arg
358     /// In this case the public member 'commandBuffer' must be set beforehand
359     /// e.g.:
360     ///      dd.commandBuffer = some_command_buffer;
361     ///      dd.BeginCommandBuffer( &beginInfo );
362     ///      dd.CmdBindPipeline( VK_PIPELINE_BIND_POINT_GRAPHICS, some_pipeline );
363     ///
364     /// Does not work with queues, there are just too few queue related functions
365 
366     // VK_VERSION_1_0
367     void      DestroyDevice() { vkDestroyDevice( vkDevice, pAllocator ); }
368     void      GetDeviceQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue ) { vkGetDeviceQueue( vkDevice, queueFamilyIndex, queueIndex, pQueue ); }
369     VkResult  DeviceWaitIdle() { return vkDeviceWaitIdle( vkDevice ); }
370     VkResult  AllocateMemory( const( VkMemoryAllocateInfo )* pAllocateInfo, VkDeviceMemory* pMemory ) { return vkAllocateMemory( vkDevice, pAllocateInfo, pAllocator, pMemory ); }
371     void      FreeMemory( VkDeviceMemory memory ) { vkFreeMemory( vkDevice, memory, pAllocator ); }
372     VkResult  MapMemory( VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData ) { return vkMapMemory( vkDevice, memory, offset, size, flags, ppData ); }
373     void      UnmapMemory( VkDeviceMemory memory ) { vkUnmapMemory( vkDevice, memory ); }
374     VkResult  FlushMappedMemoryRanges( uint32_t memoryRangeCount, const( VkMappedMemoryRange )* pMemoryRanges ) { return vkFlushMappedMemoryRanges( vkDevice, memoryRangeCount, pMemoryRanges ); }
375     VkResult  InvalidateMappedMemoryRanges( uint32_t memoryRangeCount, const( VkMappedMemoryRange )* pMemoryRanges ) { return vkInvalidateMappedMemoryRanges( vkDevice, memoryRangeCount, pMemoryRanges ); }
376     void      GetDeviceMemoryCommitment( VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes ) { vkGetDeviceMemoryCommitment( vkDevice, memory, pCommittedMemoryInBytes ); }
377     VkResult  BindBufferMemory( VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset ) { return vkBindBufferMemory( vkDevice, buffer, memory, memoryOffset ); }
378     VkResult  BindImageMemory( VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset ) { return vkBindImageMemory( vkDevice, image, memory, memoryOffset ); }
379     void      GetBufferMemoryRequirements( VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements ) { vkGetBufferMemoryRequirements( vkDevice, buffer, pMemoryRequirements ); }
380     void      GetImageMemoryRequirements( VkImage image, VkMemoryRequirements* pMemoryRequirements ) { vkGetImageMemoryRequirements( vkDevice, image, pMemoryRequirements ); }
381     void      GetImageSparseMemoryRequirements( VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements ) { vkGetImageSparseMemoryRequirements( vkDevice, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements ); }
382     VkResult  CreateFence( const( VkFenceCreateInfo )* pCreateInfo, VkFence* pFence ) { return vkCreateFence( vkDevice, pCreateInfo, pAllocator, pFence ); }
383     void      DestroyFence( VkFence fence ) { vkDestroyFence( vkDevice, fence, pAllocator ); }
384     VkResult  ResetFences( uint32_t fenceCount, const( VkFence )* pFences ) { return vkResetFences( vkDevice, fenceCount, pFences ); }
385     VkResult  GetFenceStatus( VkFence fence ) { return vkGetFenceStatus( vkDevice, fence ); }
386     VkResult  WaitForFences( uint32_t fenceCount, const( VkFence )* pFences, VkBool32 waitAll, uint64_t timeout ) { return vkWaitForFences( vkDevice, fenceCount, pFences, waitAll, timeout ); }
387     VkResult  CreateSemaphore( const( VkSemaphoreCreateInfo )* pCreateInfo, VkSemaphore* pSemaphore ) { return vkCreateSemaphore( vkDevice, pCreateInfo, pAllocator, pSemaphore ); }
388     void      DestroySemaphore( VkSemaphore semaphore ) { vkDestroySemaphore( vkDevice, semaphore, pAllocator ); }
389     VkResult  CreateEvent( const( VkEventCreateInfo )* pCreateInfo, VkEvent* pEvent ) { return vkCreateEvent( vkDevice, pCreateInfo, pAllocator, pEvent ); }
390     void      DestroyEvent( VkEvent event ) { vkDestroyEvent( vkDevice, event, pAllocator ); }
391     VkResult  GetEventStatus( VkEvent event ) { return vkGetEventStatus( vkDevice, event ); }
392     VkResult  SetEvent( VkEvent event ) { return vkSetEvent( vkDevice, event ); }
393     VkResult  ResetEvent( VkEvent event ) { return vkResetEvent( vkDevice, event ); }
394     VkResult  CreateQueryPool( const( VkQueryPoolCreateInfo )* pCreateInfo, VkQueryPool* pQueryPool ) { return vkCreateQueryPool( vkDevice, pCreateInfo, pAllocator, pQueryPool ); }
395     void      DestroyQueryPool( VkQueryPool queryPool ) { vkDestroyQueryPool( vkDevice, queryPool, pAllocator ); }
396     VkResult  GetQueryPoolResults( VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags ) { return vkGetQueryPoolResults( vkDevice, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags ); }
397     VkResult  CreateBuffer( const( VkBufferCreateInfo )* pCreateInfo, VkBuffer* pBuffer ) { return vkCreateBuffer( vkDevice, pCreateInfo, pAllocator, pBuffer ); }
398     void      DestroyBuffer( VkBuffer buffer ) { vkDestroyBuffer( vkDevice, buffer, pAllocator ); }
399     VkResult  CreateBufferView( const( VkBufferViewCreateInfo )* pCreateInfo, VkBufferView* pView ) { return vkCreateBufferView( vkDevice, pCreateInfo, pAllocator, pView ); }
400     void      DestroyBufferView( VkBufferView bufferView ) { vkDestroyBufferView( vkDevice, bufferView, pAllocator ); }
401     VkResult  CreateImage( const( VkImageCreateInfo )* pCreateInfo, VkImage* pImage ) { return vkCreateImage( vkDevice, pCreateInfo, pAllocator, pImage ); }
402     void      DestroyImage( VkImage image ) { vkDestroyImage( vkDevice, image, pAllocator ); }
403     void      GetImageSubresourceLayout( VkImage image, const( VkImageSubresource )* pSubresource, VkSubresourceLayout* pLayout ) { vkGetImageSubresourceLayout( vkDevice, image, pSubresource, pLayout ); }
404     VkResult  CreateImageView( const( VkImageViewCreateInfo )* pCreateInfo, VkImageView* pView ) { return vkCreateImageView( vkDevice, pCreateInfo, pAllocator, pView ); }
405     void      DestroyImageView( VkImageView imageView ) { vkDestroyImageView( vkDevice, imageView, pAllocator ); }
406     VkResult  CreateShaderModule( const( VkShaderModuleCreateInfo )* pCreateInfo, VkShaderModule* pShaderModule ) { return vkCreateShaderModule( vkDevice, pCreateInfo, pAllocator, pShaderModule ); }
407     void      DestroyShaderModule( VkShaderModule shaderModule ) { vkDestroyShaderModule( vkDevice, shaderModule, pAllocator ); }
408     VkResult  CreatePipelineCache( const( VkPipelineCacheCreateInfo )* pCreateInfo, VkPipelineCache* pPipelineCache ) { return vkCreatePipelineCache( vkDevice, pCreateInfo, pAllocator, pPipelineCache ); }
409     void      DestroyPipelineCache( VkPipelineCache pipelineCache ) { vkDestroyPipelineCache( vkDevice, pipelineCache, pAllocator ); }
410     VkResult  GetPipelineCacheData( VkPipelineCache pipelineCache, size_t* pDataSize, void* pData ) { return vkGetPipelineCacheData( vkDevice, pipelineCache, pDataSize, pData ); }
411     VkResult  MergePipelineCaches( VkPipelineCache dstCache, uint32_t srcCacheCount, const( VkPipelineCache )* pSrcCaches ) { return vkMergePipelineCaches( vkDevice, dstCache, srcCacheCount, pSrcCaches ); }
412     VkResult  CreateGraphicsPipelines( VkPipelineCache pipelineCache, uint32_t createInfoCount, const( VkGraphicsPipelineCreateInfo )* pCreateInfos, VkPipeline* pPipelines ) { return vkCreateGraphicsPipelines( vkDevice, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines ); }
413     VkResult  CreateComputePipelines( VkPipelineCache pipelineCache, uint32_t createInfoCount, const( VkComputePipelineCreateInfo )* pCreateInfos, VkPipeline* pPipelines ) { return vkCreateComputePipelines( vkDevice, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines ); }
414     void      DestroyPipeline( VkPipeline pipeline ) { vkDestroyPipeline( vkDevice, pipeline, pAllocator ); }
415     VkResult  CreatePipelineLayout( const( VkPipelineLayoutCreateInfo )* pCreateInfo, VkPipelineLayout* pPipelineLayout ) { return vkCreatePipelineLayout( vkDevice, pCreateInfo, pAllocator, pPipelineLayout ); }
416     void      DestroyPipelineLayout( VkPipelineLayout pipelineLayout ) { vkDestroyPipelineLayout( vkDevice, pipelineLayout, pAllocator ); }
417     VkResult  CreateSampler( const( VkSamplerCreateInfo )* pCreateInfo, VkSampler* pSampler ) { return vkCreateSampler( vkDevice, pCreateInfo, pAllocator, pSampler ); }
418     void      DestroySampler( VkSampler sampler ) { vkDestroySampler( vkDevice, sampler, pAllocator ); }
419     VkResult  CreateDescriptorSetLayout( const( VkDescriptorSetLayoutCreateInfo )* pCreateInfo, VkDescriptorSetLayout* pSetLayout ) { return vkCreateDescriptorSetLayout( vkDevice, pCreateInfo, pAllocator, pSetLayout ); }
420     void      DestroyDescriptorSetLayout( VkDescriptorSetLayout descriptorSetLayout ) { vkDestroyDescriptorSetLayout( vkDevice, descriptorSetLayout, pAllocator ); }
421     VkResult  CreateDescriptorPool( const( VkDescriptorPoolCreateInfo )* pCreateInfo, VkDescriptorPool* pDescriptorPool ) { return vkCreateDescriptorPool( vkDevice, pCreateInfo, pAllocator, pDescriptorPool ); }
422     void      DestroyDescriptorPool( VkDescriptorPool descriptorPool ) { vkDestroyDescriptorPool( vkDevice, descriptorPool, pAllocator ); }
423     VkResult  ResetDescriptorPool( VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags ) { return vkResetDescriptorPool( vkDevice, descriptorPool, flags ); }
424     VkResult  AllocateDescriptorSets( const( VkDescriptorSetAllocateInfo )* pAllocateInfo, VkDescriptorSet* pDescriptorSets ) { return vkAllocateDescriptorSets( vkDevice, pAllocateInfo, pDescriptorSets ); }
425     VkResult  FreeDescriptorSets( VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const( VkDescriptorSet )* pDescriptorSets ) { return vkFreeDescriptorSets( vkDevice, descriptorPool, descriptorSetCount, pDescriptorSets ); }
426     void      UpdateDescriptorSets( uint32_t descriptorWriteCount, const( VkWriteDescriptorSet )* pDescriptorWrites, uint32_t descriptorCopyCount, const( VkCopyDescriptorSet )* pDescriptorCopies ) { vkUpdateDescriptorSets( vkDevice, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies ); }
427     VkResult  CreateFramebuffer( const( VkFramebufferCreateInfo )* pCreateInfo, VkFramebuffer* pFramebuffer ) { return vkCreateFramebuffer( vkDevice, pCreateInfo, pAllocator, pFramebuffer ); }
428     void      DestroyFramebuffer( VkFramebuffer framebuffer ) { vkDestroyFramebuffer( vkDevice, framebuffer, pAllocator ); }
429     VkResult  CreateRenderPass( const( VkRenderPassCreateInfo )* pCreateInfo, VkRenderPass* pRenderPass ) { return vkCreateRenderPass( vkDevice, pCreateInfo, pAllocator, pRenderPass ); }
430     void      DestroyRenderPass( VkRenderPass renderPass ) { vkDestroyRenderPass( vkDevice, renderPass, pAllocator ); }
431     void      GetRenderAreaGranularity( VkRenderPass renderPass, VkExtent2D* pGranularity ) { vkGetRenderAreaGranularity( vkDevice, renderPass, pGranularity ); }
432     VkResult  CreateCommandPool( const( VkCommandPoolCreateInfo )* pCreateInfo, VkCommandPool* pCommandPool ) { return vkCreateCommandPool( vkDevice, pCreateInfo, pAllocator, pCommandPool ); }
433     void      DestroyCommandPool( VkCommandPool commandPool ) { vkDestroyCommandPool( vkDevice, commandPool, pAllocator ); }
434     VkResult  ResetCommandPool( VkCommandPool commandPool, VkCommandPoolResetFlags flags ) { return vkResetCommandPool( vkDevice, commandPool, flags ); }
435     VkResult  AllocateCommandBuffers( const( VkCommandBufferAllocateInfo )* pAllocateInfo, VkCommandBuffer* pCommandBuffers ) { return vkAllocateCommandBuffers( vkDevice, pAllocateInfo, pCommandBuffers ); }
436     void      FreeCommandBuffers( VkCommandPool commandPool, uint32_t commandBufferCount, const( VkCommandBuffer )* pCommandBuffers ) { vkFreeCommandBuffers( vkDevice, commandPool, commandBufferCount, pCommandBuffers ); }
437     VkResult  BeginCommandBuffer( const( VkCommandBufferBeginInfo )* pBeginInfo ) { return vkBeginCommandBuffer( commandBuffer, pBeginInfo ); }
438     VkResult  EndCommandBuffer() { return vkEndCommandBuffer( commandBuffer ); }
439     VkResult  ResetCommandBuffer( VkCommandBufferResetFlags flags ) { return vkResetCommandBuffer( commandBuffer, flags ); }
440     void      CmdBindPipeline( VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline ) { vkCmdBindPipeline( commandBuffer, pipelineBindPoint, pipeline ); }
441     void      CmdSetViewport( uint32_t firstViewport, uint32_t viewportCount, const( VkViewport )* pViewports ) { vkCmdSetViewport( commandBuffer, firstViewport, viewportCount, pViewports ); }
442     void      CmdSetScissor( uint32_t firstScissor, uint32_t scissorCount, const( VkRect2D )* pScissors ) { vkCmdSetScissor( commandBuffer, firstScissor, scissorCount, pScissors ); }
443     void      CmdSetLineWidth( float lineWidth ) { vkCmdSetLineWidth( commandBuffer, lineWidth ); }
444     void      CmdSetDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) { vkCmdSetDepthBias( commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor ); }
445     void      CmdSetBlendConstants( const float[4] blendConstants ) { vkCmdSetBlendConstants( commandBuffer, blendConstants ); }
446     void      CmdSetDepthBounds( float minDepthBounds, float maxDepthBounds ) { vkCmdSetDepthBounds( commandBuffer, minDepthBounds, maxDepthBounds ); }
447     void      CmdSetStencilCompareMask( VkStencilFaceFlags faceMask, uint32_t compareMask ) { vkCmdSetStencilCompareMask( commandBuffer, faceMask, compareMask ); }
448     void      CmdSetStencilWriteMask( VkStencilFaceFlags faceMask, uint32_t writeMask ) { vkCmdSetStencilWriteMask( commandBuffer, faceMask, writeMask ); }
449     void      CmdSetStencilReference( VkStencilFaceFlags faceMask, uint32_t reference ) { vkCmdSetStencilReference( commandBuffer, faceMask, reference ); }
450     void      CmdBindDescriptorSets( VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const( VkDescriptorSet )* pDescriptorSets, uint32_t dynamicOffsetCount, const( uint32_t )* pDynamicOffsets ) { vkCmdBindDescriptorSets( commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets ); }
451     void      CmdBindIndexBuffer( VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType ) { vkCmdBindIndexBuffer( commandBuffer, buffer, offset, indexType ); }
452     void      CmdBindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const( VkBuffer )* pBuffers, const( VkDeviceSize )* pOffsets ) { vkCmdBindVertexBuffers( commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets ); }
453     void      CmdDraw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) { vkCmdDraw( commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance ); }
454     void      CmdDrawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) { vkCmdDrawIndexed( commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance ); }
455     void      CmdDrawIndirect( VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride ) { vkCmdDrawIndirect( commandBuffer, buffer, offset, drawCount, stride ); }
456     void      CmdDrawIndexedIndirect( VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride ) { vkCmdDrawIndexedIndirect( commandBuffer, buffer, offset, drawCount, stride ); }
457     void      CmdDispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) { vkCmdDispatch( commandBuffer, groupCountX, groupCountY, groupCountZ ); }
458     void      CmdDispatchIndirect( VkBuffer buffer, VkDeviceSize offset ) { vkCmdDispatchIndirect( commandBuffer, buffer, offset ); }
459     void      CmdCopyBuffer( VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const( VkBufferCopy )* pRegions ) { vkCmdCopyBuffer( commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions ); }
460     void      CmdCopyImage( VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const( VkImageCopy )* pRegions ) { vkCmdCopyImage( commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions ); }
461     void      CmdBlitImage( VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const( VkImageBlit )* pRegions, VkFilter filter ) { vkCmdBlitImage( commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter ); }
462     void      CmdCopyBufferToImage( VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const( VkBufferImageCopy )* pRegions ) { vkCmdCopyBufferToImage( commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions ); }
463     void      CmdCopyImageToBuffer( VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const( VkBufferImageCopy )* pRegions ) { vkCmdCopyImageToBuffer( commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions ); }
464     void      CmdUpdateBuffer( VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const( void )* pData ) { vkCmdUpdateBuffer( commandBuffer, dstBuffer, dstOffset, dataSize, pData ); }
465     void      CmdFillBuffer( VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data ) { vkCmdFillBuffer( commandBuffer, dstBuffer, dstOffset, size, data ); }
466     void      CmdClearColorImage( VkImage image, VkImageLayout imageLayout, const( VkClearColorValue )* pColor, uint32_t rangeCount, const( VkImageSubresourceRange )* pRanges ) { vkCmdClearColorImage( commandBuffer, image, imageLayout, pColor, rangeCount, pRanges ); }
467     void      CmdClearDepthStencilImage( VkImage image, VkImageLayout imageLayout, const( VkClearDepthStencilValue )* pDepthStencil, uint32_t rangeCount, const( VkImageSubresourceRange )* pRanges ) { vkCmdClearDepthStencilImage( commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges ); }
468     void      CmdClearAttachments( uint32_t attachmentCount, const( VkClearAttachment )* pAttachments, uint32_t rectCount, const( VkClearRect )* pRects ) { vkCmdClearAttachments( commandBuffer, attachmentCount, pAttachments, rectCount, pRects ); }
469     void      CmdResolveImage( VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const( VkImageResolve )* pRegions ) { vkCmdResolveImage( commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions ); }
470     void      CmdSetEvent( VkEvent event, VkPipelineStageFlags stageMask ) { vkCmdSetEvent( commandBuffer, event, stageMask ); }
471     void      CmdResetEvent( VkEvent event, VkPipelineStageFlags stageMask ) { vkCmdResetEvent( commandBuffer, event, stageMask ); }
472     void      CmdWaitEvents( 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 ) { vkCmdWaitEvents( commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers ); }
473     void      CmdPipelineBarrier( VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const( VkMemoryBarrier )* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const( VkBufferMemoryBarrier )* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const( VkImageMemoryBarrier )* pImageMemoryBarriers ) { vkCmdPipelineBarrier( commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers ); }
474     void      CmdBeginQuery( VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags ) { vkCmdBeginQuery( commandBuffer, queryPool, query, flags ); }
475     void      CmdEndQuery( VkQueryPool queryPool, uint32_t query ) { vkCmdEndQuery( commandBuffer, queryPool, query ); }
476     void      CmdResetQueryPool( VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) { vkCmdResetQueryPool( commandBuffer, queryPool, firstQuery, queryCount ); }
477     void      CmdWriteTimestamp( VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query ) { vkCmdWriteTimestamp( commandBuffer, pipelineStage, queryPool, query ); }
478     void      CmdCopyQueryPoolResults( VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags ) { vkCmdCopyQueryPoolResults( commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags ); }
479     void      CmdPushConstants( VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const( void )* pValues ) { vkCmdPushConstants( commandBuffer, layout, stageFlags, offset, size, pValues ); }
480     void      CmdBeginRenderPass( const( VkRenderPassBeginInfo )* pRenderPassBegin, VkSubpassContents contents ) { vkCmdBeginRenderPass( commandBuffer, pRenderPassBegin, contents ); }
481     void      CmdNextSubpass( VkSubpassContents contents ) { vkCmdNextSubpass( commandBuffer, contents ); }
482     void      CmdEndRenderPass() { vkCmdEndRenderPass( commandBuffer ); }
483     void      CmdExecuteCommands( uint32_t commandBufferCount, const( VkCommandBuffer )* pCommandBuffers ) { vkCmdExecuteCommands( commandBuffer, commandBufferCount, pCommandBuffers ); }
484 
485     // VK_VERSION_1_1
486     VkResult  BindBufferMemory2( uint32_t bindInfoCount, const( VkBindBufferMemoryInfo )* pBindInfos ) { return vkBindBufferMemory2( vkDevice, bindInfoCount, pBindInfos ); }
487     VkResult  BindImageMemory2( uint32_t bindInfoCount, const( VkBindImageMemoryInfo )* pBindInfos ) { return vkBindImageMemory2( vkDevice, bindInfoCount, pBindInfos ); }
488     void      GetDeviceGroupPeerMemoryFeatures( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures ) { vkGetDeviceGroupPeerMemoryFeatures( vkDevice, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures ); }
489     void      CmdSetDeviceMask( uint32_t deviceMask ) { vkCmdSetDeviceMask( commandBuffer, deviceMask ); }
490     void      CmdDispatchBase( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) { vkCmdDispatchBase( commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ ); }
491     void      GetImageMemoryRequirements2( const( VkImageMemoryRequirementsInfo2 )* pInfo, VkMemoryRequirements2* pMemoryRequirements ) { vkGetImageMemoryRequirements2( vkDevice, pInfo, pMemoryRequirements ); }
492     void      GetBufferMemoryRequirements2( const( VkBufferMemoryRequirementsInfo2 )* pInfo, VkMemoryRequirements2* pMemoryRequirements ) { vkGetBufferMemoryRequirements2( vkDevice, pInfo, pMemoryRequirements ); }
493     void      GetImageSparseMemoryRequirements2( const( VkImageSparseMemoryRequirementsInfo2 )* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements ) { vkGetImageSparseMemoryRequirements2( vkDevice, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements ); }
494     void      TrimCommandPool( VkCommandPool commandPool, VkCommandPoolTrimFlags flags ) { vkTrimCommandPool( vkDevice, commandPool, flags ); }
495     void      GetDeviceQueue2( const( VkDeviceQueueInfo2 )* pQueueInfo, VkQueue* pQueue ) { vkGetDeviceQueue2( vkDevice, pQueueInfo, pQueue ); }
496     VkResult  CreateSamplerYcbcrConversion( const( VkSamplerYcbcrConversionCreateInfo )* pCreateInfo, VkSamplerYcbcrConversion* pYcbcrConversion ) { return vkCreateSamplerYcbcrConversion( vkDevice, pCreateInfo, pAllocator, pYcbcrConversion ); }
497     void      DestroySamplerYcbcrConversion( VkSamplerYcbcrConversion ycbcrConversion ) { vkDestroySamplerYcbcrConversion( vkDevice, ycbcrConversion, pAllocator ); }
498     VkResult  CreateDescriptorUpdateTemplate( const( VkDescriptorUpdateTemplateCreateInfo )* pCreateInfo, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate ) { return vkCreateDescriptorUpdateTemplate( vkDevice, pCreateInfo, pAllocator, pDescriptorUpdateTemplate ); }
499     void      DestroyDescriptorUpdateTemplate( VkDescriptorUpdateTemplate descriptorUpdateTemplate ) { vkDestroyDescriptorUpdateTemplate( vkDevice, descriptorUpdateTemplate, pAllocator ); }
500     void      UpdateDescriptorSetWithTemplate( VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const( void )* pData ) { vkUpdateDescriptorSetWithTemplate( vkDevice, descriptorSet, descriptorUpdateTemplate, pData ); }
501     void      GetDescriptorSetLayoutSupport( const( VkDescriptorSetLayoutCreateInfo )* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport ) { vkGetDescriptorSetLayoutSupport( vkDevice, pCreateInfo, pSupport ); }
502 
503     // VK_KHR_swapchain
504     VkResult  CreateSwapchainKHR( const( VkSwapchainCreateInfoKHR )* pCreateInfo, VkSwapchainKHR* pSwapchain ) { return vkCreateSwapchainKHR( vkDevice, pCreateInfo, pAllocator, pSwapchain ); }
505     void      DestroySwapchainKHR( VkSwapchainKHR swapchain ) { vkDestroySwapchainKHR( vkDevice, swapchain, pAllocator ); }
506     VkResult  GetSwapchainImagesKHR( VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages ) { return vkGetSwapchainImagesKHR( vkDevice, swapchain, pSwapchainImageCount, pSwapchainImages ); }
507     VkResult  AcquireNextImageKHR( VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex ) { return vkAcquireNextImageKHR( vkDevice, swapchain, timeout, semaphore, fence, pImageIndex ); }
508     VkResult  GetDeviceGroupPresentCapabilitiesKHR( VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities ) { return vkGetDeviceGroupPresentCapabilitiesKHR( vkDevice, pDeviceGroupPresentCapabilities ); }
509     VkResult  GetDeviceGroupSurfacePresentModesKHR( VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes ) { return vkGetDeviceGroupSurfacePresentModesKHR( vkDevice, surface, pModes ); }
510     VkResult  AcquireNextImage2KHR( const( VkAcquireNextImageInfoKHR )* pAcquireInfo, uint32_t* pImageIndex ) { return vkAcquireNextImage2KHR( vkDevice, pAcquireInfo, pImageIndex ); }
511 
512     // VK_KHR_display_swapchain
513     VkResult  CreateSharedSwapchainsKHR( uint32_t swapchainCount, const( VkSwapchainCreateInfoKHR )* pCreateInfos, VkSwapchainKHR* pSwapchains ) { return vkCreateSharedSwapchainsKHR( vkDevice, swapchainCount, pCreateInfos, pAllocator, pSwapchains ); }
514 
515     // VK_KHR_external_memory_fd
516     VkResult  GetMemoryFdKHR( const( VkMemoryGetFdInfoKHR )* pGetFdInfo, int* pFd ) { return vkGetMemoryFdKHR( vkDevice, pGetFdInfo, pFd ); }
517     VkResult  GetMemoryFdPropertiesKHR( VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties ) { return vkGetMemoryFdPropertiesKHR( vkDevice, handleType, fd, pMemoryFdProperties ); }
518 
519     // VK_KHR_external_semaphore_fd
520     VkResult  ImportSemaphoreFdKHR( const( VkImportSemaphoreFdInfoKHR )* pImportSemaphoreFdInfo ) { return vkImportSemaphoreFdKHR( vkDevice, pImportSemaphoreFdInfo ); }
521     VkResult  GetSemaphoreFdKHR( const( VkSemaphoreGetFdInfoKHR )* pGetFdInfo, int* pFd ) { return vkGetSemaphoreFdKHR( vkDevice, pGetFdInfo, pFd ); }
522 
523     // VK_KHR_push_descriptor
524     void      CmdPushDescriptorSetKHR( VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const( VkWriteDescriptorSet )* pDescriptorWrites ) { vkCmdPushDescriptorSetKHR( commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites ); }
525     void      CmdPushDescriptorSetWithTemplateKHR( VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const( void )* pData ) { vkCmdPushDescriptorSetWithTemplateKHR( commandBuffer, descriptorUpdateTemplate, layout, set, pData ); }
526 
527     // VK_KHR_create_renderpass2
528     VkResult  CreateRenderPass2KHR( const( VkRenderPassCreateInfo2KHR )* pCreateInfo, VkRenderPass* pRenderPass ) { return vkCreateRenderPass2KHR( vkDevice, pCreateInfo, pAllocator, pRenderPass ); }
529     void      CmdBeginRenderPass2KHR( const( VkRenderPassBeginInfo )* pRenderPassBegin, const( VkSubpassBeginInfoKHR )* pSubpassBeginInfo ) { vkCmdBeginRenderPass2KHR( commandBuffer, pRenderPassBegin, pSubpassBeginInfo ); }
530     void      CmdNextSubpass2KHR( const( VkSubpassBeginInfoKHR )* pSubpassBeginInfo, const( VkSubpassEndInfoKHR )* pSubpassEndInfo ) { vkCmdNextSubpass2KHR( commandBuffer, pSubpassBeginInfo, pSubpassEndInfo ); }
531     void      CmdEndRenderPass2KHR( const( VkSubpassEndInfoKHR )* pSubpassEndInfo ) { vkCmdEndRenderPass2KHR( commandBuffer, pSubpassEndInfo ); }
532 
533     // VK_KHR_shared_presentable_image
534     VkResult  GetSwapchainStatusKHR( VkSwapchainKHR swapchain ) { return vkGetSwapchainStatusKHR( vkDevice, swapchain ); }
535 
536     // VK_KHR_external_fence_fd
537     VkResult  ImportFenceFdKHR( const( VkImportFenceFdInfoKHR )* pImportFenceFdInfo ) { return vkImportFenceFdKHR( vkDevice, pImportFenceFdInfo ); }
538     VkResult  GetFenceFdKHR( const( VkFenceGetFdInfoKHR )* pGetFdInfo, int* pFd ) { return vkGetFenceFdKHR( vkDevice, pGetFdInfo, pFd ); }
539 
540     // VK_KHR_draw_indirect_count
541     void      CmdDrawIndirectCountKHR( VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) { vkCmdDrawIndirectCountKHR( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); }
542     void      CmdDrawIndexedIndirectCountKHR( VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) { vkCmdDrawIndexedIndirectCountKHR( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); }
543 
544     // VK_EXT_debug_marker
545     VkResult  DebugMarkerSetObjectTagEXT( const( VkDebugMarkerObjectTagInfoEXT )* pTagInfo ) { return vkDebugMarkerSetObjectTagEXT( vkDevice, pTagInfo ); }
546     VkResult  DebugMarkerSetObjectNameEXT( const( VkDebugMarkerObjectNameInfoEXT )* pNameInfo ) { return vkDebugMarkerSetObjectNameEXT( vkDevice, pNameInfo ); }
547     void      CmdDebugMarkerBeginEXT( const( VkDebugMarkerMarkerInfoEXT )* pMarkerInfo ) { vkCmdDebugMarkerBeginEXT( commandBuffer, pMarkerInfo ); }
548     void      CmdDebugMarkerEndEXT() { vkCmdDebugMarkerEndEXT( commandBuffer ); }
549     void      CmdDebugMarkerInsertEXT( const( VkDebugMarkerMarkerInfoEXT )* pMarkerInfo ) { vkCmdDebugMarkerInsertEXT( commandBuffer, pMarkerInfo ); }
550 
551     // VK_AMD_draw_indirect_count
552     void      CmdDrawIndirectCountAMD( VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) { vkCmdDrawIndirectCountAMD( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); }
553     void      CmdDrawIndexedIndirectCountAMD( VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) { vkCmdDrawIndexedIndirectCountAMD( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); }
554 
555     // VK_AMD_shader_info
556     VkResult  GetShaderInfoAMD( VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo ) { return vkGetShaderInfoAMD( vkDevice, pipeline, shaderStage, infoType, pInfoSize, pInfo ); }
557 
558     // VK_EXT_conditional_rendering
559     void      CmdBeginConditionalRenderingEXT( const( VkConditionalRenderingBeginInfoEXT )* pConditionalRenderingBegin ) { vkCmdBeginConditionalRenderingEXT( commandBuffer, pConditionalRenderingBegin ); }
560     void      CmdEndConditionalRenderingEXT() { vkCmdEndConditionalRenderingEXT( commandBuffer ); }
561 
562     // VK_NVX_device_generated_commands
563     void      CmdProcessCommandsNVX( const( VkCmdProcessCommandsInfoNVX )* pProcessCommandsInfo ) { vkCmdProcessCommandsNVX( commandBuffer, pProcessCommandsInfo ); }
564     void      CmdReserveSpaceForCommandsNVX( const( VkCmdReserveSpaceForCommandsInfoNVX )* pReserveSpaceInfo ) { vkCmdReserveSpaceForCommandsNVX( commandBuffer, pReserveSpaceInfo ); }
565     VkResult  CreateIndirectCommandsLayoutNVX( const( VkIndirectCommandsLayoutCreateInfoNVX )* pCreateInfo, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout ) { return vkCreateIndirectCommandsLayoutNVX( vkDevice, pCreateInfo, pAllocator, pIndirectCommandsLayout ); }
566     void      DestroyIndirectCommandsLayoutNVX( VkIndirectCommandsLayoutNVX indirectCommandsLayout ) { vkDestroyIndirectCommandsLayoutNVX( vkDevice, indirectCommandsLayout, pAllocator ); }
567     VkResult  CreateObjectTableNVX( const( VkObjectTableCreateInfoNVX )* pCreateInfo, VkObjectTableNVX* pObjectTable ) { return vkCreateObjectTableNVX( vkDevice, pCreateInfo, pAllocator, pObjectTable ); }
568     void      DestroyObjectTableNVX( VkObjectTableNVX objectTable ) { vkDestroyObjectTableNVX( vkDevice, objectTable, pAllocator ); }
569     VkResult  RegisterObjectsNVX( VkObjectTableNVX objectTable, uint32_t objectCount, const( VkObjectTableEntryNVX* )* ppObjectTableEntries, const( uint32_t )* pObjectIndices ) { return vkRegisterObjectsNVX( vkDevice, objectTable, objectCount, ppObjectTableEntries, pObjectIndices ); }
570     VkResult  UnregisterObjectsNVX( VkObjectTableNVX objectTable, uint32_t objectCount, const( VkObjectEntryTypeNVX )* pObjectEntryTypes, const( uint32_t )* pObjectIndices ) { return vkUnregisterObjectsNVX( vkDevice, objectTable, objectCount, pObjectEntryTypes, pObjectIndices ); }
571 
572     // VK_NV_clip_space_w_scaling
573     void      CmdSetViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const( VkViewportWScalingNV )* pViewportWScalings ) { vkCmdSetViewportWScalingNV( commandBuffer, firstViewport, viewportCount, pViewportWScalings ); }
574 
575     // VK_EXT_display_control
576     VkResult  DisplayPowerControlEXT( VkDisplayKHR display, const( VkDisplayPowerInfoEXT )* pDisplayPowerInfo ) { return vkDisplayPowerControlEXT( vkDevice, display, pDisplayPowerInfo ); }
577     VkResult  RegisterDeviceEventEXT( const( VkDeviceEventInfoEXT )* pDeviceEventInfo, VkFence* pFence ) { return vkRegisterDeviceEventEXT( vkDevice, pDeviceEventInfo, pAllocator, pFence ); }
578     VkResult  RegisterDisplayEventEXT( VkDisplayKHR display, const( VkDisplayEventInfoEXT )* pDisplayEventInfo, VkFence* pFence ) { return vkRegisterDisplayEventEXT( vkDevice, display, pDisplayEventInfo, pAllocator, pFence ); }
579     VkResult  GetSwapchainCounterEXT( VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) { return vkGetSwapchainCounterEXT( vkDevice, swapchain, counter, pCounterValue ); }
580 
581     // VK_GOOGLE_display_timing
582     VkResult  GetRefreshCycleDurationGOOGLE( VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties ) { return vkGetRefreshCycleDurationGOOGLE( vkDevice, swapchain, pDisplayTimingProperties ); }
583     VkResult  GetPastPresentationTimingGOOGLE( VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings ) { return vkGetPastPresentationTimingGOOGLE( vkDevice, swapchain, pPresentationTimingCount, pPresentationTimings ); }
584 
585     // VK_EXT_discard_rectangles
586     void      CmdSetDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const( VkRect2D )* pDiscardRectangles ) { vkCmdSetDiscardRectangleEXT( commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles ); }
587 
588     // VK_EXT_hdr_metadata
589     void      SetHdrMetadataEXT( uint32_t swapchainCount, const( VkSwapchainKHR )* pSwapchains, const( VkHdrMetadataEXT )* pMetadata ) { vkSetHdrMetadataEXT( vkDevice, swapchainCount, pSwapchains, pMetadata ); }
590 
591     // VK_EXT_debug_utils
592     VkResult  SetDebugUtilsObjectNameEXT( const( VkDebugUtilsObjectNameInfoEXT )* pNameInfo ) { return vkSetDebugUtilsObjectNameEXT( vkDevice, pNameInfo ); }
593     VkResult  SetDebugUtilsObjectTagEXT( const( VkDebugUtilsObjectTagInfoEXT )* pTagInfo ) { return vkSetDebugUtilsObjectTagEXT( vkDevice, pTagInfo ); }
594     void      CmdBeginDebugUtilsLabelEXT( const( VkDebugUtilsLabelEXT )* pLabelInfo ) { vkCmdBeginDebugUtilsLabelEXT( commandBuffer, pLabelInfo ); }
595     void      CmdEndDebugUtilsLabelEXT() { vkCmdEndDebugUtilsLabelEXT( commandBuffer ); }
596     void      CmdInsertDebugUtilsLabelEXT( const( VkDebugUtilsLabelEXT )* pLabelInfo ) { vkCmdInsertDebugUtilsLabelEXT( commandBuffer, pLabelInfo ); }
597 
598     // VK_EXT_sample_locations
599     void      CmdSetSampleLocationsEXT( const( VkSampleLocationsInfoEXT )* pSampleLocationsInfo ) { vkCmdSetSampleLocationsEXT( commandBuffer, pSampleLocationsInfo ); }
600 
601     // VK_EXT_validation_cache
602     VkResult  CreateValidationCacheEXT( const( VkValidationCacheCreateInfoEXT )* pCreateInfo, VkValidationCacheEXT* pValidationCache ) { return vkCreateValidationCacheEXT( vkDevice, pCreateInfo, pAllocator, pValidationCache ); }
603     void      DestroyValidationCacheEXT( VkValidationCacheEXT validationCache ) { vkDestroyValidationCacheEXT( vkDevice, validationCache, pAllocator ); }
604     VkResult  MergeValidationCachesEXT( VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const( VkValidationCacheEXT )* pSrcCaches ) { return vkMergeValidationCachesEXT( vkDevice, dstCache, srcCacheCount, pSrcCaches ); }
605     VkResult  GetValidationCacheDataEXT( VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData ) { return vkGetValidationCacheDataEXT( vkDevice, validationCache, pDataSize, pData ); }
606 
607     // VK_NV_shading_rate_image
608     void      CmdBindShadingRateImageNV( VkImageView imageView, VkImageLayout imageLayout ) { vkCmdBindShadingRateImageNV( commandBuffer, imageView, imageLayout ); }
609     void      CmdSetViewportShadingRatePaletteNV( uint32_t firstViewport, uint32_t viewportCount, const( VkShadingRatePaletteNV )* pShadingRatePalettes ) { vkCmdSetViewportShadingRatePaletteNV( commandBuffer, firstViewport, viewportCount, pShadingRatePalettes ); }
610     void      CmdSetCoarseSampleOrderNV( VkCoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, const( VkCoarseSampleOrderCustomNV )* pCustomSampleOrders ) { vkCmdSetCoarseSampleOrderNV( commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders ); }
611 
612     // VK_NVX_raytracing
613     VkResult  CreateAccelerationStructureNVX( const( VkAccelerationStructureCreateInfoNVX )* pCreateInfo, VkAccelerationStructureNVX* pAccelerationStructure ) { return vkCreateAccelerationStructureNVX( vkDevice, pCreateInfo, pAllocator, pAccelerationStructure ); }
614     void      DestroyAccelerationStructureNVX( VkAccelerationStructureNVX accelerationStructure ) { vkDestroyAccelerationStructureNVX( vkDevice, accelerationStructure, pAllocator ); }
615     void      GetAccelerationStructureMemoryRequirementsNVX( const( VkAccelerationStructureMemoryRequirementsInfoNVX )* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements ) { vkGetAccelerationStructureMemoryRequirementsNVX( vkDevice, pInfo, pMemoryRequirements ); }
616     void      GetAccelerationStructureScratchMemoryRequirementsNVX( const( VkAccelerationStructureMemoryRequirementsInfoNVX )* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements ) { vkGetAccelerationStructureScratchMemoryRequirementsNVX( vkDevice, pInfo, pMemoryRequirements ); }
617     VkResult  BindAccelerationStructureMemoryNVX( uint32_t bindInfoCount, const( VkBindAccelerationStructureMemoryInfoNVX )* pBindInfos ) { return vkBindAccelerationStructureMemoryNVX( vkDevice, bindInfoCount, pBindInfos ); }
618     void      CmdBuildAccelerationStructureNVX( 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 ) { vkCmdBuildAccelerationStructureNVX( commandBuffer, type, instanceCount, instanceData, instanceOffset, geometryCount, pGeometries, flags, update, dst, src, scratch, scratchOffset ); }
619     void      CmdCopyAccelerationStructureNVX( VkAccelerationStructureNVX dst, VkAccelerationStructureNVX src, VkCopyAccelerationStructureModeNVX mode ) { vkCmdCopyAccelerationStructureNVX( commandBuffer, dst, src, mode ); }
620     void      CmdTraceRaysNVX( VkBuffer raygenShaderBindingTableBuffer, VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer, VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride, VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset, VkDeviceSize hitShaderBindingStride, uint32_t width, uint32_t height ) { vkCmdTraceRaysNVX( commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, width, height ); }
621     VkResult  CreateRaytracingPipelinesNVX( VkPipelineCache pipelineCache, uint32_t createInfoCount, const( VkRaytracingPipelineCreateInfoNVX )* pCreateInfos, VkPipeline* pPipelines ) { return vkCreateRaytracingPipelinesNVX( vkDevice, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines ); }
622     VkResult  GetRaytracingShaderHandlesNVX( VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData ) { return vkGetRaytracingShaderHandlesNVX( vkDevice, pipeline, firstGroup, groupCount, dataSize, pData ); }
623     VkResult  GetAccelerationStructureHandleNVX( VkAccelerationStructureNVX accelerationStructure, size_t dataSize, void* pData ) { return vkGetAccelerationStructureHandleNVX( vkDevice, accelerationStructure, dataSize, pData ); }
624     void      CmdWriteAccelerationStructurePropertiesNVX( VkAccelerationStructureNVX accelerationStructure, VkQueryType queryType, VkQueryPool queryPool, uint32_t query ) { vkCmdWriteAccelerationStructurePropertiesNVX( commandBuffer, accelerationStructure, queryType, queryPool, query ); }
625     VkResult  CompileDeferredNVX( VkPipeline pipeline, uint32_t shader ) { return vkCompileDeferredNVX( vkDevice, pipeline, shader ); }
626 
627     // VK_EXT_external_memory_host
628     VkResult  GetMemoryHostPointerPropertiesEXT( VkExternalMemoryHandleTypeFlagBits handleType, const( void )* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties ) { return vkGetMemoryHostPointerPropertiesEXT( vkDevice, handleType, pHostPointer, pMemoryHostPointerProperties ); }
629 
630     // VK_AMD_buffer_marker
631     void      CmdWriteBufferMarkerAMD( VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker ) { vkCmdWriteBufferMarkerAMD( commandBuffer, pipelineStage, dstBuffer, dstOffset, marker ); }
632 
633     // VK_NV_mesh_shader
634     void      CmdDrawMeshTasksNV( uint32_t taskCount, uint32_t firstTask ) { vkCmdDrawMeshTasksNV( commandBuffer, taskCount, firstTask ); }
635     void      CmdDrawMeshTasksIndirectNV( VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride ) { vkCmdDrawMeshTasksIndirectNV( commandBuffer, buffer, offset, drawCount, stride ); }
636     void      CmdDrawMeshTasksIndirectCountNV( VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) { vkCmdDrawMeshTasksIndirectCountNV( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); }
637 
638     // VK_NV_scissor_exclusive
639     void      CmdSetExclusiveScissorNV( uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const( VkRect2D )* pExclusiveScissors ) { vkCmdSetExclusiveScissorNV( commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors ); }
640 
641     // VK_NV_device_diagnostic_checkpoints
642     void      CmdSetCheckpointNV( const( void )* pCheckpointMarker ) { vkCmdSetCheckpointNV( commandBuffer, pCheckpointMarker ); }
643 
644     // VK_KHR_device_group
645     alias GetDeviceGroupPeerMemoryFeaturesKHR                        = GetDeviceGroupPeerMemoryFeatures;
646     alias CmdSetDeviceMaskKHR                                        = CmdSetDeviceMask;
647     alias CmdDispatchBaseKHR                                         = CmdDispatchBase;
648 
649     // VK_KHR_maintenance1
650     alias TrimCommandPoolKHR                                         = TrimCommandPool;
651 
652     // VK_KHR_descriptor_update_template
653     alias CreateDescriptorUpdateTemplateKHR                          = CreateDescriptorUpdateTemplate;
654     alias DestroyDescriptorUpdateTemplateKHR                         = DestroyDescriptorUpdateTemplate;
655     alias UpdateDescriptorSetWithTemplateKHR                         = UpdateDescriptorSetWithTemplate;
656 
657     // VK_KHR_get_memory_requirements2
658     alias GetImageMemoryRequirements2KHR                             = GetImageMemoryRequirements2;
659     alias GetBufferMemoryRequirements2KHR                            = GetBufferMemoryRequirements2;
660     alias GetImageSparseMemoryRequirements2KHR                       = GetImageSparseMemoryRequirements2;
661 
662     // VK_KHR_sampler_ycbcr_conversion
663     alias CreateSamplerYcbcrConversionKHR                            = CreateSamplerYcbcrConversion;
664     alias DestroySamplerYcbcrConversionKHR                           = DestroySamplerYcbcrConversion;
665 
666     // VK_KHR_bind_memory2
667     alias BindBufferMemory2KHR                                       = BindBufferMemory2;
668     alias BindImageMemory2KHR                                        = BindImageMemory2;
669 
670     // VK_KHR_maintenance3
671     alias GetDescriptorSetLayoutSupportKHR                           = GetDescriptorSetLayoutSupport;
672 
673 
674     /// member function pointer decelerations
675 
676     // VK_VERSION_1_0
677     PFN_vkDestroyDevice                                        vkDestroyDevice;
678     PFN_vkGetDeviceQueue                                       vkGetDeviceQueue;
679     PFN_vkQueueSubmit                                          vkQueueSubmit;
680     PFN_vkQueueWaitIdle                                        vkQueueWaitIdle;
681     PFN_vkDeviceWaitIdle                                       vkDeviceWaitIdle;
682     PFN_vkAllocateMemory                                       vkAllocateMemory;
683     PFN_vkFreeMemory                                           vkFreeMemory;
684     PFN_vkMapMemory                                            vkMapMemory;
685     PFN_vkUnmapMemory                                          vkUnmapMemory;
686     PFN_vkFlushMappedMemoryRanges                              vkFlushMappedMemoryRanges;
687     PFN_vkInvalidateMappedMemoryRanges                         vkInvalidateMappedMemoryRanges;
688     PFN_vkGetDeviceMemoryCommitment                            vkGetDeviceMemoryCommitment;
689     PFN_vkBindBufferMemory                                     vkBindBufferMemory;
690     PFN_vkBindImageMemory                                      vkBindImageMemory;
691     PFN_vkGetBufferMemoryRequirements                          vkGetBufferMemoryRequirements;
692     PFN_vkGetImageMemoryRequirements                           vkGetImageMemoryRequirements;
693     PFN_vkGetImageSparseMemoryRequirements                     vkGetImageSparseMemoryRequirements;
694     PFN_vkQueueBindSparse                                      vkQueueBindSparse;
695     PFN_vkCreateFence                                          vkCreateFence;
696     PFN_vkDestroyFence                                         vkDestroyFence;
697     PFN_vkResetFences                                          vkResetFences;
698     PFN_vkGetFenceStatus                                       vkGetFenceStatus;
699     PFN_vkWaitForFences                                        vkWaitForFences;
700     PFN_vkCreateSemaphore                                      vkCreateSemaphore;
701     PFN_vkDestroySemaphore                                     vkDestroySemaphore;
702     PFN_vkCreateEvent                                          vkCreateEvent;
703     PFN_vkDestroyEvent                                         vkDestroyEvent;
704     PFN_vkGetEventStatus                                       vkGetEventStatus;
705     PFN_vkSetEvent                                             vkSetEvent;
706     PFN_vkResetEvent                                           vkResetEvent;
707     PFN_vkCreateQueryPool                                      vkCreateQueryPool;
708     PFN_vkDestroyQueryPool                                     vkDestroyQueryPool;
709     PFN_vkGetQueryPoolResults                                  vkGetQueryPoolResults;
710     PFN_vkCreateBuffer                                         vkCreateBuffer;
711     PFN_vkDestroyBuffer                                        vkDestroyBuffer;
712     PFN_vkCreateBufferView                                     vkCreateBufferView;
713     PFN_vkDestroyBufferView                                    vkDestroyBufferView;
714     PFN_vkCreateImage                                          vkCreateImage;
715     PFN_vkDestroyImage                                         vkDestroyImage;
716     PFN_vkGetImageSubresourceLayout                            vkGetImageSubresourceLayout;
717     PFN_vkCreateImageView                                      vkCreateImageView;
718     PFN_vkDestroyImageView                                     vkDestroyImageView;
719     PFN_vkCreateShaderModule                                   vkCreateShaderModule;
720     PFN_vkDestroyShaderModule                                  vkDestroyShaderModule;
721     PFN_vkCreatePipelineCache                                  vkCreatePipelineCache;
722     PFN_vkDestroyPipelineCache                                 vkDestroyPipelineCache;
723     PFN_vkGetPipelineCacheData                                 vkGetPipelineCacheData;
724     PFN_vkMergePipelineCaches                                  vkMergePipelineCaches;
725     PFN_vkCreateGraphicsPipelines                              vkCreateGraphicsPipelines;
726     PFN_vkCreateComputePipelines                               vkCreateComputePipelines;
727     PFN_vkDestroyPipeline                                      vkDestroyPipeline;
728     PFN_vkCreatePipelineLayout                                 vkCreatePipelineLayout;
729     PFN_vkDestroyPipelineLayout                                vkDestroyPipelineLayout;
730     PFN_vkCreateSampler                                        vkCreateSampler;
731     PFN_vkDestroySampler                                       vkDestroySampler;
732     PFN_vkCreateDescriptorSetLayout                            vkCreateDescriptorSetLayout;
733     PFN_vkDestroyDescriptorSetLayout                           vkDestroyDescriptorSetLayout;
734     PFN_vkCreateDescriptorPool                                 vkCreateDescriptorPool;
735     PFN_vkDestroyDescriptorPool                                vkDestroyDescriptorPool;
736     PFN_vkResetDescriptorPool                                  vkResetDescriptorPool;
737     PFN_vkAllocateDescriptorSets                               vkAllocateDescriptorSets;
738     PFN_vkFreeDescriptorSets                                   vkFreeDescriptorSets;
739     PFN_vkUpdateDescriptorSets                                 vkUpdateDescriptorSets;
740     PFN_vkCreateFramebuffer                                    vkCreateFramebuffer;
741     PFN_vkDestroyFramebuffer                                   vkDestroyFramebuffer;
742     PFN_vkCreateRenderPass                                     vkCreateRenderPass;
743     PFN_vkDestroyRenderPass                                    vkDestroyRenderPass;
744     PFN_vkGetRenderAreaGranularity                             vkGetRenderAreaGranularity;
745     PFN_vkCreateCommandPool                                    vkCreateCommandPool;
746     PFN_vkDestroyCommandPool                                   vkDestroyCommandPool;
747     PFN_vkResetCommandPool                                     vkResetCommandPool;
748     PFN_vkAllocateCommandBuffers                               vkAllocateCommandBuffers;
749     PFN_vkFreeCommandBuffers                                   vkFreeCommandBuffers;
750     PFN_vkBeginCommandBuffer                                   vkBeginCommandBuffer;
751     PFN_vkEndCommandBuffer                                     vkEndCommandBuffer;
752     PFN_vkResetCommandBuffer                                   vkResetCommandBuffer;
753     PFN_vkCmdBindPipeline                                      vkCmdBindPipeline;
754     PFN_vkCmdSetViewport                                       vkCmdSetViewport;
755     PFN_vkCmdSetScissor                                        vkCmdSetScissor;
756     PFN_vkCmdSetLineWidth                                      vkCmdSetLineWidth;
757     PFN_vkCmdSetDepthBias                                      vkCmdSetDepthBias;
758     PFN_vkCmdSetBlendConstants                                 vkCmdSetBlendConstants;
759     PFN_vkCmdSetDepthBounds                                    vkCmdSetDepthBounds;
760     PFN_vkCmdSetStencilCompareMask                             vkCmdSetStencilCompareMask;
761     PFN_vkCmdSetStencilWriteMask                               vkCmdSetStencilWriteMask;
762     PFN_vkCmdSetStencilReference                               vkCmdSetStencilReference;
763     PFN_vkCmdBindDescriptorSets                                vkCmdBindDescriptorSets;
764     PFN_vkCmdBindIndexBuffer                                   vkCmdBindIndexBuffer;
765     PFN_vkCmdBindVertexBuffers                                 vkCmdBindVertexBuffers;
766     PFN_vkCmdDraw                                              vkCmdDraw;
767     PFN_vkCmdDrawIndexed                                       vkCmdDrawIndexed;
768     PFN_vkCmdDrawIndirect                                      vkCmdDrawIndirect;
769     PFN_vkCmdDrawIndexedIndirect                               vkCmdDrawIndexedIndirect;
770     PFN_vkCmdDispatch                                          vkCmdDispatch;
771     PFN_vkCmdDispatchIndirect                                  vkCmdDispatchIndirect;
772     PFN_vkCmdCopyBuffer                                        vkCmdCopyBuffer;
773     PFN_vkCmdCopyImage                                         vkCmdCopyImage;
774     PFN_vkCmdBlitImage                                         vkCmdBlitImage;
775     PFN_vkCmdCopyBufferToImage                                 vkCmdCopyBufferToImage;
776     PFN_vkCmdCopyImageToBuffer                                 vkCmdCopyImageToBuffer;
777     PFN_vkCmdUpdateBuffer                                      vkCmdUpdateBuffer;
778     PFN_vkCmdFillBuffer                                        vkCmdFillBuffer;
779     PFN_vkCmdClearColorImage                                   vkCmdClearColorImage;
780     PFN_vkCmdClearDepthStencilImage                            vkCmdClearDepthStencilImage;
781     PFN_vkCmdClearAttachments                                  vkCmdClearAttachments;
782     PFN_vkCmdResolveImage                                      vkCmdResolveImage;
783     PFN_vkCmdSetEvent                                          vkCmdSetEvent;
784     PFN_vkCmdResetEvent                                        vkCmdResetEvent;
785     PFN_vkCmdWaitEvents                                        vkCmdWaitEvents;
786     PFN_vkCmdPipelineBarrier                                   vkCmdPipelineBarrier;
787     PFN_vkCmdBeginQuery                                        vkCmdBeginQuery;
788     PFN_vkCmdEndQuery                                          vkCmdEndQuery;
789     PFN_vkCmdResetQueryPool                                    vkCmdResetQueryPool;
790     PFN_vkCmdWriteTimestamp                                    vkCmdWriteTimestamp;
791     PFN_vkCmdCopyQueryPoolResults                              vkCmdCopyQueryPoolResults;
792     PFN_vkCmdPushConstants                                     vkCmdPushConstants;
793     PFN_vkCmdBeginRenderPass                                   vkCmdBeginRenderPass;
794     PFN_vkCmdNextSubpass                                       vkCmdNextSubpass;
795     PFN_vkCmdEndRenderPass                                     vkCmdEndRenderPass;
796     PFN_vkCmdExecuteCommands                                   vkCmdExecuteCommands;
797 
798     // VK_VERSION_1_1
799     PFN_vkBindBufferMemory2                                    vkBindBufferMemory2;
800     PFN_vkBindImageMemory2                                     vkBindImageMemory2;
801     PFN_vkGetDeviceGroupPeerMemoryFeatures                     vkGetDeviceGroupPeerMemoryFeatures;
802     PFN_vkCmdSetDeviceMask                                     vkCmdSetDeviceMask;
803     PFN_vkCmdDispatchBase                                      vkCmdDispatchBase;
804     PFN_vkGetImageMemoryRequirements2                          vkGetImageMemoryRequirements2;
805     PFN_vkGetBufferMemoryRequirements2                         vkGetBufferMemoryRequirements2;
806     PFN_vkGetImageSparseMemoryRequirements2                    vkGetImageSparseMemoryRequirements2;
807     PFN_vkTrimCommandPool                                      vkTrimCommandPool;
808     PFN_vkGetDeviceQueue2                                      vkGetDeviceQueue2;
809     PFN_vkCreateSamplerYcbcrConversion                         vkCreateSamplerYcbcrConversion;
810     PFN_vkDestroySamplerYcbcrConversion                        vkDestroySamplerYcbcrConversion;
811     PFN_vkCreateDescriptorUpdateTemplate                       vkCreateDescriptorUpdateTemplate;
812     PFN_vkDestroyDescriptorUpdateTemplate                      vkDestroyDescriptorUpdateTemplate;
813     PFN_vkUpdateDescriptorSetWithTemplate                      vkUpdateDescriptorSetWithTemplate;
814     PFN_vkGetDescriptorSetLayoutSupport                        vkGetDescriptorSetLayoutSupport;
815 
816     // VK_KHR_swapchain
817     PFN_vkCreateSwapchainKHR                                   vkCreateSwapchainKHR;
818     PFN_vkDestroySwapchainKHR                                  vkDestroySwapchainKHR;
819     PFN_vkGetSwapchainImagesKHR                                vkGetSwapchainImagesKHR;
820     PFN_vkAcquireNextImageKHR                                  vkAcquireNextImageKHR;
821     PFN_vkQueuePresentKHR                                      vkQueuePresentKHR;
822     PFN_vkGetDeviceGroupPresentCapabilitiesKHR                 vkGetDeviceGroupPresentCapabilitiesKHR;
823     PFN_vkGetDeviceGroupSurfacePresentModesKHR                 vkGetDeviceGroupSurfacePresentModesKHR;
824     PFN_vkAcquireNextImage2KHR                                 vkAcquireNextImage2KHR;
825 
826     // VK_KHR_display_swapchain
827     PFN_vkCreateSharedSwapchainsKHR                            vkCreateSharedSwapchainsKHR;
828 
829     // VK_KHR_external_memory_fd
830     PFN_vkGetMemoryFdKHR                                       vkGetMemoryFdKHR;
831     PFN_vkGetMemoryFdPropertiesKHR                             vkGetMemoryFdPropertiesKHR;
832 
833     // VK_KHR_external_semaphore_fd
834     PFN_vkImportSemaphoreFdKHR                                 vkImportSemaphoreFdKHR;
835     PFN_vkGetSemaphoreFdKHR                                    vkGetSemaphoreFdKHR;
836 
837     // VK_KHR_push_descriptor
838     PFN_vkCmdPushDescriptorSetKHR                              vkCmdPushDescriptorSetKHR;
839     PFN_vkCmdPushDescriptorSetWithTemplateKHR                  vkCmdPushDescriptorSetWithTemplateKHR;
840 
841     // VK_KHR_create_renderpass2
842     PFN_vkCreateRenderPass2KHR                                 vkCreateRenderPass2KHR;
843     PFN_vkCmdBeginRenderPass2KHR                               vkCmdBeginRenderPass2KHR;
844     PFN_vkCmdNextSubpass2KHR                                   vkCmdNextSubpass2KHR;
845     PFN_vkCmdEndRenderPass2KHR                                 vkCmdEndRenderPass2KHR;
846 
847     // VK_KHR_shared_presentable_image
848     PFN_vkGetSwapchainStatusKHR                                vkGetSwapchainStatusKHR;
849 
850     // VK_KHR_external_fence_fd
851     PFN_vkImportFenceFdKHR                                     vkImportFenceFdKHR;
852     PFN_vkGetFenceFdKHR                                        vkGetFenceFdKHR;
853 
854     // VK_KHR_draw_indirect_count
855     PFN_vkCmdDrawIndirectCountKHR                              vkCmdDrawIndirectCountKHR;
856     PFN_vkCmdDrawIndexedIndirectCountKHR                       vkCmdDrawIndexedIndirectCountKHR;
857 
858     // VK_EXT_debug_marker
859     PFN_vkDebugMarkerSetObjectTagEXT                           vkDebugMarkerSetObjectTagEXT;
860     PFN_vkDebugMarkerSetObjectNameEXT                          vkDebugMarkerSetObjectNameEXT;
861     PFN_vkCmdDebugMarkerBeginEXT                               vkCmdDebugMarkerBeginEXT;
862     PFN_vkCmdDebugMarkerEndEXT                                 vkCmdDebugMarkerEndEXT;
863     PFN_vkCmdDebugMarkerInsertEXT                              vkCmdDebugMarkerInsertEXT;
864 
865     // VK_AMD_draw_indirect_count
866     PFN_vkCmdDrawIndirectCountAMD                              vkCmdDrawIndirectCountAMD;
867     PFN_vkCmdDrawIndexedIndirectCountAMD                       vkCmdDrawIndexedIndirectCountAMD;
868 
869     // VK_AMD_shader_info
870     PFN_vkGetShaderInfoAMD                                     vkGetShaderInfoAMD;
871 
872     // VK_EXT_conditional_rendering
873     PFN_vkCmdBeginConditionalRenderingEXT                      vkCmdBeginConditionalRenderingEXT;
874     PFN_vkCmdEndConditionalRenderingEXT                        vkCmdEndConditionalRenderingEXT;
875 
876     // VK_NVX_device_generated_commands
877     PFN_vkCmdProcessCommandsNVX                                vkCmdProcessCommandsNVX;
878     PFN_vkCmdReserveSpaceForCommandsNVX                        vkCmdReserveSpaceForCommandsNVX;
879     PFN_vkCreateIndirectCommandsLayoutNVX                      vkCreateIndirectCommandsLayoutNVX;
880     PFN_vkDestroyIndirectCommandsLayoutNVX                     vkDestroyIndirectCommandsLayoutNVX;
881     PFN_vkCreateObjectTableNVX                                 vkCreateObjectTableNVX;
882     PFN_vkDestroyObjectTableNVX                                vkDestroyObjectTableNVX;
883     PFN_vkRegisterObjectsNVX                                   vkRegisterObjectsNVX;
884     PFN_vkUnregisterObjectsNVX                                 vkUnregisterObjectsNVX;
885 
886     // VK_NV_clip_space_w_scaling
887     PFN_vkCmdSetViewportWScalingNV                             vkCmdSetViewportWScalingNV;
888 
889     // VK_EXT_display_control
890     PFN_vkDisplayPowerControlEXT                               vkDisplayPowerControlEXT;
891     PFN_vkRegisterDeviceEventEXT                               vkRegisterDeviceEventEXT;
892     PFN_vkRegisterDisplayEventEXT                              vkRegisterDisplayEventEXT;
893     PFN_vkGetSwapchainCounterEXT                               vkGetSwapchainCounterEXT;
894 
895     // VK_GOOGLE_display_timing
896     PFN_vkGetRefreshCycleDurationGOOGLE                        vkGetRefreshCycleDurationGOOGLE;
897     PFN_vkGetPastPresentationTimingGOOGLE                      vkGetPastPresentationTimingGOOGLE;
898 
899     // VK_EXT_discard_rectangles
900     PFN_vkCmdSetDiscardRectangleEXT                            vkCmdSetDiscardRectangleEXT;
901 
902     // VK_EXT_hdr_metadata
903     PFN_vkSetHdrMetadataEXT                                    vkSetHdrMetadataEXT;
904 
905     // VK_EXT_debug_utils
906     PFN_vkSetDebugUtilsObjectNameEXT                           vkSetDebugUtilsObjectNameEXT;
907     PFN_vkSetDebugUtilsObjectTagEXT                            vkSetDebugUtilsObjectTagEXT;
908     PFN_vkQueueBeginDebugUtilsLabelEXT                         vkQueueBeginDebugUtilsLabelEXT;
909     PFN_vkQueueEndDebugUtilsLabelEXT                           vkQueueEndDebugUtilsLabelEXT;
910     PFN_vkQueueInsertDebugUtilsLabelEXT                        vkQueueInsertDebugUtilsLabelEXT;
911     PFN_vkCmdBeginDebugUtilsLabelEXT                           vkCmdBeginDebugUtilsLabelEXT;
912     PFN_vkCmdEndDebugUtilsLabelEXT                             vkCmdEndDebugUtilsLabelEXT;
913     PFN_vkCmdInsertDebugUtilsLabelEXT                          vkCmdInsertDebugUtilsLabelEXT;
914 
915     // VK_EXT_sample_locations
916     PFN_vkCmdSetSampleLocationsEXT                             vkCmdSetSampleLocationsEXT;
917 
918     // VK_EXT_validation_cache
919     PFN_vkCreateValidationCacheEXT                             vkCreateValidationCacheEXT;
920     PFN_vkDestroyValidationCacheEXT                            vkDestroyValidationCacheEXT;
921     PFN_vkMergeValidationCachesEXT                             vkMergeValidationCachesEXT;
922     PFN_vkGetValidationCacheDataEXT                            vkGetValidationCacheDataEXT;
923 
924     // VK_NV_shading_rate_image
925     PFN_vkCmdBindShadingRateImageNV                            vkCmdBindShadingRateImageNV;
926     PFN_vkCmdSetViewportShadingRatePaletteNV                   vkCmdSetViewportShadingRatePaletteNV;
927     PFN_vkCmdSetCoarseSampleOrderNV                            vkCmdSetCoarseSampleOrderNV;
928 
929     // VK_NVX_raytracing
930     PFN_vkCreateAccelerationStructureNVX                       vkCreateAccelerationStructureNVX;
931     PFN_vkDestroyAccelerationStructureNVX                      vkDestroyAccelerationStructureNVX;
932     PFN_vkGetAccelerationStructureMemoryRequirementsNVX        vkGetAccelerationStructureMemoryRequirementsNVX;
933     PFN_vkGetAccelerationStructureScratchMemoryRequirementsNVX vkGetAccelerationStructureScratchMemoryRequirementsNVX;
934     PFN_vkBindAccelerationStructureMemoryNVX                   vkBindAccelerationStructureMemoryNVX;
935     PFN_vkCmdBuildAccelerationStructureNVX                     vkCmdBuildAccelerationStructureNVX;
936     PFN_vkCmdCopyAccelerationStructureNVX                      vkCmdCopyAccelerationStructureNVX;
937     PFN_vkCmdTraceRaysNVX                                      vkCmdTraceRaysNVX;
938     PFN_vkCreateRaytracingPipelinesNVX                         vkCreateRaytracingPipelinesNVX;
939     PFN_vkGetRaytracingShaderHandlesNVX                        vkGetRaytracingShaderHandlesNVX;
940     PFN_vkGetAccelerationStructureHandleNVX                    vkGetAccelerationStructureHandleNVX;
941     PFN_vkCmdWriteAccelerationStructurePropertiesNVX           vkCmdWriteAccelerationStructurePropertiesNVX;
942     PFN_vkCompileDeferredNVX                                   vkCompileDeferredNVX;
943 
944     // VK_EXT_external_memory_host
945     PFN_vkGetMemoryHostPointerPropertiesEXT                    vkGetMemoryHostPointerPropertiesEXT;
946 
947     // VK_AMD_buffer_marker
948     PFN_vkCmdWriteBufferMarkerAMD                              vkCmdWriteBufferMarkerAMD;
949 
950     // VK_NV_mesh_shader
951     PFN_vkCmdDrawMeshTasksNV                                   vkCmdDrawMeshTasksNV;
952     PFN_vkCmdDrawMeshTasksIndirectNV                           vkCmdDrawMeshTasksIndirectNV;
953     PFN_vkCmdDrawMeshTasksIndirectCountNV                      vkCmdDrawMeshTasksIndirectCountNV;
954 
955     // VK_NV_scissor_exclusive
956     PFN_vkCmdSetExclusiveScissorNV                             vkCmdSetExclusiveScissorNV;
957 
958     // VK_NV_device_diagnostic_checkpoints
959     PFN_vkCmdSetCheckpointNV                                   vkCmdSetCheckpointNV;
960     PFN_vkGetQueueCheckpointDataNV                             vkGetQueueCheckpointDataNV;
961 
962     // VK_KHR_device_group
963     alias vkGetDeviceGroupPeerMemoryFeaturesKHR                        = vkGetDeviceGroupPeerMemoryFeatures;
964     alias vkCmdSetDeviceMaskKHR                                        = vkCmdSetDeviceMask;
965     alias vkCmdDispatchBaseKHR                                         = vkCmdDispatchBase;
966 
967     // VK_KHR_maintenance1
968     alias vkTrimCommandPoolKHR                                         = vkTrimCommandPool;
969 
970     // VK_KHR_descriptor_update_template
971     alias vkCreateDescriptorUpdateTemplateKHR                          = vkCreateDescriptorUpdateTemplate;
972     alias vkDestroyDescriptorUpdateTemplateKHR                         = vkDestroyDescriptorUpdateTemplate;
973     alias vkUpdateDescriptorSetWithTemplateKHR                         = vkUpdateDescriptorSetWithTemplate;
974 
975     // VK_KHR_get_memory_requirements2
976     alias vkGetImageMemoryRequirements2KHR                             = vkGetImageMemoryRequirements2;
977     alias vkGetBufferMemoryRequirements2KHR                            = vkGetBufferMemoryRequirements2;
978     alias vkGetImageSparseMemoryRequirements2KHR                       = vkGetImageSparseMemoryRequirements2;
979 
980     // VK_KHR_sampler_ycbcr_conversion
981     alias vkCreateSamplerYcbcrConversionKHR                            = vkCreateSamplerYcbcrConversion;
982     alias vkDestroySamplerYcbcrConversionKHR                           = vkDestroySamplerYcbcrConversion;
983 
984     // VK_KHR_bind_memory2
985     alias vkBindBufferMemory2KHR                                       = vkBindBufferMemory2;
986     alias vkBindImageMemory2KHR                                        = vkBindImageMemory2;
987 
988     // VK_KHR_maintenance3
989     alias vkGetDescriptorSetLayoutSupportKHR                           = vkGetDescriptorSetLayoutSupport;
990 }
991