// Copyright 2018 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // This file is auto-generated from // gpu/vulkan/generate_bindings.py // It's formatted by clang-format using chromium coding style: // clang-format -i -style=chromium filename // DO NOT EDIT! #include "gpu/vulkan/vulkan_function_pointers.h" #include "base/check_op.h" #include "base/compiler_specific.h" #include "base/logging.h" #include "base/no_destructor.h" namespace gpu { namespace { NOINLINE void LogGetProcError(const char* funcName) { LOG(WARNING) << "Failed to bind vulkan entrypoint: " << funcName; } } // namespace VulkanFunctionPointers* GetVulkanFunctionPointers() { static base::NoDestructor vulkan_function_pointers; return vulkan_function_pointers.get(); } VulkanFunctionPointers::VulkanFunctionPointers() = default; VulkanFunctionPointers::~VulkanFunctionPointers() = default; bool VulkanFunctionPointers::BindUnassociatedFunctionPointersFromLoaderLib( base::NativeLibrary lib) { base::AutoLock lock(write_lock_); loader_library_ = lib; // vkGetInstanceProcAddr must be handled specially since it gets its // function pointer through base::GetFunctionPointerFromNativeLibrary(). // Other Vulkan functions don't do this. vkGetInstanceProcAddr = reinterpret_cast( base::GetFunctionPointerFromNativeLibrary(loader_library_, "vkGetInstanceProcAddr")); if (!vkGetInstanceProcAddr) { LOG(WARNING) << "Failed to find vkGetInstanceProcAddr"; return false; } return BindUnassociatedFunctionPointersCommon(); } bool VulkanFunctionPointers::BindUnassociatedFunctionPointersFromGetProcAddr( PFN_vkGetInstanceProcAddr proc) { DCHECK(proc); DCHECK(!loader_library_); base::AutoLock lock(write_lock_); vkGetInstanceProcAddr = proc; return BindUnassociatedFunctionPointersCommon(); } bool VulkanFunctionPointers::BindUnassociatedFunctionPointersCommon() { constexpr char kvkEnumerateInstanceVersion[] = "vkEnumerateInstanceVersion"; vkEnumerateInstanceVersion = reinterpret_cast( vkGetInstanceProcAddr(nullptr, kvkEnumerateInstanceVersion)); if (!vkEnumerateInstanceVersion) { LogGetProcError(kvkEnumerateInstanceVersion); return false; } constexpr char kvkCreateInstance[] = "vkCreateInstance"; vkCreateInstance = reinterpret_cast( vkGetInstanceProcAddr(nullptr, kvkCreateInstance)); if (!vkCreateInstance) { LogGetProcError(kvkCreateInstance); return false; } constexpr char kvkEnumerateInstanceExtensionProperties[] = "vkEnumerateInstanceExtensionProperties"; vkEnumerateInstanceExtensionProperties = reinterpret_cast( vkGetInstanceProcAddr(nullptr, kvkEnumerateInstanceExtensionProperties)); if (!vkEnumerateInstanceExtensionProperties) { LogGetProcError(kvkEnumerateInstanceExtensionProperties); return false; } constexpr char kvkEnumerateInstanceLayerProperties[] = "vkEnumerateInstanceLayerProperties"; vkEnumerateInstanceLayerProperties = reinterpret_cast( vkGetInstanceProcAddr(nullptr, kvkEnumerateInstanceLayerProperties)); if (!vkEnumerateInstanceLayerProperties) { LogGetProcError(kvkEnumerateInstanceLayerProperties); return false; } return true; } bool VulkanFunctionPointers::BindInstanceFunctionPointers( VkInstance vk_instance, uint32_t api_version, const gfx::ExtensionSet& enabled_extensions) { DCHECK_GE(api_version, kVulkanRequiredApiVersion); base::AutoLock lock(write_lock_); constexpr char kvkCreateDevice[] = "vkCreateDevice"; vkCreateDevice = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkCreateDevice)); if (!vkCreateDevice) { LogGetProcError(kvkCreateDevice); return false; } constexpr char kvkDestroyInstance[] = "vkDestroyInstance"; vkDestroyInstance = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkDestroyInstance)); if (!vkDestroyInstance) { LogGetProcError(kvkDestroyInstance); return false; } constexpr char kvkEnumerateDeviceExtensionProperties[] = "vkEnumerateDeviceExtensionProperties"; vkEnumerateDeviceExtensionProperties = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkEnumerateDeviceExtensionProperties)); if (!vkEnumerateDeviceExtensionProperties) { LogGetProcError(kvkEnumerateDeviceExtensionProperties); return false; } constexpr char kvkEnumerateDeviceLayerProperties[] = "vkEnumerateDeviceLayerProperties"; vkEnumerateDeviceLayerProperties = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkEnumerateDeviceLayerProperties)); if (!vkEnumerateDeviceLayerProperties) { LogGetProcError(kvkEnumerateDeviceLayerProperties); return false; } constexpr char kvkEnumeratePhysicalDevices[] = "vkEnumeratePhysicalDevices"; vkEnumeratePhysicalDevices = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkEnumeratePhysicalDevices)); if (!vkEnumeratePhysicalDevices) { LogGetProcError(kvkEnumeratePhysicalDevices); return false; } constexpr char kvkGetDeviceProcAddr[] = "vkGetDeviceProcAddr"; vkGetDeviceProcAddr = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkGetDeviceProcAddr)); if (!vkGetDeviceProcAddr) { LogGetProcError(kvkGetDeviceProcAddr); return false; } constexpr char kvkGetPhysicalDeviceExternalSemaphoreProperties[] = "vkGetPhysicalDeviceExternalSemaphoreProperties"; vkGetPhysicalDeviceExternalSemaphoreProperties = reinterpret_cast( vkGetInstanceProcAddr( vk_instance, kvkGetPhysicalDeviceExternalSemaphoreProperties)); if (!vkGetPhysicalDeviceExternalSemaphoreProperties) { LogGetProcError(kvkGetPhysicalDeviceExternalSemaphoreProperties); return false; } constexpr char kvkGetPhysicalDeviceFeatures2[] = "vkGetPhysicalDeviceFeatures2"; vkGetPhysicalDeviceFeatures2 = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkGetPhysicalDeviceFeatures2)); if (!vkGetPhysicalDeviceFeatures2) { LogGetProcError(kvkGetPhysicalDeviceFeatures2); return false; } constexpr char kvkGetPhysicalDeviceFormatProperties[] = "vkGetPhysicalDeviceFormatProperties"; vkGetPhysicalDeviceFormatProperties = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkGetPhysicalDeviceFormatProperties)); if (!vkGetPhysicalDeviceFormatProperties) { LogGetProcError(kvkGetPhysicalDeviceFormatProperties); return false; } constexpr char kvkGetPhysicalDeviceFormatProperties2[] = "vkGetPhysicalDeviceFormatProperties2"; vkGetPhysicalDeviceFormatProperties2 = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkGetPhysicalDeviceFormatProperties2)); if (!vkGetPhysicalDeviceFormatProperties2) { LogGetProcError(kvkGetPhysicalDeviceFormatProperties2); return false; } constexpr char kvkGetPhysicalDeviceImageFormatProperties2[] = "vkGetPhysicalDeviceImageFormatProperties2"; vkGetPhysicalDeviceImageFormatProperties2 = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkGetPhysicalDeviceImageFormatProperties2)); if (!vkGetPhysicalDeviceImageFormatProperties2) { LogGetProcError(kvkGetPhysicalDeviceImageFormatProperties2); return false; } constexpr char kvkGetPhysicalDeviceMemoryProperties[] = "vkGetPhysicalDeviceMemoryProperties"; vkGetPhysicalDeviceMemoryProperties = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkGetPhysicalDeviceMemoryProperties)); if (!vkGetPhysicalDeviceMemoryProperties) { LogGetProcError(kvkGetPhysicalDeviceMemoryProperties); return false; } constexpr char kvkGetPhysicalDeviceMemoryProperties2[] = "vkGetPhysicalDeviceMemoryProperties2"; vkGetPhysicalDeviceMemoryProperties2 = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkGetPhysicalDeviceMemoryProperties2)); if (!vkGetPhysicalDeviceMemoryProperties2) { LogGetProcError(kvkGetPhysicalDeviceMemoryProperties2); return false; } constexpr char kvkGetPhysicalDeviceProperties[] = "vkGetPhysicalDeviceProperties"; vkGetPhysicalDeviceProperties = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkGetPhysicalDeviceProperties)); if (!vkGetPhysicalDeviceProperties) { LogGetProcError(kvkGetPhysicalDeviceProperties); return false; } constexpr char kvkGetPhysicalDeviceProperties2[] = "vkGetPhysicalDeviceProperties2"; vkGetPhysicalDeviceProperties2 = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkGetPhysicalDeviceProperties2)); if (!vkGetPhysicalDeviceProperties2) { LogGetProcError(kvkGetPhysicalDeviceProperties2); return false; } constexpr char kvkGetPhysicalDeviceQueueFamilyProperties[] = "vkGetPhysicalDeviceQueueFamilyProperties"; vkGetPhysicalDeviceQueueFamilyProperties = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkGetPhysicalDeviceQueueFamilyProperties)); if (!vkGetPhysicalDeviceQueueFamilyProperties) { LogGetProcError(kvkGetPhysicalDeviceQueueFamilyProperties); return false; } #if DCHECK_IS_ON() if (gfx::HasExtension(enabled_extensions, VK_EXT_DEBUG_REPORT_EXTENSION_NAME)) { constexpr char kvkCreateDebugReportCallbackEXT[] = "vkCreateDebugReportCallbackEXT"; vkCreateDebugReportCallbackEXT = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkCreateDebugReportCallbackEXT)); if (!vkCreateDebugReportCallbackEXT) { LogGetProcError(kvkCreateDebugReportCallbackEXT); return false; } constexpr char kvkDestroyDebugReportCallbackEXT[] = "vkDestroyDebugReportCallbackEXT"; vkDestroyDebugReportCallbackEXT = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkDestroyDebugReportCallbackEXT)); if (!vkDestroyDebugReportCallbackEXT) { LogGetProcError(kvkDestroyDebugReportCallbackEXT); return false; } } #endif // DCHECK_IS_ON() if (gfx::HasExtension(enabled_extensions, VK_KHR_SURFACE_EXTENSION_NAME)) { constexpr char kvkDestroySurfaceKHR[] = "vkDestroySurfaceKHR"; vkDestroySurfaceKHR = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkDestroySurfaceKHR)); if (!vkDestroySurfaceKHR) { LogGetProcError(kvkDestroySurfaceKHR); return false; } constexpr char kvkGetPhysicalDeviceSurfaceCapabilitiesKHR[] = "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"; vkGetPhysicalDeviceSurfaceCapabilitiesKHR = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkGetPhysicalDeviceSurfaceCapabilitiesKHR)); if (!vkGetPhysicalDeviceSurfaceCapabilitiesKHR) { LogGetProcError(kvkGetPhysicalDeviceSurfaceCapabilitiesKHR); return false; } constexpr char kvkGetPhysicalDeviceSurfaceFormatsKHR[] = "vkGetPhysicalDeviceSurfaceFormatsKHR"; vkGetPhysicalDeviceSurfaceFormatsKHR = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkGetPhysicalDeviceSurfaceFormatsKHR)); if (!vkGetPhysicalDeviceSurfaceFormatsKHR) { LogGetProcError(kvkGetPhysicalDeviceSurfaceFormatsKHR); return false; } constexpr char kvkGetPhysicalDeviceSurfaceSupportKHR[] = "vkGetPhysicalDeviceSurfaceSupportKHR"; vkGetPhysicalDeviceSurfaceSupportKHR = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkGetPhysicalDeviceSurfaceSupportKHR)); if (!vkGetPhysicalDeviceSurfaceSupportKHR) { LogGetProcError(kvkGetPhysicalDeviceSurfaceSupportKHR); return false; } } if (gfx::HasExtension(enabled_extensions, VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME)) { constexpr char kvkCreateHeadlessSurfaceEXT[] = "vkCreateHeadlessSurfaceEXT"; vkCreateHeadlessSurfaceEXT = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkCreateHeadlessSurfaceEXT)); if (!vkCreateHeadlessSurfaceEXT) { LogGetProcError(kvkCreateHeadlessSurfaceEXT); return false; } } #if defined(USE_VULKAN_XCB) if (gfx::HasExtension(enabled_extensions, VK_KHR_XCB_SURFACE_EXTENSION_NAME)) { constexpr char kvkCreateXcbSurfaceKHR[] = "vkCreateXcbSurfaceKHR"; vkCreateXcbSurfaceKHR = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkCreateXcbSurfaceKHR)); if (!vkCreateXcbSurfaceKHR) { LogGetProcError(kvkCreateXcbSurfaceKHR); return false; } constexpr char kvkGetPhysicalDeviceXcbPresentationSupportKHR[] = "vkGetPhysicalDeviceXcbPresentationSupportKHR"; vkGetPhysicalDeviceXcbPresentationSupportKHR = reinterpret_cast( vkGetInstanceProcAddr( vk_instance, kvkGetPhysicalDeviceXcbPresentationSupportKHR)); if (!vkGetPhysicalDeviceXcbPresentationSupportKHR) { LogGetProcError(kvkGetPhysicalDeviceXcbPresentationSupportKHR); return false; } } #endif // defined(USE_VULKAN_XCB) #if BUILDFLAG(IS_WIN) if (gfx::HasExtension(enabled_extensions, VK_KHR_WIN32_SURFACE_EXTENSION_NAME)) { constexpr char kvkCreateWin32SurfaceKHR[] = "vkCreateWin32SurfaceKHR"; vkCreateWin32SurfaceKHR = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkCreateWin32SurfaceKHR)); if (!vkCreateWin32SurfaceKHR) { LogGetProcError(kvkCreateWin32SurfaceKHR); return false; } constexpr char kvkGetPhysicalDeviceWin32PresentationSupportKHR[] = "vkGetPhysicalDeviceWin32PresentationSupportKHR"; vkGetPhysicalDeviceWin32PresentationSupportKHR = reinterpret_cast( vkGetInstanceProcAddr( vk_instance, kvkGetPhysicalDeviceWin32PresentationSupportKHR)); if (!vkGetPhysicalDeviceWin32PresentationSupportKHR) { LogGetProcError(kvkGetPhysicalDeviceWin32PresentationSupportKHR); return false; } } #endif // BUILDFLAG(IS_WIN) #if BUILDFLAG(IS_ANDROID) if (gfx::HasExtension(enabled_extensions, VK_KHR_ANDROID_SURFACE_EXTENSION_NAME)) { constexpr char kvkCreateAndroidSurfaceKHR[] = "vkCreateAndroidSurfaceKHR"; vkCreateAndroidSurfaceKHR = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkCreateAndroidSurfaceKHR)); if (!vkCreateAndroidSurfaceKHR) { LogGetProcError(kvkCreateAndroidSurfaceKHR); return false; } } #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_FUCHSIA) if (gfx::HasExtension(enabled_extensions, VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME)) { constexpr char kvkCreateImagePipeSurfaceFUCHSIA[] = "vkCreateImagePipeSurfaceFUCHSIA"; vkCreateImagePipeSurfaceFUCHSIA = reinterpret_cast( vkGetInstanceProcAddr(vk_instance, kvkCreateImagePipeSurfaceFUCHSIA)); if (!vkCreateImagePipeSurfaceFUCHSIA) { LogGetProcError(kvkCreateImagePipeSurfaceFUCHSIA); return false; } } #endif // BUILDFLAG(IS_FUCHSIA) return true; } bool VulkanFunctionPointers::BindDeviceFunctionPointers( VkDevice vk_device, uint32_t api_version, const gfx::ExtensionSet& enabled_extensions) { DCHECK_GE(api_version, kVulkanRequiredApiVersion); base::AutoLock lock(write_lock_); // Device functions constexpr char kvkAllocateCommandBuffers[] = "vkAllocateCommandBuffers"; vkAllocateCommandBuffers = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkAllocateCommandBuffers)); if (!vkAllocateCommandBuffers) { LogGetProcError(kvkAllocateCommandBuffers); return false; } constexpr char kvkAllocateDescriptorSets[] = "vkAllocateDescriptorSets"; vkAllocateDescriptorSets = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkAllocateDescriptorSets)); if (!vkAllocateDescriptorSets) { LogGetProcError(kvkAllocateDescriptorSets); return false; } constexpr char kvkAllocateMemory[] = "vkAllocateMemory"; vkAllocateMemory = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkAllocateMemory)); if (!vkAllocateMemory) { LogGetProcError(kvkAllocateMemory); return false; } constexpr char kvkBeginCommandBuffer[] = "vkBeginCommandBuffer"; vkBeginCommandBuffer = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkBeginCommandBuffer)); if (!vkBeginCommandBuffer) { LogGetProcError(kvkBeginCommandBuffer); return false; } constexpr char kvkBindBufferMemory[] = "vkBindBufferMemory"; vkBindBufferMemory = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkBindBufferMemory)); if (!vkBindBufferMemory) { LogGetProcError(kvkBindBufferMemory); return false; } constexpr char kvkBindBufferMemory2[] = "vkBindBufferMemory2"; vkBindBufferMemory2 = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkBindBufferMemory2)); if (!vkBindBufferMemory2) { LogGetProcError(kvkBindBufferMemory2); return false; } constexpr char kvkBindImageMemory[] = "vkBindImageMemory"; vkBindImageMemory = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkBindImageMemory)); if (!vkBindImageMemory) { LogGetProcError(kvkBindImageMemory); return false; } constexpr char kvkBindImageMemory2[] = "vkBindImageMemory2"; vkBindImageMemory2 = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkBindImageMemory2)); if (!vkBindImageMemory2) { LogGetProcError(kvkBindImageMemory2); return false; } constexpr char kvkCmdBeginRenderPass[] = "vkCmdBeginRenderPass"; vkCmdBeginRenderPass = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCmdBeginRenderPass)); if (!vkCmdBeginRenderPass) { LogGetProcError(kvkCmdBeginRenderPass); return false; } constexpr char kvkCmdBindDescriptorSets[] = "vkCmdBindDescriptorSets"; vkCmdBindDescriptorSets = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCmdBindDescriptorSets)); if (!vkCmdBindDescriptorSets) { LogGetProcError(kvkCmdBindDescriptorSets); return false; } constexpr char kvkCmdBindPipeline[] = "vkCmdBindPipeline"; vkCmdBindPipeline = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCmdBindPipeline)); if (!vkCmdBindPipeline) { LogGetProcError(kvkCmdBindPipeline); return false; } constexpr char kvkCmdBindVertexBuffers[] = "vkCmdBindVertexBuffers"; vkCmdBindVertexBuffers = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCmdBindVertexBuffers)); if (!vkCmdBindVertexBuffers) { LogGetProcError(kvkCmdBindVertexBuffers); return false; } constexpr char kvkCmdCopyBuffer[] = "vkCmdCopyBuffer"; vkCmdCopyBuffer = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCmdCopyBuffer)); if (!vkCmdCopyBuffer) { LogGetProcError(kvkCmdCopyBuffer); return false; } constexpr char kvkCmdCopyBufferToImage[] = "vkCmdCopyBufferToImage"; vkCmdCopyBufferToImage = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCmdCopyBufferToImage)); if (!vkCmdCopyBufferToImage) { LogGetProcError(kvkCmdCopyBufferToImage); return false; } constexpr char kvkCmdCopyImageToBuffer[] = "vkCmdCopyImageToBuffer"; vkCmdCopyImageToBuffer = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCmdCopyImageToBuffer)); if (!vkCmdCopyImageToBuffer) { LogGetProcError(kvkCmdCopyImageToBuffer); return false; } constexpr char kvkCmdDraw[] = "vkCmdDraw"; vkCmdDraw = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCmdDraw)); if (!vkCmdDraw) { LogGetProcError(kvkCmdDraw); return false; } constexpr char kvkCmdEndRenderPass[] = "vkCmdEndRenderPass"; vkCmdEndRenderPass = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCmdEndRenderPass)); if (!vkCmdEndRenderPass) { LogGetProcError(kvkCmdEndRenderPass); return false; } constexpr char kvkCmdExecuteCommands[] = "vkCmdExecuteCommands"; vkCmdExecuteCommands = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCmdExecuteCommands)); if (!vkCmdExecuteCommands) { LogGetProcError(kvkCmdExecuteCommands); return false; } constexpr char kvkCmdNextSubpass[] = "vkCmdNextSubpass"; vkCmdNextSubpass = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCmdNextSubpass)); if (!vkCmdNextSubpass) { LogGetProcError(kvkCmdNextSubpass); return false; } constexpr char kvkCmdPipelineBarrier[] = "vkCmdPipelineBarrier"; vkCmdPipelineBarrier = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCmdPipelineBarrier)); if (!vkCmdPipelineBarrier) { LogGetProcError(kvkCmdPipelineBarrier); return false; } constexpr char kvkCmdPushConstants[] = "vkCmdPushConstants"; vkCmdPushConstants = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCmdPushConstants)); if (!vkCmdPushConstants) { LogGetProcError(kvkCmdPushConstants); return false; } constexpr char kvkCmdSetScissor[] = "vkCmdSetScissor"; vkCmdSetScissor = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCmdSetScissor)); if (!vkCmdSetScissor) { LogGetProcError(kvkCmdSetScissor); return false; } constexpr char kvkCmdSetViewport[] = "vkCmdSetViewport"; vkCmdSetViewport = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCmdSetViewport)); if (!vkCmdSetViewport) { LogGetProcError(kvkCmdSetViewport); return false; } constexpr char kvkCreateBuffer[] = "vkCreateBuffer"; vkCreateBuffer = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCreateBuffer)); if (!vkCreateBuffer) { LogGetProcError(kvkCreateBuffer); return false; } constexpr char kvkCreateCommandPool[] = "vkCreateCommandPool"; vkCreateCommandPool = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCreateCommandPool)); if (!vkCreateCommandPool) { LogGetProcError(kvkCreateCommandPool); return false; } constexpr char kvkCreateDescriptorPool[] = "vkCreateDescriptorPool"; vkCreateDescriptorPool = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCreateDescriptorPool)); if (!vkCreateDescriptorPool) { LogGetProcError(kvkCreateDescriptorPool); return false; } constexpr char kvkCreateDescriptorSetLayout[] = "vkCreateDescriptorSetLayout"; vkCreateDescriptorSetLayout = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCreateDescriptorSetLayout)); if (!vkCreateDescriptorSetLayout) { LogGetProcError(kvkCreateDescriptorSetLayout); return false; } constexpr char kvkCreateFence[] = "vkCreateFence"; vkCreateFence = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCreateFence)); if (!vkCreateFence) { LogGetProcError(kvkCreateFence); return false; } constexpr char kvkCreateFramebuffer[] = "vkCreateFramebuffer"; vkCreateFramebuffer = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCreateFramebuffer)); if (!vkCreateFramebuffer) { LogGetProcError(kvkCreateFramebuffer); return false; } constexpr char kvkCreateGraphicsPipelines[] = "vkCreateGraphicsPipelines"; vkCreateGraphicsPipelines = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCreateGraphicsPipelines)); if (!vkCreateGraphicsPipelines) { LogGetProcError(kvkCreateGraphicsPipelines); return false; } constexpr char kvkCreateImage[] = "vkCreateImage"; vkCreateImage = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCreateImage)); if (!vkCreateImage) { LogGetProcError(kvkCreateImage); return false; } constexpr char kvkCreateImageView[] = "vkCreateImageView"; vkCreateImageView = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCreateImageView)); if (!vkCreateImageView) { LogGetProcError(kvkCreateImageView); return false; } constexpr char kvkCreatePipelineLayout[] = "vkCreatePipelineLayout"; vkCreatePipelineLayout = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCreatePipelineLayout)); if (!vkCreatePipelineLayout) { LogGetProcError(kvkCreatePipelineLayout); return false; } constexpr char kvkCreateRenderPass[] = "vkCreateRenderPass"; vkCreateRenderPass = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCreateRenderPass)); if (!vkCreateRenderPass) { LogGetProcError(kvkCreateRenderPass); return false; } constexpr char kvkCreateSampler[] = "vkCreateSampler"; vkCreateSampler = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCreateSampler)); if (!vkCreateSampler) { LogGetProcError(kvkCreateSampler); return false; } constexpr char kvkCreateSemaphore[] = "vkCreateSemaphore"; vkCreateSemaphore = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCreateSemaphore)); if (!vkCreateSemaphore) { LogGetProcError(kvkCreateSemaphore); return false; } constexpr char kvkCreateShaderModule[] = "vkCreateShaderModule"; vkCreateShaderModule = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCreateShaderModule)); if (!vkCreateShaderModule) { LogGetProcError(kvkCreateShaderModule); return false; } constexpr char kvkDestroyBuffer[] = "vkDestroyBuffer"; vkDestroyBuffer = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkDestroyBuffer)); if (!vkDestroyBuffer) { LogGetProcError(kvkDestroyBuffer); return false; } constexpr char kvkDestroyCommandPool[] = "vkDestroyCommandPool"; vkDestroyCommandPool = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkDestroyCommandPool)); if (!vkDestroyCommandPool) { LogGetProcError(kvkDestroyCommandPool); return false; } constexpr char kvkDestroyDescriptorPool[] = "vkDestroyDescriptorPool"; vkDestroyDescriptorPool = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkDestroyDescriptorPool)); if (!vkDestroyDescriptorPool) { LogGetProcError(kvkDestroyDescriptorPool); return false; } constexpr char kvkDestroyDescriptorSetLayout[] = "vkDestroyDescriptorSetLayout"; vkDestroyDescriptorSetLayout = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkDestroyDescriptorSetLayout)); if (!vkDestroyDescriptorSetLayout) { LogGetProcError(kvkDestroyDescriptorSetLayout); return false; } constexpr char kvkDestroyDevice[] = "vkDestroyDevice"; vkDestroyDevice = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkDestroyDevice)); if (!vkDestroyDevice) { LogGetProcError(kvkDestroyDevice); return false; } constexpr char kvkDestroyFence[] = "vkDestroyFence"; vkDestroyFence = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkDestroyFence)); if (!vkDestroyFence) { LogGetProcError(kvkDestroyFence); return false; } constexpr char kvkDestroyFramebuffer[] = "vkDestroyFramebuffer"; vkDestroyFramebuffer = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkDestroyFramebuffer)); if (!vkDestroyFramebuffer) { LogGetProcError(kvkDestroyFramebuffer); return false; } constexpr char kvkDestroyImage[] = "vkDestroyImage"; vkDestroyImage = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkDestroyImage)); if (!vkDestroyImage) { LogGetProcError(kvkDestroyImage); return false; } constexpr char kvkDestroyImageView[] = "vkDestroyImageView"; vkDestroyImageView = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkDestroyImageView)); if (!vkDestroyImageView) { LogGetProcError(kvkDestroyImageView); return false; } constexpr char kvkDestroyPipeline[] = "vkDestroyPipeline"; vkDestroyPipeline = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkDestroyPipeline)); if (!vkDestroyPipeline) { LogGetProcError(kvkDestroyPipeline); return false; } constexpr char kvkDestroyPipelineLayout[] = "vkDestroyPipelineLayout"; vkDestroyPipelineLayout = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkDestroyPipelineLayout)); if (!vkDestroyPipelineLayout) { LogGetProcError(kvkDestroyPipelineLayout); return false; } constexpr char kvkDestroyRenderPass[] = "vkDestroyRenderPass"; vkDestroyRenderPass = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkDestroyRenderPass)); if (!vkDestroyRenderPass) { LogGetProcError(kvkDestroyRenderPass); return false; } constexpr char kvkDestroySampler[] = "vkDestroySampler"; vkDestroySampler = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkDestroySampler)); if (!vkDestroySampler) { LogGetProcError(kvkDestroySampler); return false; } constexpr char kvkDestroySemaphore[] = "vkDestroySemaphore"; vkDestroySemaphore = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkDestroySemaphore)); if (!vkDestroySemaphore) { LogGetProcError(kvkDestroySemaphore); return false; } constexpr char kvkDestroyShaderModule[] = "vkDestroyShaderModule"; vkDestroyShaderModule = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkDestroyShaderModule)); if (!vkDestroyShaderModule) { LogGetProcError(kvkDestroyShaderModule); return false; } constexpr char kvkDeviceWaitIdle[] = "vkDeviceWaitIdle"; vkDeviceWaitIdle = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkDeviceWaitIdle)); if (!vkDeviceWaitIdle) { LogGetProcError(kvkDeviceWaitIdle); return false; } constexpr char kvkFlushMappedMemoryRanges[] = "vkFlushMappedMemoryRanges"; vkFlushMappedMemoryRanges = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkFlushMappedMemoryRanges)); if (!vkFlushMappedMemoryRanges) { LogGetProcError(kvkFlushMappedMemoryRanges); return false; } constexpr char kvkEndCommandBuffer[] = "vkEndCommandBuffer"; vkEndCommandBuffer = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkEndCommandBuffer)); if (!vkEndCommandBuffer) { LogGetProcError(kvkEndCommandBuffer); return false; } constexpr char kvkFreeCommandBuffers[] = "vkFreeCommandBuffers"; vkFreeCommandBuffers = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkFreeCommandBuffers)); if (!vkFreeCommandBuffers) { LogGetProcError(kvkFreeCommandBuffers); return false; } constexpr char kvkFreeDescriptorSets[] = "vkFreeDescriptorSets"; vkFreeDescriptorSets = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkFreeDescriptorSets)); if (!vkFreeDescriptorSets) { LogGetProcError(kvkFreeDescriptorSets); return false; } constexpr char kvkFreeMemory[] = "vkFreeMemory"; vkFreeMemory = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkFreeMemory)); if (!vkFreeMemory) { LogGetProcError(kvkFreeMemory); return false; } constexpr char kvkInvalidateMappedMemoryRanges[] = "vkInvalidateMappedMemoryRanges"; vkInvalidateMappedMemoryRanges = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkInvalidateMappedMemoryRanges)); if (!vkInvalidateMappedMemoryRanges) { LogGetProcError(kvkInvalidateMappedMemoryRanges); return false; } constexpr char kvkGetBufferMemoryRequirements[] = "vkGetBufferMemoryRequirements"; vkGetBufferMemoryRequirements = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkGetBufferMemoryRequirements)); if (!vkGetBufferMemoryRequirements) { LogGetProcError(kvkGetBufferMemoryRequirements); return false; } constexpr char kvkGetBufferMemoryRequirements2[] = "vkGetBufferMemoryRequirements2"; vkGetBufferMemoryRequirements2 = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkGetBufferMemoryRequirements2)); if (!vkGetBufferMemoryRequirements2) { LogGetProcError(kvkGetBufferMemoryRequirements2); return false; } constexpr char kvkGetDeviceQueue[] = "vkGetDeviceQueue"; vkGetDeviceQueue = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkGetDeviceQueue)); if (!vkGetDeviceQueue) { LogGetProcError(kvkGetDeviceQueue); return false; } constexpr char kvkGetDeviceQueue2[] = "vkGetDeviceQueue2"; vkGetDeviceQueue2 = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkGetDeviceQueue2)); if (!vkGetDeviceQueue2) { LogGetProcError(kvkGetDeviceQueue2); return false; } constexpr char kvkGetFenceStatus[] = "vkGetFenceStatus"; vkGetFenceStatus = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkGetFenceStatus)); if (!vkGetFenceStatus) { LogGetProcError(kvkGetFenceStatus); return false; } constexpr char kvkGetImageMemoryRequirements[] = "vkGetImageMemoryRequirements"; vkGetImageMemoryRequirements = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkGetImageMemoryRequirements)); if (!vkGetImageMemoryRequirements) { LogGetProcError(kvkGetImageMemoryRequirements); return false; } constexpr char kvkGetImageMemoryRequirements2[] = "vkGetImageMemoryRequirements2"; vkGetImageMemoryRequirements2 = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkGetImageMemoryRequirements2)); if (!vkGetImageMemoryRequirements2) { LogGetProcError(kvkGetImageMemoryRequirements2); return false; } constexpr char kvkGetImageSubresourceLayout[] = "vkGetImageSubresourceLayout"; vkGetImageSubresourceLayout = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkGetImageSubresourceLayout)); if (!vkGetImageSubresourceLayout) { LogGetProcError(kvkGetImageSubresourceLayout); return false; } constexpr char kvkMapMemory[] = "vkMapMemory"; vkMapMemory = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkMapMemory)); if (!vkMapMemory) { LogGetProcError(kvkMapMemory); return false; } constexpr char kvkQueueSubmit[] = "vkQueueSubmit"; vkQueueSubmit = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkQueueSubmit)); if (!vkQueueSubmit) { LogGetProcError(kvkQueueSubmit); return false; } constexpr char kvkQueueWaitIdle[] = "vkQueueWaitIdle"; vkQueueWaitIdle = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkQueueWaitIdle)); if (!vkQueueWaitIdle) { LogGetProcError(kvkQueueWaitIdle); return false; } constexpr char kvkResetCommandBuffer[] = "vkResetCommandBuffer"; vkResetCommandBuffer = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkResetCommandBuffer)); if (!vkResetCommandBuffer) { LogGetProcError(kvkResetCommandBuffer); return false; } constexpr char kvkResetFences[] = "vkResetFences"; vkResetFences = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkResetFences)); if (!vkResetFences) { LogGetProcError(kvkResetFences); return false; } constexpr char kvkUnmapMemory[] = "vkUnmapMemory"; vkUnmapMemory = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkUnmapMemory)); if (!vkUnmapMemory) { LogGetProcError(kvkUnmapMemory); return false; } constexpr char kvkUpdateDescriptorSets[] = "vkUpdateDescriptorSets"; vkUpdateDescriptorSets = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkUpdateDescriptorSets)); if (!vkUpdateDescriptorSets) { LogGetProcError(kvkUpdateDescriptorSets); return false; } constexpr char kvkWaitForFences[] = "vkWaitForFences"; vkWaitForFences = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkWaitForFences)); if (!vkWaitForFences) { LogGetProcError(kvkWaitForFences); return false; } #if BUILDFLAG(IS_ANDROID) if (gfx::HasExtension( enabled_extensions, VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME)) { constexpr char kvkGetAndroidHardwareBufferPropertiesANDROID[] = "vkGetAndroidHardwareBufferPropertiesANDROID"; vkGetAndroidHardwareBufferPropertiesANDROID = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkGetAndroidHardwareBufferPropertiesANDROID)); if (!vkGetAndroidHardwareBufferPropertiesANDROID) { LogGetProcError(kvkGetAndroidHardwareBufferPropertiesANDROID); return false; } } #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_POSIX) if (gfx::HasExtension(enabled_extensions, VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME)) { constexpr char kvkGetSemaphoreFdKHR[] = "vkGetSemaphoreFdKHR"; vkGetSemaphoreFdKHR = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkGetSemaphoreFdKHR)); if (!vkGetSemaphoreFdKHR) { LogGetProcError(kvkGetSemaphoreFdKHR); return false; } constexpr char kvkImportSemaphoreFdKHR[] = "vkImportSemaphoreFdKHR"; vkImportSemaphoreFdKHR = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkImportSemaphoreFdKHR)); if (!vkImportSemaphoreFdKHR) { LogGetProcError(kvkImportSemaphoreFdKHR); return false; } } #endif // BUILDFLAG(IS_POSIX) #if BUILDFLAG(IS_WIN) if (gfx::HasExtension(enabled_extensions, VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME)) { constexpr char kvkGetSemaphoreWin32HandleKHR[] = "vkGetSemaphoreWin32HandleKHR"; vkGetSemaphoreWin32HandleKHR = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkGetSemaphoreWin32HandleKHR)); if (!vkGetSemaphoreWin32HandleKHR) { LogGetProcError(kvkGetSemaphoreWin32HandleKHR); return false; } constexpr char kvkImportSemaphoreWin32HandleKHR[] = "vkImportSemaphoreWin32HandleKHR"; vkImportSemaphoreWin32HandleKHR = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkImportSemaphoreWin32HandleKHR)); if (!vkImportSemaphoreWin32HandleKHR) { LogGetProcError(kvkImportSemaphoreWin32HandleKHR); return false; } } #endif // BUILDFLAG(IS_WIN) #if BUILDFLAG(IS_POSIX) if (gfx::HasExtension(enabled_extensions, VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME)) { constexpr char kvkGetMemoryFdKHR[] = "vkGetMemoryFdKHR"; vkGetMemoryFdKHR = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkGetMemoryFdKHR)); if (!vkGetMemoryFdKHR) { LogGetProcError(kvkGetMemoryFdKHR); return false; } constexpr char kvkGetMemoryFdPropertiesKHR[] = "vkGetMemoryFdPropertiesKHR"; vkGetMemoryFdPropertiesKHR = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkGetMemoryFdPropertiesKHR)); if (!vkGetMemoryFdPropertiesKHR) { LogGetProcError(kvkGetMemoryFdPropertiesKHR); return false; } } #endif // BUILDFLAG(IS_POSIX) #if BUILDFLAG(IS_WIN) if (gfx::HasExtension(enabled_extensions, VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME)) { constexpr char kvkGetMemoryWin32HandleKHR[] = "vkGetMemoryWin32HandleKHR"; vkGetMemoryWin32HandleKHR = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkGetMemoryWin32HandleKHR)); if (!vkGetMemoryWin32HandleKHR) { LogGetProcError(kvkGetMemoryWin32HandleKHR); return false; } constexpr char kvkGetMemoryWin32HandlePropertiesKHR[] = "vkGetMemoryWin32HandlePropertiesKHR"; vkGetMemoryWin32HandlePropertiesKHR = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkGetMemoryWin32HandlePropertiesKHR)); if (!vkGetMemoryWin32HandlePropertiesKHR) { LogGetProcError(kvkGetMemoryWin32HandlePropertiesKHR); return false; } } #endif // BUILDFLAG(IS_WIN) #if BUILDFLAG(IS_FUCHSIA) if (gfx::HasExtension(enabled_extensions, VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME)) { constexpr char kvkImportSemaphoreZirconHandleFUCHSIA[] = "vkImportSemaphoreZirconHandleFUCHSIA"; vkImportSemaphoreZirconHandleFUCHSIA = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkImportSemaphoreZirconHandleFUCHSIA)); if (!vkImportSemaphoreZirconHandleFUCHSIA) { LogGetProcError(kvkImportSemaphoreZirconHandleFUCHSIA); return false; } constexpr char kvkGetSemaphoreZirconHandleFUCHSIA[] = "vkGetSemaphoreZirconHandleFUCHSIA"; vkGetSemaphoreZirconHandleFUCHSIA = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkGetSemaphoreZirconHandleFUCHSIA)); if (!vkGetSemaphoreZirconHandleFUCHSIA) { LogGetProcError(kvkGetSemaphoreZirconHandleFUCHSIA); return false; } } #endif // BUILDFLAG(IS_FUCHSIA) #if BUILDFLAG(IS_FUCHSIA) if (gfx::HasExtension(enabled_extensions, VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME)) { constexpr char kvkGetMemoryZirconHandleFUCHSIA[] = "vkGetMemoryZirconHandleFUCHSIA"; vkGetMemoryZirconHandleFUCHSIA = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkGetMemoryZirconHandleFUCHSIA)); if (!vkGetMemoryZirconHandleFUCHSIA) { LogGetProcError(kvkGetMemoryZirconHandleFUCHSIA); return false; } } #endif // BUILDFLAG(IS_FUCHSIA) #if BUILDFLAG(IS_FUCHSIA) if (gfx::HasExtension(enabled_extensions, VK_FUCHSIA_BUFFER_COLLECTION_EXTENSION_NAME)) { constexpr char kvkCreateBufferCollectionFUCHSIA[] = "vkCreateBufferCollectionFUCHSIA"; vkCreateBufferCollectionFUCHSIA = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCreateBufferCollectionFUCHSIA)); if (!vkCreateBufferCollectionFUCHSIA) { LogGetProcError(kvkCreateBufferCollectionFUCHSIA); return false; } constexpr char kvkSetBufferCollectionImageConstraintsFUCHSIA[] = "vkSetBufferCollectionImageConstraintsFUCHSIA"; vkSetBufferCollectionImageConstraintsFUCHSIA = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkSetBufferCollectionImageConstraintsFUCHSIA)); if (!vkSetBufferCollectionImageConstraintsFUCHSIA) { LogGetProcError(kvkSetBufferCollectionImageConstraintsFUCHSIA); return false; } constexpr char kvkGetBufferCollectionPropertiesFUCHSIA[] = "vkGetBufferCollectionPropertiesFUCHSIA"; vkGetBufferCollectionPropertiesFUCHSIA = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkGetBufferCollectionPropertiesFUCHSIA)); if (!vkGetBufferCollectionPropertiesFUCHSIA) { LogGetProcError(kvkGetBufferCollectionPropertiesFUCHSIA); return false; } constexpr char kvkDestroyBufferCollectionFUCHSIA[] = "vkDestroyBufferCollectionFUCHSIA"; vkDestroyBufferCollectionFUCHSIA = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkDestroyBufferCollectionFUCHSIA)); if (!vkDestroyBufferCollectionFUCHSIA) { LogGetProcError(kvkDestroyBufferCollectionFUCHSIA); return false; } } #endif // BUILDFLAG(IS_FUCHSIA) if (gfx::HasExtension(enabled_extensions, VK_KHR_SWAPCHAIN_EXTENSION_NAME)) { constexpr char kvkAcquireNextImageKHR[] = "vkAcquireNextImageKHR"; vkAcquireNextImageKHR = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkAcquireNextImageKHR)); if (!vkAcquireNextImageKHR) { LogGetProcError(kvkAcquireNextImageKHR); return false; } constexpr char kvkCreateSwapchainKHR[] = "vkCreateSwapchainKHR"; vkCreateSwapchainKHR = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkCreateSwapchainKHR)); if (!vkCreateSwapchainKHR) { LogGetProcError(kvkCreateSwapchainKHR); return false; } constexpr char kvkDestroySwapchainKHR[] = "vkDestroySwapchainKHR"; vkDestroySwapchainKHR = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkDestroySwapchainKHR)); if (!vkDestroySwapchainKHR) { LogGetProcError(kvkDestroySwapchainKHR); return false; } constexpr char kvkGetSwapchainImagesKHR[] = "vkGetSwapchainImagesKHR"; vkGetSwapchainImagesKHR = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkGetSwapchainImagesKHR)); if (!vkGetSwapchainImagesKHR) { LogGetProcError(kvkGetSwapchainImagesKHR); return false; } constexpr char kvkQueuePresentKHR[] = "vkQueuePresentKHR"; vkQueuePresentKHR = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkQueuePresentKHR)); if (!vkQueuePresentKHR) { LogGetProcError(kvkQueuePresentKHR); return false; } } #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) if (gfx::HasExtension(enabled_extensions, VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME)) { constexpr char kvkGetImageDrmFormatModifierPropertiesEXT[] = "vkGetImageDrmFormatModifierPropertiesEXT"; vkGetImageDrmFormatModifierPropertiesEXT = reinterpret_cast( vkGetDeviceProcAddr(vk_device, kvkGetImageDrmFormatModifierPropertiesEXT)); if (!vkGetImageDrmFormatModifierPropertiesEXT) { LogGetProcError(kvkGetImageDrmFormatModifierPropertiesEXT); return false; } } #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) return true; } void VulkanFunctionPointers::ResetForTesting() { base::AutoLock lock(write_lock_); per_queue_lock_map.clear(); loader_library_ = nullptr; vkGetInstanceProcAddr = nullptr; vkEnumerateInstanceVersion = nullptr; vkCreateInstance = nullptr; vkEnumerateInstanceExtensionProperties = nullptr; vkEnumerateInstanceLayerProperties = nullptr; vkCreateDevice = nullptr; vkDestroyInstance = nullptr; vkEnumerateDeviceExtensionProperties = nullptr; vkEnumerateDeviceLayerProperties = nullptr; vkEnumeratePhysicalDevices = nullptr; vkGetDeviceProcAddr = nullptr; vkGetPhysicalDeviceExternalSemaphoreProperties = nullptr; vkGetPhysicalDeviceFeatures2 = nullptr; vkGetPhysicalDeviceFormatProperties = nullptr; vkGetPhysicalDeviceFormatProperties2 = nullptr; vkGetPhysicalDeviceImageFormatProperties2 = nullptr; vkGetPhysicalDeviceMemoryProperties = nullptr; vkGetPhysicalDeviceMemoryProperties2 = nullptr; vkGetPhysicalDeviceProperties = nullptr; vkGetPhysicalDeviceProperties2 = nullptr; vkGetPhysicalDeviceQueueFamilyProperties = nullptr; #if DCHECK_IS_ON() vkCreateDebugReportCallbackEXT = nullptr; vkDestroyDebugReportCallbackEXT = nullptr; #endif // DCHECK_IS_ON() vkDestroySurfaceKHR = nullptr; vkGetPhysicalDeviceSurfaceCapabilitiesKHR = nullptr; vkGetPhysicalDeviceSurfaceFormatsKHR = nullptr; vkGetPhysicalDeviceSurfaceSupportKHR = nullptr; vkCreateHeadlessSurfaceEXT = nullptr; #if defined(USE_VULKAN_XCB) vkCreateXcbSurfaceKHR = nullptr; vkGetPhysicalDeviceXcbPresentationSupportKHR = nullptr; #endif // defined(USE_VULKAN_XCB) #if BUILDFLAG(IS_WIN) vkCreateWin32SurfaceKHR = nullptr; vkGetPhysicalDeviceWin32PresentationSupportKHR = nullptr; #endif // BUILDFLAG(IS_WIN) #if BUILDFLAG(IS_ANDROID) vkCreateAndroidSurfaceKHR = nullptr; #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_FUCHSIA) vkCreateImagePipeSurfaceFUCHSIA = nullptr; #endif // BUILDFLAG(IS_FUCHSIA) vkAllocateCommandBuffers = nullptr; vkAllocateDescriptorSets = nullptr; vkAllocateMemory = nullptr; vkBeginCommandBuffer = nullptr; vkBindBufferMemory = nullptr; vkBindBufferMemory2 = nullptr; vkBindImageMemory = nullptr; vkBindImageMemory2 = nullptr; vkCmdBeginRenderPass = nullptr; vkCmdBindDescriptorSets = nullptr; vkCmdBindPipeline = nullptr; vkCmdBindVertexBuffers = nullptr; vkCmdCopyBuffer = nullptr; vkCmdCopyBufferToImage = nullptr; vkCmdCopyImageToBuffer = nullptr; vkCmdDraw = nullptr; vkCmdEndRenderPass = nullptr; vkCmdExecuteCommands = nullptr; vkCmdNextSubpass = nullptr; vkCmdPipelineBarrier = nullptr; vkCmdPushConstants = nullptr; vkCmdSetScissor = nullptr; vkCmdSetViewport = nullptr; vkCreateBuffer = nullptr; vkCreateCommandPool = nullptr; vkCreateDescriptorPool = nullptr; vkCreateDescriptorSetLayout = nullptr; vkCreateFence = nullptr; vkCreateFramebuffer = nullptr; vkCreateGraphicsPipelines = nullptr; vkCreateImage = nullptr; vkCreateImageView = nullptr; vkCreatePipelineLayout = nullptr; vkCreateRenderPass = nullptr; vkCreateSampler = nullptr; vkCreateSemaphore = nullptr; vkCreateShaderModule = nullptr; vkDestroyBuffer = nullptr; vkDestroyCommandPool = nullptr; vkDestroyDescriptorPool = nullptr; vkDestroyDescriptorSetLayout = nullptr; vkDestroyDevice = nullptr; vkDestroyFence = nullptr; vkDestroyFramebuffer = nullptr; vkDestroyImage = nullptr; vkDestroyImageView = nullptr; vkDestroyPipeline = nullptr; vkDestroyPipelineLayout = nullptr; vkDestroyRenderPass = nullptr; vkDestroySampler = nullptr; vkDestroySemaphore = nullptr; vkDestroyShaderModule = nullptr; vkDeviceWaitIdle = nullptr; vkFlushMappedMemoryRanges = nullptr; vkEndCommandBuffer = nullptr; vkFreeCommandBuffers = nullptr; vkFreeDescriptorSets = nullptr; vkFreeMemory = nullptr; vkInvalidateMappedMemoryRanges = nullptr; vkGetBufferMemoryRequirements = nullptr; vkGetBufferMemoryRequirements2 = nullptr; vkGetDeviceQueue = nullptr; vkGetDeviceQueue2 = nullptr; vkGetFenceStatus = nullptr; vkGetImageMemoryRequirements = nullptr; vkGetImageMemoryRequirements2 = nullptr; vkGetImageSubresourceLayout = nullptr; vkMapMemory = nullptr; vkQueueSubmit = nullptr; vkQueueWaitIdle = nullptr; vkResetCommandBuffer = nullptr; vkResetFences = nullptr; vkUnmapMemory = nullptr; vkUpdateDescriptorSets = nullptr; vkWaitForFences = nullptr; #if BUILDFLAG(IS_ANDROID) vkGetAndroidHardwareBufferPropertiesANDROID = nullptr; #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_POSIX) vkGetSemaphoreFdKHR = nullptr; vkImportSemaphoreFdKHR = nullptr; #endif // BUILDFLAG(IS_POSIX) #if BUILDFLAG(IS_WIN) vkGetSemaphoreWin32HandleKHR = nullptr; vkImportSemaphoreWin32HandleKHR = nullptr; #endif // BUILDFLAG(IS_WIN) #if BUILDFLAG(IS_POSIX) vkGetMemoryFdKHR = nullptr; vkGetMemoryFdPropertiesKHR = nullptr; #endif // BUILDFLAG(IS_POSIX) #if BUILDFLAG(IS_WIN) vkGetMemoryWin32HandleKHR = nullptr; vkGetMemoryWin32HandlePropertiesKHR = nullptr; #endif // BUILDFLAG(IS_WIN) #if BUILDFLAG(IS_FUCHSIA) vkImportSemaphoreZirconHandleFUCHSIA = nullptr; vkGetSemaphoreZirconHandleFUCHSIA = nullptr; #endif // BUILDFLAG(IS_FUCHSIA) #if BUILDFLAG(IS_FUCHSIA) vkGetMemoryZirconHandleFUCHSIA = nullptr; #endif // BUILDFLAG(IS_FUCHSIA) #if BUILDFLAG(IS_FUCHSIA) vkCreateBufferCollectionFUCHSIA = nullptr; vkSetBufferCollectionImageConstraintsFUCHSIA = nullptr; vkGetBufferCollectionPropertiesFUCHSIA = nullptr; vkDestroyBufferCollectionFUCHSIA = nullptr; #endif // BUILDFLAG(IS_FUCHSIA) vkAcquireNextImageKHR = nullptr; vkCreateSwapchainKHR = nullptr; vkDestroySwapchainKHR = nullptr; vkGetSwapchainImagesKHR = nullptr; vkQueuePresentKHR = nullptr; #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) vkGetImageDrmFormatModifierPropertiesEXT = nullptr; #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) } } // namespace gpu