layers: Mem reqs 2 entry points
authorMike Schuchardt <mikes@lunarg.com>
Wed, 10 Jan 2018 22:11:06 +0000 (15:11 -0700)
committerMike Schuchardt <mikes@lunarg.com>
Wed, 31 Jan 2018 23:26:01 +0000 (16:26 -0700)
Add entry points for VK_KHR_get_memory_requirements2 and wire up to
existing validation.

Change-Id: I3f9170b0171efc5a22ddb1e3b68185cedd17bca5

layers/core_validation.cpp

index 2257178..69946bd 100644 (file)
@@ -3858,10 +3858,7 @@ VKAPI_ATTR VkResult VKAPI_CALL BindBufferMemory(VkDevice device, VkBuffer buffer
     return result;
 }
 
-VKAPI_ATTR void VKAPI_CALL GetBufferMemoryRequirements(VkDevice device, VkBuffer buffer,
-                                                       VkMemoryRequirements *pMemoryRequirements) {
-    layer_data *dev_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
-    dev_data->dispatch_table.GetBufferMemoryRequirements(device, buffer, pMemoryRequirements);
+static void PostCallRecordGetBufferMemoryRequirements(layer_data *dev_data, VkBuffer buffer, VkMemoryRequirements *pMemoryRequirements) {
     BUFFER_STATE* buffer_state;
     {
         unique_lock_t lock(global_lock);
@@ -3873,9 +3870,21 @@ VKAPI_ATTR void VKAPI_CALL GetBufferMemoryRequirements(VkDevice device, VkBuffer
     }
 }
 
-VKAPI_ATTR void VKAPI_CALL GetImageMemoryRequirements(VkDevice device, VkImage image, VkMemoryRequirements *pMemoryRequirements) {
+VKAPI_ATTR void VKAPI_CALL GetBufferMemoryRequirements(VkDevice device, VkBuffer buffer,
+                                                       VkMemoryRequirements *pMemoryRequirements) {
     layer_data *dev_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
-    dev_data->dispatch_table.GetImageMemoryRequirements(device, image, pMemoryRequirements);
+    dev_data->dispatch_table.GetBufferMemoryRequirements(device, buffer, pMemoryRequirements);
+    PostCallRecordGetBufferMemoryRequirements(dev_data, buffer, pMemoryRequirements);
+}
+
+VKAPI_ATTR void VKAPI_CALL GetBufferMemoryRequirements2KHR(VkDevice device, const VkBufferMemoryRequirementsInfo2KHR *pInfo,
+                                                           VkMemoryRequirements2KHR *pMemoryRequirements) {
+    layer_data *dev_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
+    dev_data->dispatch_table.GetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements);
+    PostCallRecordGetBufferMemoryRequirements(dev_data, pInfo->buffer, &pMemoryRequirements->memoryRequirements);
+}
+
+static void PostCallRecordGetImageMemoryRequirements(layer_data *dev_data, VkImage image, VkMemoryRequirements *pMemoryRequirements) {
     IMAGE_STATE* image_state;
     {
         unique_lock_t lock(global_lock);
@@ -3887,6 +3896,18 @@ VKAPI_ATTR void VKAPI_CALL GetImageMemoryRequirements(VkDevice device, VkImage i
     }
 }
 
+VKAPI_ATTR void VKAPI_CALL GetImageMemoryRequirements(VkDevice device, VkImage image, VkMemoryRequirements *pMemoryRequirements) {
+    layer_data *dev_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
+    dev_data->dispatch_table.GetImageMemoryRequirements(device, image, pMemoryRequirements);
+    PostCallRecordGetImageMemoryRequirements(dev_data, image, pMemoryRequirements);
+}
+
+VKAPI_ATTR void VKAPI_CALL GetImageMemoryRequirements2KHR(VkDevice device, const VkImageMemoryRequirementsInfo2KHR *pInfo, VkMemoryRequirements2KHR *pMemoryRequirements) {
+    layer_data *dev_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
+    dev_data->dispatch_table.GetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements);
+    PostCallRecordGetImageMemoryRequirements(dev_data, pInfo->image, &pMemoryRequirements->memoryRequirements);
+}
+
 VKAPI_ATTR void VKAPI_CALL DestroyImageView(VkDevice device, VkImageView imageView, const VkAllocationCallbacks *pAllocator) {
     layer_data *dev_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
     // Common data objects used pre & post call
@@ -11558,200 +11579,202 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetInstanceProcAddr(VkInstance instance
 
 // Map of all APIs to be intercepted by this layer
 static const std::unordered_map<std::string, void *> name_to_funcptr_map = {
-    {"vkGetInstanceProcAddr", (void*)GetInstanceProcAddr},
-    {"vk_layerGetPhysicalDeviceProcAddr", (void*)GetPhysicalDeviceProcAddr},
-    {"vkGetDeviceProcAddr", (void*)GetDeviceProcAddr},
-    {"vkCreateInstance", (void*)CreateInstance},
-    {"vkCreateDevice", (void*)CreateDevice},
-    {"vkEnumeratePhysicalDevices", (void*)EnumeratePhysicalDevices},
-    {"vkGetPhysicalDeviceQueueFamilyProperties", (void*)GetPhysicalDeviceQueueFamilyProperties},
-    {"vkDestroyInstance", (void*)DestroyInstance},
-    {"vkEnumerateInstanceLayerProperties", (void*)EnumerateInstanceLayerProperties},
-    {"vkEnumerateDeviceLayerProperties", (void*)EnumerateDeviceLayerProperties},
-    {"vkEnumerateInstanceExtensionProperties", (void*)EnumerateInstanceExtensionProperties},
-    {"vkEnumerateDeviceExtensionProperties", (void*)EnumerateDeviceExtensionProperties},
-    {"vkCreateDescriptorUpdateTemplateKHR", (void*)CreateDescriptorUpdateTemplateKHR},
-    {"vkDestroyDescriptorUpdateTemplateKHR", (void*)DestroyDescriptorUpdateTemplateKHR},
-    {"vkUpdateDescriptorSetWithTemplateKHR", (void*)UpdateDescriptorSetWithTemplateKHR},
-    {"vkCmdPushDescriptorSetWithTemplateKHR", (void*)CmdPushDescriptorSetWithTemplateKHR},
-    {"vkCmdPushDescriptorSetKHR", (void*)CmdPushDescriptorSetKHR},
-    {"vkCreateSwapchainKHR", (void*)CreateSwapchainKHR},
-    {"vkDestroySwapchainKHR", (void*)DestroySwapchainKHR},
-    {"vkGetSwapchainImagesKHR", (void*)GetSwapchainImagesKHR},
-    {"vkAcquireNextImageKHR", (void*)AcquireNextImageKHR},
-    {"vkQueuePresentKHR", (void*)QueuePresentKHR},
-    {"vkQueueSubmit", (void*)QueueSubmit},
-    {"vkWaitForFences", (void*)WaitForFences},
-    {"vkGetFenceStatus", (void*)GetFenceStatus},
-    {"vkQueueWaitIdle", (void*)QueueWaitIdle},
-    {"vkDeviceWaitIdle", (void*)DeviceWaitIdle},
-    {"vkGetDeviceQueue", (void*)GetDeviceQueue},
-    {"vkDestroyDevice", (void*)DestroyDevice},
-    {"vkDestroyFence", (void*)DestroyFence},
-    {"vkResetFences", (void*)ResetFences},
-    {"vkDestroySemaphore", (void*)DestroySemaphore},
-    {"vkDestroyEvent", (void*)DestroyEvent},
-    {"vkDestroyQueryPool", (void*)DestroyQueryPool},
-    {"vkDestroyBuffer", (void*)DestroyBuffer},
-    {"vkDestroyBufferView", (void*)DestroyBufferView},
-    {"vkDestroyImage", (void*)DestroyImage},
-    {"vkDestroyImageView", (void*)DestroyImageView},
-    {"vkDestroyShaderModule", (void*)DestroyShaderModule},
-    {"vkDestroyPipeline", (void*)DestroyPipeline},
-    {"vkDestroyPipelineLayout", (void*)DestroyPipelineLayout},
-    {"vkDestroySampler", (void*)DestroySampler},
-    {"vkDestroyDescriptorSetLayout", (void*)DestroyDescriptorSetLayout},
-    {"vkDestroyDescriptorPool", (void*)DestroyDescriptorPool},
-    {"vkDestroyFramebuffer", (void*)DestroyFramebuffer},
-    {"vkDestroyRenderPass", (void*)DestroyRenderPass},
-    {"vkCreateBuffer", (void*)CreateBuffer},
-    {"vkCreateBufferView", (void*)CreateBufferView},
-    {"vkCreateImage", (void*)CreateImage},
-    {"vkCreateImageView", (void*)CreateImageView},
-    {"vkCreateFence", (void*)CreateFence},
-    {"vkCreatePipelineCache", (void*)CreatePipelineCache},
-    {"vkDestroyPipelineCache", (void*)DestroyPipelineCache},
-    {"vkGetPipelineCacheData", (void*)GetPipelineCacheData},
-    {"vkMergePipelineCaches", (void*)MergePipelineCaches},
-    {"vkCreateGraphicsPipelines", (void*)CreateGraphicsPipelines},
-    {"vkCreateComputePipelines", (void*)CreateComputePipelines},
-    {"vkCreateSampler", (void*)CreateSampler},
-    {"vkCreateDescriptorSetLayout", (void*)CreateDescriptorSetLayout},
-    {"vkCreatePipelineLayout", (void*)CreatePipelineLayout},
-    {"vkCreateDescriptorPool", (void*)CreateDescriptorPool},
-    {"vkResetDescriptorPool", (void*)ResetDescriptorPool},
-    {"vkAllocateDescriptorSets", (void*)AllocateDescriptorSets},
-    {"vkFreeDescriptorSets", (void*)FreeDescriptorSets},
-    {"vkUpdateDescriptorSets", (void*)UpdateDescriptorSets},
-    {"vkCreateCommandPool", (void*)CreateCommandPool},
-    {"vkDestroyCommandPool", (void*)DestroyCommandPool},
-    {"vkResetCommandPool", (void*)ResetCommandPool},
-    {"vkCreateQueryPool", (void*)CreateQueryPool},
-    {"vkAllocateCommandBuffers", (void*)AllocateCommandBuffers},
-    {"vkFreeCommandBuffers", (void*)FreeCommandBuffers},
-    {"vkBeginCommandBuffer", (void*)BeginCommandBuffer},
-    {"vkEndCommandBuffer", (void*)EndCommandBuffer},
-    {"vkResetCommandBuffer", (void*)ResetCommandBuffer},
-    {"vkCmdBindPipeline", (void*)CmdBindPipeline},
-    {"vkCmdSetViewport", (void*)CmdSetViewport},
-    {"vkCmdSetScissor", (void*)CmdSetScissor},
-    {"vkCmdSetLineWidth", (void*)CmdSetLineWidth},
-    {"vkCmdSetDepthBias", (void*)CmdSetDepthBias},
-    {"vkCmdSetBlendConstants", (void*)CmdSetBlendConstants},
-    {"vkCmdSetDepthBounds", (void*)CmdSetDepthBounds},
-    {"vkCmdSetStencilCompareMask", (void*)CmdSetStencilCompareMask},
-    {"vkCmdSetStencilWriteMask", (void*)CmdSetStencilWriteMask},
-    {"vkCmdSetStencilReference", (void*)CmdSetStencilReference},
-    {"vkCmdBindDescriptorSets", (void*)CmdBindDescriptorSets},
-    {"vkCmdBindVertexBuffers", (void*)CmdBindVertexBuffers},
-    {"vkCmdBindIndexBuffer", (void*)CmdBindIndexBuffer},
-    {"vkCmdDraw", (void*)CmdDraw},
-    {"vkCmdDrawIndexed", (void*)CmdDrawIndexed},
-    {"vkCmdDrawIndirect", (void*)CmdDrawIndirect},
-    {"vkCmdDrawIndexedIndirect", (void*)CmdDrawIndexedIndirect},
-    {"vkCmdDispatch", (void*)CmdDispatch},
-    {"vkCmdDispatchIndirect", (void*)CmdDispatchIndirect},
-    {"vkCmdCopyBuffer", (void*)CmdCopyBuffer},
-    {"vkCmdCopyImage", (void*)CmdCopyImage},
-    {"vkCmdBlitImage", (void*)CmdBlitImage},
-    {"vkCmdCopyBufferToImage", (void*)CmdCopyBufferToImage},
-    {"vkCmdCopyImageToBuffer", (void*)CmdCopyImageToBuffer},
-    {"vkCmdUpdateBuffer", (void*)CmdUpdateBuffer},
-    {"vkCmdFillBuffer", (void*)CmdFillBuffer},
-    {"vkCmdClearColorImage", (void*)CmdClearColorImage},
-    {"vkCmdClearDepthStencilImage", (void*)CmdClearDepthStencilImage},
-    {"vkCmdClearAttachments", (void*)CmdClearAttachments},
-    {"vkCmdResolveImage", (void*)CmdResolveImage},
-    {"vkGetImageSubresourceLayout", (void*)GetImageSubresourceLayout},
-    {"vkCmdSetEvent", (void*)CmdSetEvent},
-    {"vkCmdResetEvent", (void*)CmdResetEvent},
-    {"vkCmdWaitEvents", (void*)CmdWaitEvents},
-    {"vkCmdPipelineBarrier", (void*)CmdPipelineBarrier},
-    {"vkCmdBeginQuery", (void*)CmdBeginQuery},
-    {"vkCmdEndQuery", (void*)CmdEndQuery},
-    {"vkCmdResetQueryPool", (void*)CmdResetQueryPool},
-    {"vkCmdCopyQueryPoolResults", (void*)CmdCopyQueryPoolResults},
-    {"vkCmdPushConstants", (void*)CmdPushConstants},
-    {"vkCmdWriteTimestamp", (void*)CmdWriteTimestamp},
-    {"vkCreateFramebuffer", (void*)CreateFramebuffer},
-    {"vkCreateShaderModule", (void*)CreateShaderModule},
-    {"vkCreateRenderPass", (void*)CreateRenderPass},
-    {"vkCmdBeginRenderPass", (void*)CmdBeginRenderPass},
-    {"vkCmdNextSubpass", (void*)CmdNextSubpass},
-    {"vkCmdEndRenderPass", (void*)CmdEndRenderPass},
-    {"vkCmdExecuteCommands", (void*)CmdExecuteCommands},
-    {"vkCmdDebugMarkerBeginEXT", (void*)CmdDebugMarkerBeginEXT},
-    {"vkCmdDebugMarkerEndEXT", (void*)CmdDebugMarkerEndEXT},
-    {"vkCmdDebugMarkerInsertEXT", (void*)CmdDebugMarkerInsertEXT},
-    {"vkDebugMarkerSetObjectNameEXT", (void*)DebugMarkerSetObjectNameEXT},
-    {"vkDebugMarkerSetObjectTagEXT", (void*)DebugMarkerSetObjectTagEXT},
-    {"vkSetEvent", (void*)SetEvent},
-    {"vkMapMemory", (void*)MapMemory},
-    {"vkUnmapMemory", (void*)UnmapMemory},
-    {"vkFlushMappedMemoryRanges", (void*)FlushMappedMemoryRanges},
-    {"vkInvalidateMappedMemoryRanges", (void*)InvalidateMappedMemoryRanges},
-    {"vkAllocateMemory", (void*)AllocateMemory},
-    {"vkFreeMemory", (void*)FreeMemory},
-    {"vkBindBufferMemory", (void*)BindBufferMemory},
-    {"vkGetBufferMemoryRequirements", (void*)GetBufferMemoryRequirements},
-    {"vkGetImageMemoryRequirements", (void*)GetImageMemoryRequirements},
-    {"vkGetQueryPoolResults", (void*)GetQueryPoolResults},
-    {"vkBindImageMemory", (void*)BindImageMemory},
-    {"vkQueueBindSparse", (void*)QueueBindSparse},
-    {"vkCreateSemaphore", (void*)CreateSemaphore},
-    {"vkCreateEvent", (void*)CreateEvent},
+    {"vkGetInstanceProcAddr", (void *)GetInstanceProcAddr},
+    {"vk_layerGetPhysicalDeviceProcAddr", (void *)GetPhysicalDeviceProcAddr},
+    {"vkGetDeviceProcAddr", (void *)GetDeviceProcAddr},
+    {"vkCreateInstance", (void *)CreateInstance},
+    {"vkCreateDevice", (void *)CreateDevice},
+    {"vkEnumeratePhysicalDevices", (void *)EnumeratePhysicalDevices},
+    {"vkGetPhysicalDeviceQueueFamilyProperties", (void *)GetPhysicalDeviceQueueFamilyProperties},
+    {"vkDestroyInstance", (void *)DestroyInstance},
+    {"vkEnumerateInstanceLayerProperties", (void *)EnumerateInstanceLayerProperties},
+    {"vkEnumerateDeviceLayerProperties", (void *)EnumerateDeviceLayerProperties},
+    {"vkEnumerateInstanceExtensionProperties", (void *)EnumerateInstanceExtensionProperties},
+    {"vkEnumerateDeviceExtensionProperties", (void *)EnumerateDeviceExtensionProperties},
+    {"vkCreateDescriptorUpdateTemplateKHR", (void *)CreateDescriptorUpdateTemplateKHR},
+    {"vkDestroyDescriptorUpdateTemplateKHR", (void *)DestroyDescriptorUpdateTemplateKHR},
+    {"vkUpdateDescriptorSetWithTemplateKHR", (void *)UpdateDescriptorSetWithTemplateKHR},
+    {"vkCmdPushDescriptorSetWithTemplateKHR", (void *)CmdPushDescriptorSetWithTemplateKHR},
+    {"vkCmdPushDescriptorSetKHR", (void *)CmdPushDescriptorSetKHR},
+    {"vkCreateSwapchainKHR", (void *)CreateSwapchainKHR},
+    {"vkDestroySwapchainKHR", (void *)DestroySwapchainKHR},
+    {"vkGetSwapchainImagesKHR", (void *)GetSwapchainImagesKHR},
+    {"vkAcquireNextImageKHR", (void *)AcquireNextImageKHR},
+    {"vkQueuePresentKHR", (void *)QueuePresentKHR},
+    {"vkQueueSubmit", (void *)QueueSubmit},
+    {"vkWaitForFences", (void *)WaitForFences},
+    {"vkGetFenceStatus", (void *)GetFenceStatus},
+    {"vkQueueWaitIdle", (void *)QueueWaitIdle},
+    {"vkDeviceWaitIdle", (void *)DeviceWaitIdle},
+    {"vkGetDeviceQueue", (void *)GetDeviceQueue},
+    {"vkDestroyDevice", (void *)DestroyDevice},
+    {"vkDestroyFence", (void *)DestroyFence},
+    {"vkResetFences", (void *)ResetFences},
+    {"vkDestroySemaphore", (void *)DestroySemaphore},
+    {"vkDestroyEvent", (void *)DestroyEvent},
+    {"vkDestroyQueryPool", (void *)DestroyQueryPool},
+    {"vkDestroyBuffer", (void *)DestroyBuffer},
+    {"vkDestroyBufferView", (void *)DestroyBufferView},
+    {"vkDestroyImage", (void *)DestroyImage},
+    {"vkDestroyImageView", (void *)DestroyImageView},
+    {"vkDestroyShaderModule", (void *)DestroyShaderModule},
+    {"vkDestroyPipeline", (void *)DestroyPipeline},
+    {"vkDestroyPipelineLayout", (void *)DestroyPipelineLayout},
+    {"vkDestroySampler", (void *)DestroySampler},
+    {"vkDestroyDescriptorSetLayout", (void *)DestroyDescriptorSetLayout},
+    {"vkDestroyDescriptorPool", (void *)DestroyDescriptorPool},
+    {"vkDestroyFramebuffer", (void *)DestroyFramebuffer},
+    {"vkDestroyRenderPass", (void *)DestroyRenderPass},
+    {"vkCreateBuffer", (void *)CreateBuffer},
+    {"vkCreateBufferView", (void *)CreateBufferView},
+    {"vkCreateImage", (void *)CreateImage},
+    {"vkCreateImageView", (void *)CreateImageView},
+    {"vkCreateFence", (void *)CreateFence},
+    {"vkCreatePipelineCache", (void *)CreatePipelineCache},
+    {"vkDestroyPipelineCache", (void *)DestroyPipelineCache},
+    {"vkGetPipelineCacheData", (void *)GetPipelineCacheData},
+    {"vkMergePipelineCaches", (void *)MergePipelineCaches},
+    {"vkCreateGraphicsPipelines", (void *)CreateGraphicsPipelines},
+    {"vkCreateComputePipelines", (void *)CreateComputePipelines},
+    {"vkCreateSampler", (void *)CreateSampler},
+    {"vkCreateDescriptorSetLayout", (void *)CreateDescriptorSetLayout},
+    {"vkCreatePipelineLayout", (void *)CreatePipelineLayout},
+    {"vkCreateDescriptorPool", (void *)CreateDescriptorPool},
+    {"vkResetDescriptorPool", (void *)ResetDescriptorPool},
+    {"vkAllocateDescriptorSets", (void *)AllocateDescriptorSets},
+    {"vkFreeDescriptorSets", (void *)FreeDescriptorSets},
+    {"vkUpdateDescriptorSets", (void *)UpdateDescriptorSets},
+    {"vkCreateCommandPool", (void *)CreateCommandPool},
+    {"vkDestroyCommandPool", (void *)DestroyCommandPool},
+    {"vkResetCommandPool", (void *)ResetCommandPool},
+    {"vkCreateQueryPool", (void *)CreateQueryPool},
+    {"vkAllocateCommandBuffers", (void *)AllocateCommandBuffers},
+    {"vkFreeCommandBuffers", (void *)FreeCommandBuffers},
+    {"vkBeginCommandBuffer", (void *)BeginCommandBuffer},
+    {"vkEndCommandBuffer", (void *)EndCommandBuffer},
+    {"vkResetCommandBuffer", (void *)ResetCommandBuffer},
+    {"vkCmdBindPipeline", (void *)CmdBindPipeline},
+    {"vkCmdSetViewport", (void *)CmdSetViewport},
+    {"vkCmdSetScissor", (void *)CmdSetScissor},
+    {"vkCmdSetLineWidth", (void *)CmdSetLineWidth},
+    {"vkCmdSetDepthBias", (void *)CmdSetDepthBias},
+    {"vkCmdSetBlendConstants", (void *)CmdSetBlendConstants},
+    {"vkCmdSetDepthBounds", (void *)CmdSetDepthBounds},
+    {"vkCmdSetStencilCompareMask", (void *)CmdSetStencilCompareMask},
+    {"vkCmdSetStencilWriteMask", (void *)CmdSetStencilWriteMask},
+    {"vkCmdSetStencilReference", (void *)CmdSetStencilReference},
+    {"vkCmdBindDescriptorSets", (void *)CmdBindDescriptorSets},
+    {"vkCmdBindVertexBuffers", (void *)CmdBindVertexBuffers},
+    {"vkCmdBindIndexBuffer", (void *)CmdBindIndexBuffer},
+    {"vkCmdDraw", (void *)CmdDraw},
+    {"vkCmdDrawIndexed", (void *)CmdDrawIndexed},
+    {"vkCmdDrawIndirect", (void *)CmdDrawIndirect},
+    {"vkCmdDrawIndexedIndirect", (void *)CmdDrawIndexedIndirect},
+    {"vkCmdDispatch", (void *)CmdDispatch},
+    {"vkCmdDispatchIndirect", (void *)CmdDispatchIndirect},
+    {"vkCmdCopyBuffer", (void *)CmdCopyBuffer},
+    {"vkCmdCopyImage", (void *)CmdCopyImage},
+    {"vkCmdBlitImage", (void *)CmdBlitImage},
+    {"vkCmdCopyBufferToImage", (void *)CmdCopyBufferToImage},
+    {"vkCmdCopyImageToBuffer", (void *)CmdCopyImageToBuffer},
+    {"vkCmdUpdateBuffer", (void *)CmdUpdateBuffer},
+    {"vkCmdFillBuffer", (void *)CmdFillBuffer},
+    {"vkCmdClearColorImage", (void *)CmdClearColorImage},
+    {"vkCmdClearDepthStencilImage", (void *)CmdClearDepthStencilImage},
+    {"vkCmdClearAttachments", (void *)CmdClearAttachments},
+    {"vkCmdResolveImage", (void *)CmdResolveImage},
+    {"vkGetImageSubresourceLayout", (void *)GetImageSubresourceLayout},
+    {"vkCmdSetEvent", (void *)CmdSetEvent},
+    {"vkCmdResetEvent", (void *)CmdResetEvent},
+    {"vkCmdWaitEvents", (void *)CmdWaitEvents},
+    {"vkCmdPipelineBarrier", (void *)CmdPipelineBarrier},
+    {"vkCmdBeginQuery", (void *)CmdBeginQuery},
+    {"vkCmdEndQuery", (void *)CmdEndQuery},
+    {"vkCmdResetQueryPool", (void *)CmdResetQueryPool},
+    {"vkCmdCopyQueryPoolResults", (void *)CmdCopyQueryPoolResults},
+    {"vkCmdPushConstants", (void *)CmdPushConstants},
+    {"vkCmdWriteTimestamp", (void *)CmdWriteTimestamp},
+    {"vkCreateFramebuffer", (void *)CreateFramebuffer},
+    {"vkCreateShaderModule", (void *)CreateShaderModule},
+    {"vkCreateRenderPass", (void *)CreateRenderPass},
+    {"vkCmdBeginRenderPass", (void *)CmdBeginRenderPass},
+    {"vkCmdNextSubpass", (void *)CmdNextSubpass},
+    {"vkCmdEndRenderPass", (void *)CmdEndRenderPass},
+    {"vkCmdExecuteCommands", (void *)CmdExecuteCommands},
+    {"vkCmdDebugMarkerBeginEXT", (void *)CmdDebugMarkerBeginEXT},
+    {"vkCmdDebugMarkerEndEXT", (void *)CmdDebugMarkerEndEXT},
+    {"vkCmdDebugMarkerInsertEXT", (void *)CmdDebugMarkerInsertEXT},
+    {"vkDebugMarkerSetObjectNameEXT", (void *)DebugMarkerSetObjectNameEXT},
+    {"vkDebugMarkerSetObjectTagEXT", (void *)DebugMarkerSetObjectTagEXT},
+    {"vkSetEvent", (void *)SetEvent},
+    {"vkMapMemory", (void *)MapMemory},
+    {"vkUnmapMemory", (void *)UnmapMemory},
+    {"vkFlushMappedMemoryRanges", (void *)FlushMappedMemoryRanges},
+    {"vkInvalidateMappedMemoryRanges", (void *)InvalidateMappedMemoryRanges},
+    {"vkAllocateMemory", (void *)AllocateMemory},
+    {"vkFreeMemory", (void *)FreeMemory},
+    {"vkBindBufferMemory", (void *)BindBufferMemory},
+    {"vkGetBufferMemoryRequirements", (void *)GetBufferMemoryRequirements},
+    {"vkGetBufferMemoryRequirements2KHR", (void *)GetBufferMemoryRequirements2KHR},
+    {"vkGetImageMemoryRequirements", (void *)GetImageMemoryRequirements},
+    {"vkGetImageMemoryRequirements2KHR", (void *)GetImageMemoryRequirements2KHR},
+    {"vkGetQueryPoolResults", (void *)GetQueryPoolResults},
+    {"vkBindImageMemory", (void *)BindImageMemory},
+    {"vkQueueBindSparse", (void *)QueueBindSparse},
+    {"vkCreateSemaphore", (void *)CreateSemaphore},
+    {"vkCreateEvent", (void *)CreateEvent},
 #ifdef VK_USE_PLATFORM_ANDROID_KHR
-    {"vkCreateAndroidSurfaceKHR", (void*)CreateAndroidSurfaceKHR},
+    {"vkCreateAndroidSurfaceKHR", (void *)CreateAndroidSurfaceKHR},
 #endif
 #ifdef VK_USE_PLATFORM_MIR_KHR
-    {"vkCreateMirSurfaceKHR", (void*)CreateMirSurfaceKHR},
-    {"vkGetPhysicalDeviceMirPresentationSupportKHR", (void*)GetPhysicalDeviceMirPresentationSupportKHR},
+    {"vkCreateMirSurfaceKHR", (void *)CreateMirSurfaceKHR},
+    {"vkGetPhysicalDeviceMirPresentationSupportKHR", (void *)GetPhysicalDeviceMirPresentationSupportKHR},
 #endif
 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
-    {"vkCreateWaylandSurfaceKHR", (void*)CreateWaylandSurfaceKHR},
-    {"vkGetPhysicalDeviceWaylandPresentationSupportKHR", (void*)GetPhysicalDeviceWaylandPresentationSupportKHR},
+    {"vkCreateWaylandSurfaceKHR", (void *)CreateWaylandSurfaceKHR},
+    {"vkGetPhysicalDeviceWaylandPresentationSupportKHR", (void *)GetPhysicalDeviceWaylandPresentationSupportKHR},
 #endif
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-    {"vkCreateWin32SurfaceKHR", (void*)CreateWin32SurfaceKHR},
-    {"vkGetPhysicalDeviceWin32PresentationSupportKHR", (void*)GetPhysicalDeviceWin32PresentationSupportKHR},
-    {"vkImportSemaphoreWin32HandleKHR", (void*)ImportSemaphoreWin32HandleKHR},
-    {"vkGetSemaphoreWin32HandleKHR", (void*)GetSemaphoreWin32HandleKHR},
-    {"vkImportFenceWin32HandleKHR", (void*)ImportFenceWin32HandleKHR},
-    {"vkGetFenceWin32HandleKHR", (void*)GetFenceWin32HandleKHR},
+    {"vkCreateWin32SurfaceKHR", (void *)CreateWin32SurfaceKHR},
+    {"vkGetPhysicalDeviceWin32PresentationSupportKHR", (void *)GetPhysicalDeviceWin32PresentationSupportKHR},
+    {"vkImportSemaphoreWin32HandleKHR", (void *)ImportSemaphoreWin32HandleKHR},
+    {"vkGetSemaphoreWin32HandleKHR", (void *)GetSemaphoreWin32HandleKHR},
+    {"vkImportFenceWin32HandleKHR", (void *)ImportFenceWin32HandleKHR},
+    {"vkGetFenceWin32HandleKHR", (void *)GetFenceWin32HandleKHR},
 #endif
 #ifdef VK_USE_PLATFORM_XCB_KHR
-    {"vkCreateXcbSurfaceKHR", (void*)CreateXcbSurfaceKHR},
-    {"vkGetPhysicalDeviceXcbPresentationSupportKHR", (void*)GetPhysicalDeviceXcbPresentationSupportKHR},
+    {"vkCreateXcbSurfaceKHR", (void *)CreateXcbSurfaceKHR},
+    {"vkGetPhysicalDeviceXcbPresentationSupportKHR", (void *)GetPhysicalDeviceXcbPresentationSupportKHR},
 #endif
 #ifdef VK_USE_PLATFORM_XLIB_KHR
-    {"vkCreateXlibSurfaceKHR", (void*)CreateXlibSurfaceKHR},
-    {"vkGetPhysicalDeviceXlibPresentationSupportKHR", (void*)GetPhysicalDeviceXlibPresentationSupportKHR},
+    {"vkCreateXlibSurfaceKHR", (void *)CreateXlibSurfaceKHR},
+    {"vkGetPhysicalDeviceXlibPresentationSupportKHR", (void *)GetPhysicalDeviceXlibPresentationSupportKHR},
 #endif
-    {"vkCreateDisplayPlaneSurfaceKHR", (void*)CreateDisplayPlaneSurfaceKHR},
-    {"vkDestroySurfaceKHR", (void*)DestroySurfaceKHR},
-    {"vkGetPhysicalDeviceSurfaceCapabilitiesKHR", (void*)GetPhysicalDeviceSurfaceCapabilitiesKHR},
-    {"vkGetPhysicalDeviceSurfaceCapabilities2KHR", (void*)GetPhysicalDeviceSurfaceCapabilities2KHR},
-    {"vkGetPhysicalDeviceSurfaceCapabilities2EXT", (void*)GetPhysicalDeviceSurfaceCapabilities2EXT},
-    {"vkGetPhysicalDeviceSurfaceSupportKHR", (void*)GetPhysicalDeviceSurfaceSupportKHR},
-    {"vkGetPhysicalDeviceSurfacePresentModesKHR", (void*)GetPhysicalDeviceSurfacePresentModesKHR},
-    {"vkGetPhysicalDeviceSurfaceFormatsKHR", (void*)GetPhysicalDeviceSurfaceFormatsKHR},
-    {"vkGetPhysicalDeviceSurfaceFormats2KHR", (void*)GetPhysicalDeviceSurfaceFormats2KHR},
-    {"vkGetPhysicalDeviceQueueFamilyProperties2KHR", (void*)GetPhysicalDeviceQueueFamilyProperties2KHR},
-    {"vkEnumeratePhysicalDeviceGroupsKHX", (void*)EnumeratePhysicalDeviceGroupsKHX},
-    {"vkCreateDebugReportCallbackEXT", (void*)CreateDebugReportCallbackEXT},
-    {"vkDestroyDebugReportCallbackEXT", (void*)DestroyDebugReportCallbackEXT},
-    {"vkDebugReportMessageEXT", (void*)DebugReportMessageEXT},
-    {"vkGetPhysicalDeviceDisplayPlanePropertiesKHR", (void*)GetPhysicalDeviceDisplayPlanePropertiesKHR},
-    {"vkGetDisplayPlaneSupportedDisplaysKHR", (void*)GetDisplayPlaneSupportedDisplaysKHR},
-    {"vkGetDisplayPlaneCapabilitiesKHR", (void*)GetDisplayPlaneCapabilitiesKHR},
-    {"vkImportSemaphoreFdKHR", (void*)ImportSemaphoreFdKHR},
-    {"vkGetSemaphoreFdKHR", (void*)GetSemaphoreFdKHR},
-    {"vkImportFenceFdKHR", (void*)ImportFenceFdKHR},
-    {"vkGetFenceFdKHR", (void*)GetFenceFdKHR},
-    {"vkCreateValidationCacheEXT", (void*)CreateValidationCacheEXT},
-    {"vkDestroyValidationCacheEXT", (void*)DestroyValidationCacheEXT},
-    {"vkGetValidationCacheDataEXT", (void*)GetValidationCacheDataEXT},
-    {"vkMergeValidationCachesEXT", (void*)MergeValidationCachesEXT},
+    {"vkCreateDisplayPlaneSurfaceKHR", (void *)CreateDisplayPlaneSurfaceKHR},
+    {"vkDestroySurfaceKHR", (void *)DestroySurfaceKHR},
+    {"vkGetPhysicalDeviceSurfaceCapabilitiesKHR", (void *)GetPhysicalDeviceSurfaceCapabilitiesKHR},
+    {"vkGetPhysicalDeviceSurfaceCapabilities2KHR", (void *)GetPhysicalDeviceSurfaceCapabilities2KHR},
+    {"vkGetPhysicalDeviceSurfaceCapabilities2EXT", (void *)GetPhysicalDeviceSurfaceCapabilities2EXT},
+    {"vkGetPhysicalDeviceSurfaceSupportKHR", (void *)GetPhysicalDeviceSurfaceSupportKHR},
+    {"vkGetPhysicalDeviceSurfacePresentModesKHR", (void *)GetPhysicalDeviceSurfacePresentModesKHR},
+    {"vkGetPhysicalDeviceSurfaceFormatsKHR", (void *)GetPhysicalDeviceSurfaceFormatsKHR},
+    {"vkGetPhysicalDeviceSurfaceFormats2KHR", (void *)GetPhysicalDeviceSurfaceFormats2KHR},
+    {"vkGetPhysicalDeviceQueueFamilyProperties2KHR", (void *)GetPhysicalDeviceQueueFamilyProperties2KHR},
+    {"vkEnumeratePhysicalDeviceGroupsKHX", (void *)EnumeratePhysicalDeviceGroupsKHX},
+    {"vkCreateDebugReportCallbackEXT", (void *)CreateDebugReportCallbackEXT},
+    {"vkDestroyDebugReportCallbackEXT", (void *)DestroyDebugReportCallbackEXT},
+    {"vkDebugReportMessageEXT", (void *)DebugReportMessageEXT},
+    {"vkGetPhysicalDeviceDisplayPlanePropertiesKHR", (void *)GetPhysicalDeviceDisplayPlanePropertiesKHR},
+    {"vkGetDisplayPlaneSupportedDisplaysKHR", (void *)GetDisplayPlaneSupportedDisplaysKHR},
+    {"vkGetDisplayPlaneCapabilitiesKHR", (void *)GetDisplayPlaneCapabilitiesKHR},
+    {"vkImportSemaphoreFdKHR", (void *)ImportSemaphoreFdKHR},
+    {"vkGetSemaphoreFdKHR", (void *)GetSemaphoreFdKHR},
+    {"vkImportFenceFdKHR", (void *)ImportFenceFdKHR},
+    {"vkGetFenceFdKHR", (void *)GetFenceFdKHR},
+    {"vkCreateValidationCacheEXT", (void *)CreateValidationCacheEXT},
+    {"vkDestroyValidationCacheEXT", (void *)DestroyValidationCacheEXT},
+    {"vkGetValidationCacheDataEXT", (void *)GetValidationCacheDataEXT},
+    {"vkMergeValidationCachesEXT", (void *)MergeValidationCachesEXT},
 };
 
 VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetDeviceProcAddr(VkDevice device, const char *funcName) {