#include "vk_dispatch.h" #ifdef D4R_ENGINE_VK_TABLE namespace d4r { VkTable vkTable; bool loadVulkan(PFN_vkGetInstanceProcAddr instanceProc, VkInstance instance, VkDevice device) { if (!instanceProc) return false; auto deviceProc = reinterpret_cast(instanceProc(instance, "vkGetDeviceProcAddr")); if (!deviceProc) return false; bool ok = true; ok &= (vkTable.GetPhysicalDeviceFormatProperties = reinterpret_cast(instanceProc(instance, "vkGetPhysicalDeviceFormatProperties"))) != nullptr; ok &= (vkTable.GetPhysicalDeviceMemoryProperties = reinterpret_cast(instanceProc(instance, "vkGetPhysicalDeviceMemoryProperties"))) != nullptr; ok &= (vkTable.GetPhysicalDeviceProperties = reinterpret_cast(instanceProc(instance, "vkGetPhysicalDeviceProperties"))) != nullptr; ok &= (vkTable.AllocateDescriptorSets = reinterpret_cast(deviceProc(device, "vkAllocateDescriptorSets"))) != nullptr; ok &= (vkTable.AllocateMemory = reinterpret_cast(deviceProc(device, "vkAllocateMemory"))) != nullptr; ok &= (vkTable.BindBufferMemory = reinterpret_cast(deviceProc(device, "vkBindBufferMemory"))) != nullptr; ok &= (vkTable.BindImageMemory = reinterpret_cast(deviceProc(device, "vkBindImageMemory"))) != nullptr; ok &= (vkTable.CmdBindDescriptorSets = reinterpret_cast(deviceProc(device, "vkCmdBindDescriptorSets"))) != nullptr; ok &= (vkTable.CmdBindPipeline = reinterpret_cast(deviceProc(device, "vkCmdBindPipeline"))) != nullptr; ok &= (vkTable.CmdBlitImage = reinterpret_cast(deviceProc(device, "vkCmdBlitImage"))) != nullptr; ok &= (vkTable.CmdClearColorImage = reinterpret_cast(deviceProc(device, "vkCmdClearColorImage"))) != nullptr; ok &= (vkTable.CmdCopyBuffer = reinterpret_cast(deviceProc(device, "vkCmdCopyBuffer"))) != nullptr; ok &= (vkTable.CmdCopyBufferToImage = reinterpret_cast(deviceProc(device, "vkCmdCopyBufferToImage"))) != nullptr; ok &= (vkTable.CmdCopyImageToBuffer = reinterpret_cast(deviceProc(device, "vkCmdCopyImageToBuffer"))) != nullptr; ok &= (vkTable.CmdDispatch = reinterpret_cast(deviceProc(device, "vkCmdDispatch"))) != nullptr; ok &= (vkTable.CmdFillBuffer = reinterpret_cast(deviceProc(device, "vkCmdFillBuffer"))) != nullptr; ok &= (vkTable.CmdPipelineBarrier = reinterpret_cast(deviceProc(device, "vkCmdPipelineBarrier"))) != nullptr; ok &= (vkTable.CmdUpdateBuffer = reinterpret_cast(deviceProc(device, "vkCmdUpdateBuffer"))) != nullptr; ok &= (vkTable.CmdWriteTimestamp = reinterpret_cast(deviceProc(device, "vkCmdWriteTimestamp"))) != nullptr; ok &= (vkTable.CmdResetQueryPool = reinterpret_cast(deviceProc(device, "vkCmdResetQueryPool"))) != nullptr; ok &= (vkTable.CreateQueryPool = reinterpret_cast(deviceProc(device, "vkCreateQueryPool"))) != nullptr; ok &= (vkTable.DestroyQueryPool = reinterpret_cast(deviceProc(device, "vkDestroyQueryPool"))) != nullptr; ok &= (vkTable.GetQueryPoolResults = reinterpret_cast(deviceProc(device, "vkGetQueryPoolResults"))) != nullptr; ok &= (vkTable.CreateBuffer = reinterpret_cast(deviceProc(device, "vkCreateBuffer"))) != nullptr; ok &= (vkTable.CreateComputePipelines = reinterpret_cast(deviceProc(device, "vkCreateComputePipelines"))) != nullptr; ok &= (vkTable.CreateDescriptorPool = reinterpret_cast(deviceProc(device, "vkCreateDescriptorPool"))) != nullptr; ok &= (vkTable.CreateDescriptorSetLayout = reinterpret_cast(deviceProc(device, "vkCreateDescriptorSetLayout"))) != nullptr; ok &= (vkTable.CreateImage = reinterpret_cast(deviceProc(device, "vkCreateImage"))) != nullptr; ok &= (vkTable.CreateImageView = reinterpret_cast(deviceProc(device, "vkCreateImageView"))) != nullptr; ok &= (vkTable.CreatePipelineLayout = reinterpret_cast(deviceProc(device, "vkCreatePipelineLayout"))) != nullptr; ok &= (vkTable.CreateSampler = reinterpret_cast(deviceProc(device, "vkCreateSampler"))) != nullptr; ok &= (vkTable.CreateShaderModule = reinterpret_cast(deviceProc(device, "vkCreateShaderModule"))) != nullptr; ok &= (vkTable.DestroyBuffer = reinterpret_cast(deviceProc(device, "vkDestroyBuffer"))) != nullptr; ok &= (vkTable.DestroyDescriptorPool = reinterpret_cast(deviceProc(device, "vkDestroyDescriptorPool"))) != nullptr; ok &= (vkTable.DestroyDescriptorSetLayout = reinterpret_cast(deviceProc(device, "vkDestroyDescriptorSetLayout"))) != nullptr; ok &= (vkTable.DestroyImage = reinterpret_cast(deviceProc(device, "vkDestroyImage"))) != nullptr; ok &= (vkTable.DestroyImageView = reinterpret_cast(deviceProc(device, "vkDestroyImageView"))) != nullptr; ok &= (vkTable.DestroyPipeline = reinterpret_cast(deviceProc(device, "vkDestroyPipeline"))) != nullptr; ok &= (vkTable.DestroyPipelineLayout = reinterpret_cast(deviceProc(device, "vkDestroyPipelineLayout"))) != nullptr; ok &= (vkTable.DestroySampler = reinterpret_cast(deviceProc(device, "vkDestroySampler"))) != nullptr; ok &= (vkTable.DestroyShaderModule = reinterpret_cast(deviceProc(device, "vkDestroyShaderModule"))) != nullptr; ok &= (vkTable.FreeMemory = reinterpret_cast(deviceProc(device, "vkFreeMemory"))) != nullptr; ok &= (vkTable.GetBufferMemoryRequirements = reinterpret_cast(deviceProc(device, "vkGetBufferMemoryRequirements"))) != nullptr; ok &= (vkTable.GetBufferDeviceAddress = reinterpret_cast(deviceProc(device, "vkGetBufferDeviceAddress"))) != nullptr; ok &= (vkTable.GetImageMemoryRequirements = reinterpret_cast(deviceProc(device, "vkGetImageMemoryRequirements"))) != nullptr; ok &= (vkTable.MapMemory = reinterpret_cast(deviceProc(device, "vkMapMemory"))) != nullptr; ok &= (vkTable.UnmapMemory = reinterpret_cast(deviceProc(device, "vkUnmapMemory"))) != nullptr; ok &= (vkTable.UpdateDescriptorSets = reinterpret_cast(deviceProc(device, "vkUpdateDescriptorSets"))) != nullptr; return ok; } } // namespace d4r #endif