/* This file is part of Magnum. Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Vladimír Vondruš Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "flextVk.h" #include "flextVkGlobal.h" VkResult(VKAPI_PTR *flextvkEnumerateInstanceVersion)(uint32_t*) = reinterpret_cast(vkGetInstanceProcAddr(nullptr, "vkEnumerateInstanceVersion")); FlextVkInstance flextVkInstance{}; FlextVkDevice flextVkDevice{}; void flextVkInitInstance(VkInstance instance, FlextVkInstance* data) { data->CreateDebugReportCallbackEXT = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkCreateDebugReportCallbackEXT")); data->DebugReportMessageEXT = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkDebugReportMessageEXT")); data->DestroyDebugReportCallbackEXT = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkDestroyDebugReportCallbackEXT")); data->CreateDebugUtilsMessengerEXT = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkCreateDebugUtilsMessengerEXT")); data->DestroyDebugUtilsMessengerEXT = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkDestroyDebugUtilsMessengerEXT")); data->SubmitDebugUtilsMessageEXT = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkSubmitDebugUtilsMessageEXT")); data->EnumeratePhysicalDeviceGroupsKHR = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkEnumeratePhysicalDeviceGroupsKHR")); data->GetPhysicalDeviceExternalFencePropertiesKHR = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalFencePropertiesKHR")); data->GetPhysicalDeviceExternalBufferPropertiesKHR = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalBufferPropertiesKHR")); data->GetPhysicalDeviceExternalSemaphorePropertiesKHR = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR")); data->GetPhysicalDeviceFeatures2KHR = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceFeatures2KHR")); data->GetPhysicalDeviceFormatProperties2KHR = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceFormatProperties2KHR")); data->GetPhysicalDeviceImageFormatProperties2KHR = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceImageFormatProperties2KHR")); data->GetPhysicalDeviceMemoryProperties2KHR = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceMemoryProperties2KHR")); data->GetPhysicalDeviceProperties2KHR = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceProperties2KHR")); data->GetPhysicalDeviceQueueFamilyProperties2KHR = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceQueueFamilyProperties2KHR")); data->GetPhysicalDeviceSparseImageFormatProperties2KHR = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR")); data->CreateDevice = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkCreateDevice")); data->DestroyInstance = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkDestroyInstance")); data->EnumerateDeviceExtensionProperties = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkEnumerateDeviceExtensionProperties")); data->EnumeratePhysicalDevices = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkEnumeratePhysicalDevices")); data->GetDeviceProcAddr = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetDeviceProcAddr")); data->GetPhysicalDeviceFeatures = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceFeatures")); data->GetPhysicalDeviceFormatProperties = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceFormatProperties")); data->GetPhysicalDeviceImageFormatProperties = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceImageFormatProperties")); data->GetPhysicalDeviceMemoryProperties = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceMemoryProperties")); data->GetPhysicalDeviceProperties = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceProperties")); data->GetPhysicalDeviceQueueFamilyProperties = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceQueueFamilyProperties")); data->GetPhysicalDeviceSparseImageFormatProperties = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSparseImageFormatProperties")); data->EnumeratePhysicalDeviceGroups = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkEnumeratePhysicalDeviceGroups")); data->GetPhysicalDeviceExternalBufferProperties = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalBufferProperties")); data->GetPhysicalDeviceExternalFenceProperties = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalFenceProperties")); data->GetPhysicalDeviceExternalSemaphoreProperties = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalSemaphoreProperties")); data->GetPhysicalDeviceFeatures2 = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceFeatures2")); data->GetPhysicalDeviceFormatProperties2 = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceFormatProperties2")); data->GetPhysicalDeviceImageFormatProperties2 = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceImageFormatProperties2")); data->GetPhysicalDeviceMemoryProperties2 = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceMemoryProperties2")); data->GetPhysicalDeviceProperties2 = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceProperties2")); data->GetPhysicalDeviceQueueFamilyProperties2 = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceQueueFamilyProperties2")); data->GetPhysicalDeviceSparseImageFormatProperties2 = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceSparseImageFormatProperties2")); } void flextVkInitDevice(VkDevice device, FlextVkDevice* data, PFN_vkVoidFunction(VKAPI_PTR *getDeviceProcAddr)(VkDevice, const char*)) { data->CmdDebugMarkerBeginEXT = reinterpret_cast(getDeviceProcAddr(device, "vkCmdDebugMarkerBeginEXT")); data->CmdDebugMarkerEndEXT = reinterpret_cast(getDeviceProcAddr(device, "vkCmdDebugMarkerEndEXT")); data->CmdDebugMarkerInsertEXT = reinterpret_cast(getDeviceProcAddr(device, "vkCmdDebugMarkerInsertEXT")); data->DebugMarkerSetObjectNameEXT = reinterpret_cast(getDeviceProcAddr(device, "vkDebugMarkerSetObjectNameEXT")); data->DebugMarkerSetObjectTagEXT = reinterpret_cast(getDeviceProcAddr(device, "vkDebugMarkerSetObjectTagEXT")); data->CmdBeginDebugUtilsLabelEXT = reinterpret_cast(getDeviceProcAddr(device, "vkCmdBeginDebugUtilsLabelEXT")); data->CmdEndDebugUtilsLabelEXT = reinterpret_cast(getDeviceProcAddr(device, "vkCmdEndDebugUtilsLabelEXT")); data->CmdInsertDebugUtilsLabelEXT = reinterpret_cast(getDeviceProcAddr(device, "vkCmdInsertDebugUtilsLabelEXT")); data->QueueBeginDebugUtilsLabelEXT = reinterpret_cast(getDeviceProcAddr(device, "vkQueueBeginDebugUtilsLabelEXT")); data->QueueEndDebugUtilsLabelEXT = reinterpret_cast(getDeviceProcAddr(device, "vkQueueEndDebugUtilsLabelEXT")); data->QueueInsertDebugUtilsLabelEXT = reinterpret_cast(getDeviceProcAddr(device, "vkQueueInsertDebugUtilsLabelEXT")); data->SetDebugUtilsObjectNameEXT = reinterpret_cast(getDeviceProcAddr(device, "vkSetDebugUtilsObjectNameEXT")); data->SetDebugUtilsObjectTagEXT = reinterpret_cast(getDeviceProcAddr(device, "vkSetDebugUtilsObjectTagEXT")); data->ResetQueryPoolEXT = reinterpret_cast(getDeviceProcAddr(device, "vkResetQueryPoolEXT")); data->BindBufferMemory2KHR = reinterpret_cast(getDeviceProcAddr(device, "vkBindBufferMemory2KHR")); data->BindImageMemory2KHR = reinterpret_cast(getDeviceProcAddr(device, "vkBindImageMemory2KHR")); data->GetBufferDeviceAddressKHR = reinterpret_cast(getDeviceProcAddr(device, "vkGetBufferDeviceAddressKHR")); data->GetBufferOpaqueCaptureAddressKHR = reinterpret_cast(getDeviceProcAddr(device, "vkGetBufferOpaqueCaptureAddressKHR")); data->GetDeviceMemoryOpaqueCaptureAddressKHR = reinterpret_cast(getDeviceProcAddr(device, "vkGetDeviceMemoryOpaqueCaptureAddressKHR")); data->CmdBeginRenderPass2KHR = reinterpret_cast(getDeviceProcAddr(device, "vkCmdBeginRenderPass2KHR")); data->CmdEndRenderPass2KHR = reinterpret_cast(getDeviceProcAddr(device, "vkCmdEndRenderPass2KHR")); data->CmdNextSubpass2KHR = reinterpret_cast(getDeviceProcAddr(device, "vkCmdNextSubpass2KHR")); data->CreateRenderPass2KHR = reinterpret_cast(getDeviceProcAddr(device, "vkCreateRenderPass2KHR")); data->CreateDescriptorUpdateTemplateKHR = reinterpret_cast(getDeviceProcAddr(device, "vkCreateDescriptorUpdateTemplateKHR")); data->DestroyDescriptorUpdateTemplateKHR = reinterpret_cast(getDeviceProcAddr(device, "vkDestroyDescriptorUpdateTemplateKHR")); data->UpdateDescriptorSetWithTemplateKHR = reinterpret_cast(getDeviceProcAddr(device, "vkUpdateDescriptorSetWithTemplateKHR")); data->CmdDispatchBaseKHR = reinterpret_cast(getDeviceProcAddr(device, "vkCmdDispatchBaseKHR")); data->CmdSetDeviceMaskKHR = reinterpret_cast(getDeviceProcAddr(device, "vkCmdSetDeviceMaskKHR")); data->GetDeviceGroupPeerMemoryFeaturesKHR = reinterpret_cast(getDeviceProcAddr(device, "vkGetDeviceGroupPeerMemoryFeaturesKHR")); data->CmdDrawIndexedIndirectCountKHR = reinterpret_cast(getDeviceProcAddr(device, "vkCmdDrawIndexedIndirectCountKHR")); data->CmdDrawIndirectCountKHR = reinterpret_cast(getDeviceProcAddr(device, "vkCmdDrawIndirectCountKHR")); data->GetBufferMemoryRequirements2KHR = reinterpret_cast(getDeviceProcAddr(device, "vkGetBufferMemoryRequirements2KHR")); data->GetImageMemoryRequirements2KHR = reinterpret_cast(getDeviceProcAddr(device, "vkGetImageMemoryRequirements2KHR")); data->GetImageSparseMemoryRequirements2KHR = reinterpret_cast(getDeviceProcAddr(device, "vkGetImageSparseMemoryRequirements2KHR")); data->TrimCommandPoolKHR = reinterpret_cast(getDeviceProcAddr(device, "vkTrimCommandPoolKHR")); data->GetDescriptorSetLayoutSupportKHR = reinterpret_cast(getDeviceProcAddr(device, "vkGetDescriptorSetLayoutSupportKHR")); data->CreateSamplerYcbcrConversionKHR = reinterpret_cast(getDeviceProcAddr(device, "vkCreateSamplerYcbcrConversionKHR")); data->DestroySamplerYcbcrConversionKHR = reinterpret_cast(getDeviceProcAddr(device, "vkDestroySamplerYcbcrConversionKHR")); data->GetSemaphoreCounterValueKHR = reinterpret_cast(getDeviceProcAddr(device, "vkGetSemaphoreCounterValueKHR")); data->SignalSemaphoreKHR = reinterpret_cast(getDeviceProcAddr(device, "vkSignalSemaphoreKHR")); data->WaitSemaphoresKHR = reinterpret_cast(getDeviceProcAddr(device, "vkWaitSemaphoresKHR")); data->AllocateCommandBuffers = reinterpret_cast(getDeviceProcAddr(device, "vkAllocateCommandBuffers")); data->AllocateDescriptorSets = reinterpret_cast(getDeviceProcAddr(device, "vkAllocateDescriptorSets")); data->AllocateMemory = reinterpret_cast(getDeviceProcAddr(device, "vkAllocateMemory")); data->BeginCommandBuffer = reinterpret_cast(getDeviceProcAddr(device, "vkBeginCommandBuffer")); data->BindBufferMemory = reinterpret_cast(getDeviceProcAddr(device, "vkBindBufferMemory")); data->BindImageMemory = reinterpret_cast(getDeviceProcAddr(device, "vkBindImageMemory")); data->CmdBeginQuery = reinterpret_cast(getDeviceProcAddr(device, "vkCmdBeginQuery")); data->CmdBeginRenderPass = reinterpret_cast(getDeviceProcAddr(device, "vkCmdBeginRenderPass")); data->CmdBindDescriptorSets = reinterpret_cast(getDeviceProcAddr(device, "vkCmdBindDescriptorSets")); data->CmdBindIndexBuffer = reinterpret_cast(getDeviceProcAddr(device, "vkCmdBindIndexBuffer")); data->CmdBindPipeline = reinterpret_cast(getDeviceProcAddr(device, "vkCmdBindPipeline")); data->CmdBindVertexBuffers = reinterpret_cast(getDeviceProcAddr(device, "vkCmdBindVertexBuffers")); data->CmdBlitImage = reinterpret_cast(getDeviceProcAddr(device, "vkCmdBlitImage")); data->CmdClearAttachments = reinterpret_cast(getDeviceProcAddr(device, "vkCmdClearAttachments")); data->CmdClearColorImage = reinterpret_cast(getDeviceProcAddr(device, "vkCmdClearColorImage")); data->CmdClearDepthStencilImage = reinterpret_cast(getDeviceProcAddr(device, "vkCmdClearDepthStencilImage")); data->CmdCopyBuffer = reinterpret_cast(getDeviceProcAddr(device, "vkCmdCopyBuffer")); data->CmdCopyBufferToImage = reinterpret_cast(getDeviceProcAddr(device, "vkCmdCopyBufferToImage")); data->CmdCopyImage = reinterpret_cast(getDeviceProcAddr(device, "vkCmdCopyImage")); data->CmdCopyImageToBuffer = reinterpret_cast(getDeviceProcAddr(device, "vkCmdCopyImageToBuffer")); data->CmdCopyQueryPoolResults = reinterpret_cast(getDeviceProcAddr(device, "vkCmdCopyQueryPoolResults")); data->CmdDispatch = reinterpret_cast(getDeviceProcAddr(device, "vkCmdDispatch")); data->CmdDispatchIndirect = reinterpret_cast(getDeviceProcAddr(device, "vkCmdDispatchIndirect")); data->CmdDraw = reinterpret_cast(getDeviceProcAddr(device, "vkCmdDraw")); data->CmdDrawIndexed = reinterpret_cast(getDeviceProcAddr(device, "vkCmdDrawIndexed")); data->CmdDrawIndexedIndirect = reinterpret_cast(getDeviceProcAddr(device, "vkCmdDrawIndexedIndirect")); data->CmdDrawIndirect = reinterpret_cast(getDeviceProcAddr(device, "vkCmdDrawIndirect")); data->CmdEndQuery = reinterpret_cast(getDeviceProcAddr(device, "vkCmdEndQuery")); data->CmdEndRenderPass = reinterpret_cast(getDeviceProcAddr(device, "vkCmdEndRenderPass")); data->CmdExecuteCommands = reinterpret_cast(getDeviceProcAddr(device, "vkCmdExecuteCommands")); data->CmdFillBuffer = reinterpret_cast(getDeviceProcAddr(device, "vkCmdFillBuffer")); data->CmdNextSubpass = reinterpret_cast(getDeviceProcAddr(device, "vkCmdNextSubpass")); data->CmdPipelineBarrier = reinterpret_cast(getDeviceProcAddr(device, "vkCmdPipelineBarrier")); data->CmdPushConstants = reinterpret_cast(getDeviceProcAddr(device, "vkCmdPushConstants")); data->CmdResetEvent = reinterpret_cast(getDeviceProcAddr(device, "vkCmdResetEvent")); data->CmdResetQueryPool = reinterpret_cast(getDeviceProcAddr(device, "vkCmdResetQueryPool")); data->CmdResolveImage = reinterpret_cast(getDeviceProcAddr(device, "vkCmdResolveImage")); data->CmdSetBlendConstants = reinterpret_cast(getDeviceProcAddr(device, "vkCmdSetBlendConstants")); data->CmdSetDepthBias = reinterpret_cast(getDeviceProcAddr(device, "vkCmdSetDepthBias")); data->CmdSetDepthBounds = reinterpret_cast(getDeviceProcAddr(device, "vkCmdSetDepthBounds")); data->CmdSetEvent = reinterpret_cast(getDeviceProcAddr(device, "vkCmdSetEvent")); data->CmdSetLineWidth = reinterpret_cast(getDeviceProcAddr(device, "vkCmdSetLineWidth")); data->CmdSetScissor = reinterpret_cast(getDeviceProcAddr(device, "vkCmdSetScissor")); data->CmdSetStencilCompareMask = reinterpret_cast(getDeviceProcAddr(device, "vkCmdSetStencilCompareMask")); data->CmdSetStencilReference = reinterpret_cast(getDeviceProcAddr(device, "vkCmdSetStencilReference")); data->CmdSetStencilWriteMask = reinterpret_cast(getDeviceProcAddr(device, "vkCmdSetStencilWriteMask")); data->CmdSetViewport = reinterpret_cast(getDeviceProcAddr(device, "vkCmdSetViewport")); data->CmdUpdateBuffer = reinterpret_cast(getDeviceProcAddr(device, "vkCmdUpdateBuffer")); data->CmdWaitEvents = reinterpret_cast(getDeviceProcAddr(device, "vkCmdWaitEvents")); data->CmdWriteTimestamp = reinterpret_cast(getDeviceProcAddr(device, "vkCmdWriteTimestamp")); data->CreateBuffer = reinterpret_cast(getDeviceProcAddr(device, "vkCreateBuffer")); data->CreateBufferView = reinterpret_cast(getDeviceProcAddr(device, "vkCreateBufferView")); data->CreateCommandPool = reinterpret_cast(getDeviceProcAddr(device, "vkCreateCommandPool")); data->CreateComputePipelines = reinterpret_cast(getDeviceProcAddr(device, "vkCreateComputePipelines")); data->CreateDescriptorPool = reinterpret_cast(getDeviceProcAddr(device, "vkCreateDescriptorPool")); data->CreateDescriptorSetLayout = reinterpret_cast(getDeviceProcAddr(device, "vkCreateDescriptorSetLayout")); data->CreateEvent = reinterpret_cast(getDeviceProcAddr(device, "vkCreateEvent")); data->CreateFence = reinterpret_cast(getDeviceProcAddr(device, "vkCreateFence")); data->CreateFramebuffer = reinterpret_cast(getDeviceProcAddr(device, "vkCreateFramebuffer")); data->CreateGraphicsPipelines = reinterpret_cast(getDeviceProcAddr(device, "vkCreateGraphicsPipelines")); data->CreateImage = reinterpret_cast(getDeviceProcAddr(device, "vkCreateImage")); data->CreateImageView = reinterpret_cast(getDeviceProcAddr(device, "vkCreateImageView")); data->CreatePipelineCache = reinterpret_cast(getDeviceProcAddr(device, "vkCreatePipelineCache")); data->CreatePipelineLayout = reinterpret_cast(getDeviceProcAddr(device, "vkCreatePipelineLayout")); data->CreateQueryPool = reinterpret_cast(getDeviceProcAddr(device, "vkCreateQueryPool")); data->CreateRenderPass = reinterpret_cast(getDeviceProcAddr(device, "vkCreateRenderPass")); data->CreateSampler = reinterpret_cast(getDeviceProcAddr(device, "vkCreateSampler")); data->CreateSemaphore = reinterpret_cast(getDeviceProcAddr(device, "vkCreateSemaphore")); data->CreateShaderModule = reinterpret_cast(getDeviceProcAddr(device, "vkCreateShaderModule")); data->DestroyBuffer = reinterpret_cast(getDeviceProcAddr(device, "vkDestroyBuffer")); data->DestroyBufferView = reinterpret_cast(getDeviceProcAddr(device, "vkDestroyBufferView")); data->DestroyCommandPool = reinterpret_cast(getDeviceProcAddr(device, "vkDestroyCommandPool")); data->DestroyDescriptorPool = reinterpret_cast(getDeviceProcAddr(device, "vkDestroyDescriptorPool")); data->DestroyDescriptorSetLayout = reinterpret_cast(getDeviceProcAddr(device, "vkDestroyDescriptorSetLayout")); data->DestroyDevice = reinterpret_cast(getDeviceProcAddr(device, "vkDestroyDevice")); data->DestroyEvent = reinterpret_cast(getDeviceProcAddr(device, "vkDestroyEvent")); data->DestroyFence = reinterpret_cast(getDeviceProcAddr(device, "vkDestroyFence")); data->DestroyFramebuffer = reinterpret_cast(getDeviceProcAddr(device, "vkDestroyFramebuffer")); data->DestroyImage = reinterpret_cast(getDeviceProcAddr(device, "vkDestroyImage")); data->DestroyImageView = reinterpret_cast(getDeviceProcAddr(device, "vkDestroyImageView")); data->DestroyPipeline = reinterpret_cast(getDeviceProcAddr(device, "vkDestroyPipeline")); data->DestroyPipelineCache = reinterpret_cast(getDeviceProcAddr(device, "vkDestroyPipelineCache")); data->DestroyPipelineLayout = reinterpret_cast(getDeviceProcAddr(device, "vkDestroyPipelineLayout")); data->DestroyQueryPool = reinterpret_cast(getDeviceProcAddr(device, "vkDestroyQueryPool")); data->DestroyRenderPass = reinterpret_cast(getDeviceProcAddr(device, "vkDestroyRenderPass")); data->DestroySampler = reinterpret_cast(getDeviceProcAddr(device, "vkDestroySampler")); data->DestroySemaphore = reinterpret_cast(getDeviceProcAddr(device, "vkDestroySemaphore")); data->DestroyShaderModule = reinterpret_cast(getDeviceProcAddr(device, "vkDestroyShaderModule")); data->DeviceWaitIdle = reinterpret_cast(getDeviceProcAddr(device, "vkDeviceWaitIdle")); data->EndCommandBuffer = reinterpret_cast(getDeviceProcAddr(device, "vkEndCommandBuffer")); data->FlushMappedMemoryRanges = reinterpret_cast(getDeviceProcAddr(device, "vkFlushMappedMemoryRanges")); data->FreeCommandBuffers = reinterpret_cast(getDeviceProcAddr(device, "vkFreeCommandBuffers")); data->FreeDescriptorSets = reinterpret_cast(getDeviceProcAddr(device, "vkFreeDescriptorSets")); data->FreeMemory = reinterpret_cast(getDeviceProcAddr(device, "vkFreeMemory")); data->GetBufferMemoryRequirements = reinterpret_cast(getDeviceProcAddr(device, "vkGetBufferMemoryRequirements")); data->GetDeviceMemoryCommitment = reinterpret_cast(getDeviceProcAddr(device, "vkGetDeviceMemoryCommitment")); data->GetDeviceQueue = reinterpret_cast(getDeviceProcAddr(device, "vkGetDeviceQueue")); data->GetEventStatus = reinterpret_cast(getDeviceProcAddr(device, "vkGetEventStatus")); data->GetFenceStatus = reinterpret_cast(getDeviceProcAddr(device, "vkGetFenceStatus")); data->GetImageMemoryRequirements = reinterpret_cast(getDeviceProcAddr(device, "vkGetImageMemoryRequirements")); data->GetImageSparseMemoryRequirements = reinterpret_cast(getDeviceProcAddr(device, "vkGetImageSparseMemoryRequirements")); data->GetImageSubresourceLayout = reinterpret_cast(getDeviceProcAddr(device, "vkGetImageSubresourceLayout")); data->GetPipelineCacheData = reinterpret_cast(getDeviceProcAddr(device, "vkGetPipelineCacheData")); data->GetQueryPoolResults = reinterpret_cast(getDeviceProcAddr(device, "vkGetQueryPoolResults")); data->GetRenderAreaGranularity = reinterpret_cast(getDeviceProcAddr(device, "vkGetRenderAreaGranularity")); data->InvalidateMappedMemoryRanges = reinterpret_cast(getDeviceProcAddr(device, "vkInvalidateMappedMemoryRanges")); data->MapMemory = reinterpret_cast(getDeviceProcAddr(device, "vkMapMemory")); data->MergePipelineCaches = reinterpret_cast(getDeviceProcAddr(device, "vkMergePipelineCaches")); data->QueueBindSparse = reinterpret_cast(getDeviceProcAddr(device, "vkQueueBindSparse")); data->QueueSubmit = reinterpret_cast(getDeviceProcAddr(device, "vkQueueSubmit")); data->QueueWaitIdle = reinterpret_cast(getDeviceProcAddr(device, "vkQueueWaitIdle")); data->ResetCommandBuffer = reinterpret_cast(getDeviceProcAddr(device, "vkResetCommandBuffer")); data->ResetCommandPool = reinterpret_cast(getDeviceProcAddr(device, "vkResetCommandPool")); data->ResetDescriptorPool = reinterpret_cast(getDeviceProcAddr(device, "vkResetDescriptorPool")); data->ResetEvent = reinterpret_cast(getDeviceProcAddr(device, "vkResetEvent")); data->ResetFences = reinterpret_cast(getDeviceProcAddr(device, "vkResetFences")); data->SetEvent = reinterpret_cast(getDeviceProcAddr(device, "vkSetEvent")); data->UnmapMemory = reinterpret_cast(getDeviceProcAddr(device, "vkUnmapMemory")); data->UpdateDescriptorSets = reinterpret_cast(getDeviceProcAddr(device, "vkUpdateDescriptorSets")); data->WaitForFences = reinterpret_cast(getDeviceProcAddr(device, "vkWaitForFences")); data->BindBufferMemory2 = reinterpret_cast(getDeviceProcAddr(device, "vkBindBufferMemory2")); data->BindImageMemory2 = reinterpret_cast(getDeviceProcAddr(device, "vkBindImageMemory2")); data->CmdDispatchBase = reinterpret_cast(getDeviceProcAddr(device, "vkCmdDispatchBase")); data->CmdSetDeviceMask = reinterpret_cast(getDeviceProcAddr(device, "vkCmdSetDeviceMask")); data->CreateDescriptorUpdateTemplate = reinterpret_cast(getDeviceProcAddr(device, "vkCreateDescriptorUpdateTemplate")); data->CreateSamplerYcbcrConversion = reinterpret_cast(getDeviceProcAddr(device, "vkCreateSamplerYcbcrConversion")); data->DestroyDescriptorUpdateTemplate = reinterpret_cast(getDeviceProcAddr(device, "vkDestroyDescriptorUpdateTemplate")); data->DestroySamplerYcbcrConversion = reinterpret_cast(getDeviceProcAddr(device, "vkDestroySamplerYcbcrConversion")); data->GetBufferMemoryRequirements2 = reinterpret_cast(getDeviceProcAddr(device, "vkGetBufferMemoryRequirements2")); data->GetDescriptorSetLayoutSupport = reinterpret_cast(getDeviceProcAddr(device, "vkGetDescriptorSetLayoutSupport")); data->GetDeviceGroupPeerMemoryFeatures = reinterpret_cast(getDeviceProcAddr(device, "vkGetDeviceGroupPeerMemoryFeatures")); data->GetDeviceQueue2 = reinterpret_cast(getDeviceProcAddr(device, "vkGetDeviceQueue2")); data->GetImageMemoryRequirements2 = reinterpret_cast(getDeviceProcAddr(device, "vkGetImageMemoryRequirements2")); data->GetImageSparseMemoryRequirements2 = reinterpret_cast(getDeviceProcAddr(device, "vkGetImageSparseMemoryRequirements2")); data->TrimCommandPool = reinterpret_cast(getDeviceProcAddr(device, "vkTrimCommandPool")); data->UpdateDescriptorSetWithTemplate = reinterpret_cast(getDeviceProcAddr(device, "vkUpdateDescriptorSetWithTemplate")); data->CmdBeginRenderPass2 = reinterpret_cast(getDeviceProcAddr(device, "vkCmdBeginRenderPass2")); data->CmdDrawIndexedIndirectCount = reinterpret_cast(getDeviceProcAddr(device, "vkCmdDrawIndexedIndirectCount")); data->CmdDrawIndirectCount = reinterpret_cast(getDeviceProcAddr(device, "vkCmdDrawIndirectCount")); data->CmdEndRenderPass2 = reinterpret_cast(getDeviceProcAddr(device, "vkCmdEndRenderPass2")); data->CmdNextSubpass2 = reinterpret_cast(getDeviceProcAddr(device, "vkCmdNextSubpass2")); data->CreateRenderPass2 = reinterpret_cast(getDeviceProcAddr(device, "vkCreateRenderPass2")); data->GetBufferDeviceAddress = reinterpret_cast(getDeviceProcAddr(device, "vkGetBufferDeviceAddress")); data->GetBufferOpaqueCaptureAddress = reinterpret_cast(getDeviceProcAddr(device, "vkGetBufferOpaqueCaptureAddress")); data->GetDeviceMemoryOpaqueCaptureAddress = reinterpret_cast(getDeviceProcAddr(device, "vkGetDeviceMemoryOpaqueCaptureAddress")); data->GetSemaphoreCounterValue = reinterpret_cast(getDeviceProcAddr(device, "vkGetSemaphoreCounterValue")); data->ResetQueryPool = reinterpret_cast(getDeviceProcAddr(device, "vkResetQueryPool")); data->SignalSemaphore = reinterpret_cast(getDeviceProcAddr(device, "vkSignalSemaphore")); data->WaitSemaphores = reinterpret_cast(getDeviceProcAddr(device, "vkWaitSemaphores")); }