| // |
| // Copyright 2021 The ANGLE Project Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| // libvulkan_loader.cpp: |
| // Helper functions for the loading Vulkan libraries. |
| // |
| |
| #include "common/vulkan/libvulkan_loader.h" |
| |
| #include "common/system_utils.h" |
| |
| namespace angle |
| { |
| namespace vk |
| { |
| void *OpenLibVulkan() |
| { |
| constexpr const char *kLibVulkanNames[] = { |
| #if defined(ANGLE_PLATFORM_WINDOWS) |
| "vulkan-1.dll", |
| #elif defined(ANGLE_PLATFORM_APPLE) |
| "libvulkan.dylib", |
| "libvulkan.1.dylib", |
| "libMoltenVK.dylib" |
| #else |
| "libvulkan.so", |
| "libvulkan.so.1", |
| #endif |
| }; |
| |
| constexpr SearchType kSearchTypes[] = { |
| // On Android, Fuchsia and GGP we use the system libvulkan. |
| #if defined(ANGLE_USE_CUSTOM_LIBVULKAN) |
| SearchType::ModuleDir, |
| #else |
| SearchType::SystemDir, |
| #endif // defined(ANGLE_USE_CUSTOM_LIBVULKAN) |
| }; |
| |
| for (angle::SearchType searchType : kSearchTypes) |
| { |
| for (const char *libraryName : kLibVulkanNames) |
| { |
| void *library = OpenSystemLibraryWithExtension(libraryName, searchType); |
| if (library) |
| { |
| return library; |
| } |
| } |
| } |
| |
| return nullptr; |
| } |
| } // namespace vk |
| } // namespace angle |