From c3050c1b48040ee1c66f7e84efa8e49fbe35a3e3 Mon Sep 17 00:00:00 2001 From: Alexandre Bouvier Date: Tue, 27 Jun 2023 22:54:33 +0200 Subject: cmake: allow using system VMA library --- .gitmodules | 2 +- CMakeLists.txt | 1 + externals/CMakeLists.txt | 6 +++--- externals/VulkanMemoryAllocator | 1 + externals/vma/VulkanMemoryAllocator | 1 - externals/vma/vma.cpp | 8 -------- src/video_core/CMakeLists.txt | 6 +++++- src/video_core/vulkan_common/vma.cpp | 8 ++++++++ 8 files changed, 19 insertions(+), 14 deletions(-) create mode 160000 externals/VulkanMemoryAllocator delete mode 160000 externals/vma/VulkanMemoryAllocator delete mode 100644 externals/vma/vma.cpp create mode 100644 src/video_core/vulkan_common/vma.cpp diff --git a/.gitmodules b/.gitmodules index 9f96b70be..361f4845b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -56,5 +56,5 @@ path = externals/nx_tzdb/tzdb_to_nx url = https://github.com/lat9nq/tzdb_to_nx.git [submodule "VulkanMemoryAllocator"] - path = externals/vma/VulkanMemoryAllocator + path = externals/VulkanMemoryAllocator url = https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 7f8febb90..bf76282e1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -281,6 +281,7 @@ find_package(LLVM MODULE COMPONENTS Demangle) find_package(lz4 REQUIRED) find_package(nlohmann_json 3.8 REQUIRED) find_package(Opus 1.3 MODULE) +find_package(VulkanMemoryAllocator CONFIG) find_package(ZLIB 1.2 REQUIRED) find_package(zstd 1.5 REQUIRED) diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index 4ff588851..1f7cd598e 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -144,9 +144,9 @@ endif() add_subdirectory(nx_tzdb) # VMA -add_library(vma vma/vma.cpp) -target_include_directories(vma PUBLIC ./vma/VulkanMemoryAllocator/include) -target_link_libraries(vma PRIVATE Vulkan::Headers) +if (NOT TARGET GPUOpen::VulkanMemoryAllocator) + add_subdirectory(VulkanMemoryAllocator) +endif() if (NOT TARGET LLVM::Demangle) add_library(demangle demangle/ItaniumDemangle.cpp) diff --git a/externals/VulkanMemoryAllocator b/externals/VulkanMemoryAllocator new file mode 160000 index 000000000..9b0fc3e7b --- /dev/null +++ b/externals/VulkanMemoryAllocator @@ -0,0 +1 @@ +Subproject commit 9b0fc3e7b02afe97895eb3e945fe800c3a7485ac diff --git a/externals/vma/VulkanMemoryAllocator b/externals/vma/VulkanMemoryAllocator deleted file mode 160000 index 0aa3989b8..000000000 --- a/externals/vma/VulkanMemoryAllocator +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0aa3989b8f382f185fdf646cc83a1d16fa31d6ab diff --git a/externals/vma/vma.cpp b/externals/vma/vma.cpp deleted file mode 100644 index 1fe2cf52b..000000000 --- a/externals/vma/vma.cpp +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project -// SPDX-License-Identifier: GPL-2.0-or-later - -#define VMA_IMPLEMENTATION -#define VMA_STATIC_VULKAN_FUNCTIONS 0 -#define VMA_DYNAMIC_VULKAN_FUNCTIONS 1 - -#include \ No newline at end of file diff --git a/src/video_core/CMakeLists.txt b/src/video_core/CMakeLists.txt index 3b2fe01da..7f79111e0 100644 --- a/src/video_core/CMakeLists.txt +++ b/src/video_core/CMakeLists.txt @@ -274,6 +274,7 @@ add_library(video_core STATIC vulkan_common/vulkan_wrapper.h vulkan_common/nsight_aftermath_tracker.cpp vulkan_common/nsight_aftermath_tracker.h + vulkan_common/vma.cpp ) create_target_directory_groups(video_core) @@ -291,7 +292,7 @@ target_link_options(video_core PRIVATE ${FFmpeg_LDFLAGS}) add_dependencies(video_core host_shaders) target_include_directories(video_core PRIVATE ${HOST_SHADERS_INCLUDE}) -target_link_libraries(video_core PRIVATE sirit Vulkan::Headers vma) +target_link_libraries(video_core PRIVATE sirit Vulkan::Headers GPUOpen::VulkanMemoryAllocator) if (ENABLE_NSIGHT_AFTERMATH) if (NOT DEFINED ENV{NSIGHT_AFTERMATH_SDK}) @@ -324,6 +325,9 @@ else() # xbyak set_source_files_properties(macro/macro_jit_x64.cpp PROPERTIES COMPILE_OPTIONS "-Wno-conversion;-Wno-shadow") + + # VMA + set_source_files_properties(vulkan_common/vma.cpp PROPERTIES COMPILE_OPTIONS "-Wno-conversion;-Wno-unused-variable;-Wno-unused-parameter;-Wno-missing-field-initializers") endif() if (ARCHITECTURE_x86_64) diff --git a/src/video_core/vulkan_common/vma.cpp b/src/video_core/vulkan_common/vma.cpp new file mode 100644 index 000000000..1fe2cf52b --- /dev/null +++ b/src/video_core/vulkan_common/vma.cpp @@ -0,0 +1,8 @@ +// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#define VMA_IMPLEMENTATION +#define VMA_STATIC_VULKAN_FUNCTIONS 0 +#define VMA_DYNAMIC_VULKAN_FUNCTIONS 1 + +#include \ No newline at end of file -- cgit v1.2.3