|
|
|
@ -113,4 +113,141 @@ inline VkResult Filter(VkResult result) { |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
/// Table holding Vulkan instance function pointers. |
|
|
|
struct InstanceDispatch { |
|
|
|
PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr; |
|
|
|
|
|
|
|
PFN_vkCreateInstance vkCreateInstance; |
|
|
|
PFN_vkDestroyInstance vkDestroyInstance; |
|
|
|
PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties; |
|
|
|
|
|
|
|
PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT; |
|
|
|
PFN_vkCreateDevice vkCreateDevice; |
|
|
|
PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT; |
|
|
|
PFN_vkDestroyDevice vkDestroyDevice; |
|
|
|
PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR; |
|
|
|
PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties; |
|
|
|
PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices; |
|
|
|
PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr; |
|
|
|
PFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR; |
|
|
|
PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties; |
|
|
|
PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties; |
|
|
|
PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties; |
|
|
|
PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR; |
|
|
|
PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties; |
|
|
|
PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR; |
|
|
|
PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR; |
|
|
|
PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR; |
|
|
|
PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR; |
|
|
|
PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR; |
|
|
|
PFN_vkQueuePresentKHR vkQueuePresentKHR; |
|
|
|
}; |
|
|
|
|
|
|
|
/// Table holding Vulkan device function pointers. |
|
|
|
struct DeviceDispatch : public InstanceDispatch { |
|
|
|
PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR; |
|
|
|
PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers; |
|
|
|
PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets; |
|
|
|
PFN_vkAllocateMemory vkAllocateMemory; |
|
|
|
PFN_vkBeginCommandBuffer vkBeginCommandBuffer; |
|
|
|
PFN_vkBindBufferMemory vkBindBufferMemory; |
|
|
|
PFN_vkBindImageMemory vkBindImageMemory; |
|
|
|
PFN_vkCmdBeginQuery vkCmdBeginQuery; |
|
|
|
PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass; |
|
|
|
PFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT; |
|
|
|
PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets; |
|
|
|
PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer; |
|
|
|
PFN_vkCmdBindPipeline vkCmdBindPipeline; |
|
|
|
PFN_vkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXT; |
|
|
|
PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers; |
|
|
|
PFN_vkCmdBlitImage vkCmdBlitImage; |
|
|
|
PFN_vkCmdClearAttachments vkCmdClearAttachments; |
|
|
|
PFN_vkCmdCopyBuffer vkCmdCopyBuffer; |
|
|
|
PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage; |
|
|
|
PFN_vkCmdCopyImage vkCmdCopyImage; |
|
|
|
PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer; |
|
|
|
PFN_vkCmdDispatch vkCmdDispatch; |
|
|
|
PFN_vkCmdDraw vkCmdDraw; |
|
|
|
PFN_vkCmdDrawIndexed vkCmdDrawIndexed; |
|
|
|
PFN_vkCmdEndQuery vkCmdEndQuery; |
|
|
|
PFN_vkCmdEndRenderPass vkCmdEndRenderPass; |
|
|
|
PFN_vkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXT; |
|
|
|
PFN_vkCmdFillBuffer vkCmdFillBuffer; |
|
|
|
PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier; |
|
|
|
PFN_vkCmdPushConstants vkCmdPushConstants; |
|
|
|
PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants; |
|
|
|
PFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV; |
|
|
|
PFN_vkCmdSetDepthBias vkCmdSetDepthBias; |
|
|
|
PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds; |
|
|
|
PFN_vkCmdSetScissor vkCmdSetScissor; |
|
|
|
PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask; |
|
|
|
PFN_vkCmdSetStencilReference vkCmdSetStencilReference; |
|
|
|
PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask; |
|
|
|
PFN_vkCmdSetViewport vkCmdSetViewport; |
|
|
|
PFN_vkCreateBuffer vkCreateBuffer; |
|
|
|
PFN_vkCreateBufferView vkCreateBufferView; |
|
|
|
PFN_vkCreateCommandPool vkCreateCommandPool; |
|
|
|
PFN_vkCreateComputePipelines vkCreateComputePipelines; |
|
|
|
PFN_vkCreateDescriptorPool vkCreateDescriptorPool; |
|
|
|
PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout; |
|
|
|
PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR; |
|
|
|
PFN_vkCreateFence vkCreateFence; |
|
|
|
PFN_vkCreateFramebuffer vkCreateFramebuffer; |
|
|
|
PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines; |
|
|
|
PFN_vkCreateImage vkCreateImage; |
|
|
|
PFN_vkCreateImageView vkCreateImageView; |
|
|
|
PFN_vkCreatePipelineLayout vkCreatePipelineLayout; |
|
|
|
PFN_vkCreateQueryPool vkCreateQueryPool; |
|
|
|
PFN_vkCreateRenderPass vkCreateRenderPass; |
|
|
|
PFN_vkCreateSampler vkCreateSampler; |
|
|
|
PFN_vkCreateSemaphore vkCreateSemaphore; |
|
|
|
PFN_vkCreateShaderModule vkCreateShaderModule; |
|
|
|
PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR; |
|
|
|
PFN_vkDestroyBuffer vkDestroyBuffer; |
|
|
|
PFN_vkDestroyBufferView vkDestroyBufferView; |
|
|
|
PFN_vkDestroyCommandPool vkDestroyCommandPool; |
|
|
|
PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool; |
|
|
|
PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout; |
|
|
|
PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR; |
|
|
|
PFN_vkDestroyFence vkDestroyFence; |
|
|
|
PFN_vkDestroyFramebuffer vkDestroyFramebuffer; |
|
|
|
PFN_vkDestroyImage vkDestroyImage; |
|
|
|
PFN_vkDestroyImageView vkDestroyImageView; |
|
|
|
PFN_vkDestroyPipeline vkDestroyPipeline; |
|
|
|
PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout; |
|
|
|
PFN_vkDestroyQueryPool vkDestroyQueryPool; |
|
|
|
PFN_vkDestroyRenderPass vkDestroyRenderPass; |
|
|
|
PFN_vkDestroySampler vkDestroySampler; |
|
|
|
PFN_vkDestroySemaphore vkDestroySemaphore; |
|
|
|
PFN_vkDestroyShaderModule vkDestroyShaderModule; |
|
|
|
PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR; |
|
|
|
PFN_vkDeviceWaitIdle vkDeviceWaitIdle; |
|
|
|
PFN_vkEndCommandBuffer vkEndCommandBuffer; |
|
|
|
PFN_vkFreeCommandBuffers vkFreeCommandBuffers; |
|
|
|
PFN_vkFreeDescriptorSets vkFreeDescriptorSets; |
|
|
|
PFN_vkFreeMemory vkFreeMemory; |
|
|
|
PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements; |
|
|
|
PFN_vkGetDeviceQueue vkGetDeviceQueue; |
|
|
|
PFN_vkGetFenceStatus vkGetFenceStatus; |
|
|
|
PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements; |
|
|
|
PFN_vkGetQueryPoolResults vkGetQueryPoolResults; |
|
|
|
PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV; |
|
|
|
PFN_vkMapMemory vkMapMemory; |
|
|
|
PFN_vkQueueSubmit vkQueueSubmit; |
|
|
|
PFN_vkResetFences vkResetFences; |
|
|
|
PFN_vkResetQueryPoolEXT vkResetQueryPoolEXT; |
|
|
|
PFN_vkUnmapMemory vkUnmapMemory; |
|
|
|
PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR; |
|
|
|
PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets; |
|
|
|
PFN_vkWaitForFences vkWaitForFences; |
|
|
|
}; |
|
|
|
|
|
|
|
/// Loads instance agnostic function pointers. |
|
|
|
/// @return True on success, false on error. |
|
|
|
bool Load(InstanceDispatch&) noexcept; |
|
|
|
|
|
|
|
/// Loads instance function pointers. |
|
|
|
/// @return True on success, false on error. |
|
|
|
bool Load(VkInstance, InstanceDispatch&) noexcept; |
|
|
|
|
|
|
|
} // namespace Vulkan::vk |