223 lines
12 KiB
C++
223 lines
12 KiB
C++
// Copyright 2017 The Dawn Authors
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
#ifndef DAWNNATIVE_VULKAN_VULKANFUNCTIONS_H_
|
|
#define DAWNNATIVE_VULKAN_VULKANFUNCTIONS_H_
|
|
|
|
#include "common/vulkan_platform.h"
|
|
|
|
#include "dawn_native/Error.h"
|
|
|
|
class DynamicLib;
|
|
|
|
namespace dawn_native { namespace vulkan {
|
|
|
|
struct VulkanGlobalKnobs;
|
|
struct VulkanDeviceKnobs;
|
|
|
|
// Stores the Vulkan entry points. Also loads them from the dynamic library
|
|
// and the vkGet*ProcAddress entry points.
|
|
struct VulkanFunctions {
|
|
MaybeError LoadGlobalProcs(const DynamicLib& vulkanLib);
|
|
MaybeError LoadInstanceProcs(VkInstance instance, const VulkanGlobalKnobs& usedGlobals);
|
|
MaybeError LoadDeviceProcs(VkDevice device, const VulkanDeviceKnobs& usedKnobs);
|
|
|
|
// ---------- Global procs
|
|
|
|
// Initial proc from which we can get all the others
|
|
PFN_vkGetInstanceProcAddr GetInstanceProcAddr = nullptr;
|
|
|
|
PFN_vkCreateInstance CreateInstance = nullptr;
|
|
PFN_vkEnumerateInstanceExtensionProperties EnumerateInstanceExtensionProperties = nullptr;
|
|
PFN_vkEnumerateInstanceLayerProperties EnumerateInstanceLayerProperties = nullptr;
|
|
// DestroyInstance isn't technically a global proc but we want to be able to use it
|
|
// before querying the instance procs in case we need to error out during initialization.
|
|
PFN_vkDestroyInstance DestroyInstance = nullptr;
|
|
|
|
// ---------- Instance procs
|
|
|
|
// Core Vulkan 1.0
|
|
PFN_vkCreateDevice CreateDevice = nullptr;
|
|
PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties = nullptr;
|
|
PFN_vkEnumerateDeviceLayerProperties EnumerateDeviceLayerProperties = nullptr;
|
|
PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices = nullptr;
|
|
PFN_vkGetDeviceProcAddr GetDeviceProcAddr = nullptr;
|
|
PFN_vkGetPhysicalDeviceFeatures GetPhysicalDeviceFeatures = nullptr;
|
|
PFN_vkGetPhysicalDeviceFormatProperties GetPhysicalDeviceFormatProperties = nullptr;
|
|
PFN_vkGetPhysicalDeviceImageFormatProperties GetPhysicalDeviceImageFormatProperties =
|
|
nullptr;
|
|
PFN_vkGetPhysicalDeviceMemoryProperties GetPhysicalDeviceMemoryProperties = nullptr;
|
|
PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties = nullptr;
|
|
PFN_vkGetPhysicalDeviceQueueFamilyProperties GetPhysicalDeviceQueueFamilyProperties =
|
|
nullptr;
|
|
PFN_vkGetPhysicalDeviceSparseImageFormatProperties
|
|
GetPhysicalDeviceSparseImageFormatProperties = nullptr;
|
|
// Not technically an instance proc but we want to be able to use it as soon as the
|
|
// device is created.
|
|
PFN_vkDestroyDevice DestroyDevice = nullptr;
|
|
|
|
// VK_EXT_debug_report
|
|
PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT = nullptr;
|
|
PFN_vkDebugReportMessageEXT DebugReportMessageEXT = nullptr;
|
|
PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT = nullptr;
|
|
|
|
// VK_KHR_surface
|
|
PFN_vkDestroySurfaceKHR DestroySurfaceKHR = nullptr;
|
|
PFN_vkGetPhysicalDeviceSurfaceSupportKHR GetPhysicalDeviceSurfaceSupportKHR = nullptr;
|
|
PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR GetPhysicalDeviceSurfaceCapabilitiesKHR =
|
|
nullptr;
|
|
PFN_vkGetPhysicalDeviceSurfaceFormatsKHR GetPhysicalDeviceSurfaceFormatsKHR = nullptr;
|
|
PFN_vkGetPhysicalDeviceSurfacePresentModesKHR GetPhysicalDeviceSurfacePresentModesKHR =
|
|
nullptr;
|
|
|
|
// ---------- Device procs
|
|
|
|
// Core Vulkan 1.0
|
|
PFN_vkAllocateCommandBuffers AllocateCommandBuffers = nullptr;
|
|
PFN_vkAllocateDescriptorSets AllocateDescriptorSets = nullptr;
|
|
PFN_vkAllocateMemory AllocateMemory = nullptr;
|
|
PFN_vkBeginCommandBuffer BeginCommandBuffer = nullptr;
|
|
PFN_vkBindBufferMemory BindBufferMemory = nullptr;
|
|
PFN_vkBindImageMemory BindImageMemory = nullptr;
|
|
PFN_vkCmdBeginQuery CmdBeginQuery = nullptr;
|
|
PFN_vkCmdBeginRenderPass CmdBeginRenderPass = nullptr;
|
|
PFN_vkCmdBindDescriptorSets CmdBindDescriptorSets = nullptr;
|
|
PFN_vkCmdBindIndexBuffer CmdBindIndexBuffer = nullptr;
|
|
PFN_vkCmdBindPipeline CmdBindPipeline = nullptr;
|
|
PFN_vkCmdBindVertexBuffers CmdBindVertexBuffers = nullptr;
|
|
PFN_vkCmdBlitImage CmdBlitImage = nullptr;
|
|
PFN_vkCmdClearAttachments CmdClearAttachments = nullptr;
|
|
PFN_vkCmdClearColorImage CmdClearColorImage = nullptr;
|
|
PFN_vkCmdClearDepthStencilImage CmdClearDepthStencilImage = nullptr;
|
|
PFN_vkCmdCopyBuffer CmdCopyBuffer = nullptr;
|
|
PFN_vkCmdCopyBufferToImage CmdCopyBufferToImage = nullptr;
|
|
PFN_vkCmdCopyImage CmdCopyImage = nullptr;
|
|
PFN_vkCmdCopyImageToBuffer CmdCopyImageToBuffer = nullptr;
|
|
PFN_vkCmdCopyQueryPoolResults CmdCopyQueryPoolResults = nullptr;
|
|
PFN_vkCmdDispatch CmdDispatch = nullptr;
|
|
PFN_vkCmdDispatchIndirect CmdDispatchIndirect = nullptr;
|
|
PFN_vkCmdDraw CmdDraw = nullptr;
|
|
PFN_vkCmdDrawIndexed CmdDrawIndexed = nullptr;
|
|
PFN_vkCmdDrawIndexedIndirect CmdDrawIndexedIndirect = nullptr;
|
|
PFN_vkCmdDrawIndirect CmdDrawIndirect = nullptr;
|
|
PFN_vkCmdEndQuery CmdEndQuery = nullptr;
|
|
PFN_vkCmdEndRenderPass CmdEndRenderPass = nullptr;
|
|
PFN_vkCmdExecuteCommands CmdExecuteCommands = nullptr;
|
|
PFN_vkCmdFillBuffer CmdFillBuffer = nullptr;
|
|
PFN_vkCmdNextSubpass CmdNextSubpass = nullptr;
|
|
PFN_vkCmdPipelineBarrier CmdPipelineBarrier = nullptr;
|
|
PFN_vkCmdPushConstants CmdPushConstants = nullptr;
|
|
PFN_vkCmdResetEvent CmdResetEvent = nullptr;
|
|
PFN_vkCmdResetQueryPool CmdResetQueryPool = nullptr;
|
|
PFN_vkCmdResolveImage CmdResolveImage = nullptr;
|
|
PFN_vkCmdSetBlendConstants CmdSetBlendConstants = nullptr;
|
|
PFN_vkCmdSetDepthBias CmdSetDepthBias = nullptr;
|
|
PFN_vkCmdSetDepthBounds CmdSetDepthBounds = nullptr;
|
|
PFN_vkCmdSetEvent CmdSetEvent = nullptr;
|
|
PFN_vkCmdSetLineWidth CmdSetLineWidth = nullptr;
|
|
PFN_vkCmdSetScissor CmdSetScissor = nullptr;
|
|
PFN_vkCmdSetStencilCompareMask CmdSetStencilCompareMask = nullptr;
|
|
PFN_vkCmdSetStencilReference CmdSetStencilReference = nullptr;
|
|
PFN_vkCmdSetStencilWriteMask CmdSetStencilWriteMask = nullptr;
|
|
PFN_vkCmdSetViewport CmdSetViewport = nullptr;
|
|
PFN_vkCmdUpdateBuffer CmdUpdateBuffer = nullptr;
|
|
PFN_vkCmdWaitEvents CmdWaitEvents = nullptr;
|
|
PFN_vkCmdWriteTimestamp CmdWriteTimestamp = nullptr;
|
|
PFN_vkCreateBuffer CreateBuffer = nullptr;
|
|
PFN_vkCreateBufferView CreateBufferView = nullptr;
|
|
PFN_vkCreateCommandPool CreateCommandPool = nullptr;
|
|
PFN_vkCreateComputePipelines CreateComputePipelines = nullptr;
|
|
PFN_vkCreateDescriptorPool CreateDescriptorPool = nullptr;
|
|
PFN_vkCreateDescriptorSetLayout CreateDescriptorSetLayout = nullptr;
|
|
PFN_vkCreateEvent CreateEvent = nullptr;
|
|
PFN_vkCreateFence CreateFence = nullptr;
|
|
PFN_vkCreateFramebuffer CreateFramebuffer = nullptr;
|
|
PFN_vkCreateGraphicsPipelines CreateGraphicsPipelines = nullptr;
|
|
PFN_vkCreateImage CreateImage = nullptr;
|
|
PFN_vkCreateImageView CreateImageView = nullptr;
|
|
PFN_vkCreatePipelineCache CreatePipelineCache = nullptr;
|
|
PFN_vkCreatePipelineLayout CreatePipelineLayout = nullptr;
|
|
PFN_vkCreateQueryPool CreateQueryPool = nullptr;
|
|
PFN_vkCreateRenderPass CreateRenderPass = nullptr;
|
|
PFN_vkCreateSampler CreateSampler = nullptr;
|
|
PFN_vkCreateSemaphore CreateSemaphore = nullptr;
|
|
PFN_vkCreateShaderModule CreateShaderModule = nullptr;
|
|
PFN_vkDestroyBuffer DestroyBuffer = nullptr;
|
|
PFN_vkDestroyBufferView DestroyBufferView = nullptr;
|
|
PFN_vkDestroyCommandPool DestroyCommandPool = nullptr;
|
|
PFN_vkDestroyDescriptorPool DestroyDescriptorPool = nullptr;
|
|
PFN_vkDestroyDescriptorSetLayout DestroyDescriptorSetLayout = nullptr;
|
|
PFN_vkDestroyEvent DestroyEvent = nullptr;
|
|
PFN_vkDestroyFence DestroyFence = nullptr;
|
|
PFN_vkDestroyFramebuffer DestroyFramebuffer = nullptr;
|
|
PFN_vkDestroyImage DestroyImage = nullptr;
|
|
PFN_vkDestroyImageView DestroyImageView = nullptr;
|
|
PFN_vkDestroyPipeline DestroyPipeline = nullptr;
|
|
PFN_vkDestroyPipelineCache DestroyPipelineCache = nullptr;
|
|
PFN_vkDestroyPipelineLayout DestroyPipelineLayout = nullptr;
|
|
PFN_vkDestroyQueryPool DestroyQueryPool = nullptr;
|
|
PFN_vkDestroyRenderPass DestroyRenderPass = nullptr;
|
|
PFN_vkDestroySampler DestroySampler = nullptr;
|
|
PFN_vkDestroySemaphore DestroySemaphore = nullptr;
|
|
PFN_vkDestroyShaderModule DestroyShaderModule = nullptr;
|
|
PFN_vkDeviceWaitIdle DeviceWaitIdle = nullptr;
|
|
PFN_vkEndCommandBuffer EndCommandBuffer = nullptr;
|
|
PFN_vkFlushMappedMemoryRanges FlushMappedMemoryRanges = nullptr;
|
|
PFN_vkFreeCommandBuffers FreeCommandBuffers = nullptr;
|
|
PFN_vkFreeDescriptorSets FreeDescriptorSets = nullptr;
|
|
PFN_vkFreeMemory FreeMemory = nullptr;
|
|
PFN_vkGetBufferMemoryRequirements GetBufferMemoryRequirements = nullptr;
|
|
PFN_vkGetDeviceMemoryCommitment GetDeviceMemoryCommitment = nullptr;
|
|
PFN_vkGetDeviceQueue GetDeviceQueue = nullptr;
|
|
PFN_vkGetEventStatus GetEventStatus = nullptr;
|
|
PFN_vkGetFenceStatus GetFenceStatus = nullptr;
|
|
PFN_vkGetImageMemoryRequirements GetImageMemoryRequirements = nullptr;
|
|
PFN_vkGetImageSparseMemoryRequirements GetImageSparseMemoryRequirements = nullptr;
|
|
PFN_vkGetImageSubresourceLayout GetImageSubresourceLayout = nullptr;
|
|
PFN_vkGetPipelineCacheData GetPipelineCacheData = nullptr;
|
|
PFN_vkGetQueryPoolResults GetQueryPoolResults = nullptr;
|
|
PFN_vkGetRenderAreaGranularity GetRenderAreaGranularity = nullptr;
|
|
PFN_vkInvalidateMappedMemoryRanges InvalidateMappedMemoryRanges = nullptr;
|
|
PFN_vkMapMemory MapMemory = nullptr;
|
|
PFN_vkMergePipelineCaches MergePipelineCaches = nullptr;
|
|
PFN_vkQueueBindSparse QueueBindSparse = nullptr;
|
|
PFN_vkQueueSubmit QueueSubmit = nullptr;
|
|
PFN_vkQueueWaitIdle QueueWaitIdle = nullptr;
|
|
PFN_vkResetCommandBuffer ResetCommandBuffer = nullptr;
|
|
PFN_vkResetCommandPool ResetCommandPool = nullptr;
|
|
PFN_vkResetDescriptorPool ResetDescriptorPool = nullptr;
|
|
PFN_vkResetEvent ResetEvent = nullptr;
|
|
PFN_vkResetFences ResetFences = nullptr;
|
|
PFN_vkSetEvent SetEvent = nullptr;
|
|
PFN_vkUnmapMemory UnmapMemory = nullptr;
|
|
PFN_vkUpdateDescriptorSets UpdateDescriptorSets = nullptr;
|
|
PFN_vkWaitForFences WaitForFences = nullptr;
|
|
|
|
// VK_EXT_debug_marker
|
|
PFN_vkCmdDebugMarkerBeginEXT CmdDebugMarkerBeginEXT = nullptr;
|
|
PFN_vkCmdDebugMarkerEndEXT CmdDebugMarkerEndEXT = nullptr;
|
|
PFN_vkCmdDebugMarkerInsertEXT CmdDebugMarkerInsertEXT = nullptr;
|
|
|
|
// VK_KHR_swapchain
|
|
PFN_vkCreateSwapchainKHR CreateSwapchainKHR = nullptr;
|
|
PFN_vkDestroySwapchainKHR DestroySwapchainKHR = nullptr;
|
|
PFN_vkGetSwapchainImagesKHR GetSwapchainImagesKHR = nullptr;
|
|
PFN_vkAcquireNextImageKHR AcquireNextImageKHR = nullptr;
|
|
PFN_vkQueuePresentKHR QueuePresentKHR = nullptr;
|
|
};
|
|
|
|
}} // namespace dawn_native::vulkan
|
|
|
|
#endif // DAWNNATIVE_VULKAN_VULKANFUNCTIONS_H_
|