summaryrefslogtreecommitdiffstats
path: root/src/video_core/vulkan_common/vulkan_library.cpp
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2020-12-25 01:24:34 +0100
committerReinUsesLisp <reinuseslisp@airmail.cc>2020-12-31 06:02:48 +0100
commitd93742142243dea1355012b9f0ce7f5ac8a2dc02 (patch)
tree67538ec18461b8d0f2e125fb7b797b89b8189db8 /src/video_core/vulkan_common/vulkan_library.cpp
parentMerge pull request #5263 from lioncash/uninit (diff)
downloadyuzu-d93742142243dea1355012b9f0ce7f5ac8a2dc02.tar
yuzu-d93742142243dea1355012b9f0ce7f5ac8a2dc02.tar.gz
yuzu-d93742142243dea1355012b9f0ce7f5ac8a2dc02.tar.bz2
yuzu-d93742142243dea1355012b9f0ce7f5ac8a2dc02.tar.lz
yuzu-d93742142243dea1355012b9f0ce7f5ac8a2dc02.tar.xz
yuzu-d93742142243dea1355012b9f0ce7f5ac8a2dc02.tar.zst
yuzu-d93742142243dea1355012b9f0ce7f5ac8a2dc02.zip
Diffstat (limited to '')
-rw-r--r--src/video_core/vulkan_common/vulkan_library.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/video_core/vulkan_common/vulkan_library.cpp b/src/video_core/vulkan_common/vulkan_library.cpp
new file mode 100644
index 000000000..27c958221
--- /dev/null
+++ b/src/video_core/vulkan_common/vulkan_library.cpp
@@ -0,0 +1,36 @@
+// Copyright 2020 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include <cstdlib>
+#include <string>
+
+#include "common/dynamic_library.h"
+#include "common/file_util.h"
+#include "video_core/vulkan_common/vulkan_library.h"
+
+namespace Vulkan {
+
+Common::DynamicLibrary OpenLibrary() {
+ Common::DynamicLibrary library;
+#ifdef __APPLE__
+ // Check if a path to a specific Vulkan library has been specified.
+ char* const libvulkan_env = std::getenv("LIBVULKAN_PATH");
+ if (!libvulkan_env || !library.Open(libvulkan_env)) {
+ // Use the libvulkan.dylib from the application bundle.
+ const std::string filename =
+ Common::FS::GetBundleDirectory() + "/Contents/Frameworks/libvulkan.dylib";
+ library.Open(filename.c_str());
+ }
+#else
+ std::string filename = Common::DynamicLibrary::GetVersionedFilename("vulkan", 1);
+ if (!library.Open(filename.c_str())) {
+ // Android devices may not have libvulkan.so.1, only libvulkan.so.
+ filename = Common::DynamicLibrary::GetVersionedFilename("vulkan");
+ void(library.Open(filename.c_str()));
+ }
+#endif
+ return library;
+}
+
+} // namespace Vulkan