1*8975f5c5SAndroid Build Coastguard Worker // 2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2021 The ANGLE Project Authors. All rights reserved. 3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file. 5*8975f5c5SAndroid Build Coastguard Worker // 6*8975f5c5SAndroid Build Coastguard Worker // libvulkan_loader.cpp: 7*8975f5c5SAndroid Build Coastguard Worker // Helper functions for the loading Vulkan libraries. 8*8975f5c5SAndroid Build Coastguard Worker // 9*8975f5c5SAndroid Build Coastguard Worker 10*8975f5c5SAndroid Build Coastguard Worker #include "common/vulkan/libvulkan_loader.h" 11*8975f5c5SAndroid Build Coastguard Worker 12*8975f5c5SAndroid Build Coastguard Worker #include "common/system_utils.h" 13*8975f5c5SAndroid Build Coastguard Worker 14*8975f5c5SAndroid Build Coastguard Worker namespace angle 15*8975f5c5SAndroid Build Coastguard Worker { 16*8975f5c5SAndroid Build Coastguard Worker namespace vk 17*8975f5c5SAndroid Build Coastguard Worker { OpenLibVulkan()18*8975f5c5SAndroid Build Coastguard Workervoid *OpenLibVulkan() 19*8975f5c5SAndroid Build Coastguard Worker { 20*8975f5c5SAndroid Build Coastguard Worker constexpr const char *kLibVulkanNames[] = { 21*8975f5c5SAndroid Build Coastguard Worker #if defined(ANGLE_PLATFORM_WINDOWS) 22*8975f5c5SAndroid Build Coastguard Worker "vulkan-1.dll", 23*8975f5c5SAndroid Build Coastguard Worker #elif defined(ANGLE_PLATFORM_APPLE) 24*8975f5c5SAndroid Build Coastguard Worker "libvulkan.dylib", 25*8975f5c5SAndroid Build Coastguard Worker "libvulkan.1.dylib", 26*8975f5c5SAndroid Build Coastguard Worker "libMoltenVK.dylib" 27*8975f5c5SAndroid Build Coastguard Worker #else 28*8975f5c5SAndroid Build Coastguard Worker "libvulkan.so", 29*8975f5c5SAndroid Build Coastguard Worker "libvulkan.so.1", 30*8975f5c5SAndroid Build Coastguard Worker #endif 31*8975f5c5SAndroid Build Coastguard Worker }; 32*8975f5c5SAndroid Build Coastguard Worker 33*8975f5c5SAndroid Build Coastguard Worker constexpr SearchType kSearchTypes[] = { 34*8975f5c5SAndroid Build Coastguard Worker // On Android, Fuchsia and GGP we use the system libvulkan. 35*8975f5c5SAndroid Build Coastguard Worker #if defined(ANGLE_USE_CUSTOM_LIBVULKAN) 36*8975f5c5SAndroid Build Coastguard Worker SearchType::ModuleDir, 37*8975f5c5SAndroid Build Coastguard Worker #else 38*8975f5c5SAndroid Build Coastguard Worker SearchType::SystemDir, 39*8975f5c5SAndroid Build Coastguard Worker #endif // defined(ANGLE_USE_CUSTOM_LIBVULKAN) 40*8975f5c5SAndroid Build Coastguard Worker }; 41*8975f5c5SAndroid Build Coastguard Worker 42*8975f5c5SAndroid Build Coastguard Worker for (angle::SearchType searchType : kSearchTypes) 43*8975f5c5SAndroid Build Coastguard Worker { 44*8975f5c5SAndroid Build Coastguard Worker for (const char *libraryName : kLibVulkanNames) 45*8975f5c5SAndroid Build Coastguard Worker { 46*8975f5c5SAndroid Build Coastguard Worker void *library = OpenSystemLibraryWithExtension(libraryName, searchType); 47*8975f5c5SAndroid Build Coastguard Worker if (library) 48*8975f5c5SAndroid Build Coastguard Worker { 49*8975f5c5SAndroid Build Coastguard Worker return library; 50*8975f5c5SAndroid Build Coastguard Worker } 51*8975f5c5SAndroid Build Coastguard Worker } 52*8975f5c5SAndroid Build Coastguard Worker } 53*8975f5c5SAndroid Build Coastguard Worker 54*8975f5c5SAndroid Build Coastguard Worker return nullptr; 55*8975f5c5SAndroid Build Coastguard Worker } 56*8975f5c5SAndroid Build Coastguard Worker } // namespace vk 57*8975f5c5SAndroid Build Coastguard Worker } // namespace angle 58