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