From b39f86bf1f4055e72569c87f250d8821d45cc64a Mon Sep 17 00:00:00 2001 From: Tobias Frisch <tfrisch@uni-koblenz.de> Date: Thu, 9 Jun 2022 14:26:03 +0200 Subject: [PATCH] Added option to enforce a Vulkan version in VMA Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de> --- CMakeLists.txt | 1 + config/lib/VulkanMemoryAllocator.cmake | 22 +++++++++++++++++++++- config/lib/vma/CMakeLists.txt | 2 ++ src/vkcv/Context.cpp | 1 - 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d4770641..2f70c78f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,7 @@ option(BUILD_MODULES "Enables building VkCV as shared libraries" ON) option(BUILD_PROJECTS "Enables building the VkCV projects" ON) option(BUILD_DOXYGEN_DOCS "Enables building the VkCV doxygen documentation" OFF) option(BUILD_SHARED "Enables building VkCV as shared libraries" OFF) +option(BUILD_VMA_VULKAN_VERSION "Enforce a specific Vulkan version for VMA" OFF) if (BUILD_PROJECTS) set(BUILD_MODULES ${BUILD_PROJECTS}) diff --git a/config/lib/VulkanMemoryAllocator.cmake b/config/lib/VulkanMemoryAllocator.cmake index 6dc61dd1..9270dbd0 100644 --- a/config/lib/VulkanMemoryAllocator.cmake +++ b/config/lib/VulkanMemoryAllocator.cmake @@ -1,4 +1,20 @@ +find_package(Vulkan QUIET) + +if (Vulkan_VERSION) + set(BUILD_VMA_VULKAN_VERSION ${Vulkan_VERSION}) +endif() + +set(VMA_VULKAN_VERSION OFF CACHE INTERNAL "") + +if (BUILD_VMA_VULKAN_VERSION) + string(REGEX REPLACE "(\\.[0-9]+)+$" "" VMA_VULKAN_MAJOR_VERSION ${BUILD_VMA_VULKAN_VERSION}) + string(REGEX REPLACE "^[0-9]+\\.([0-9]+)(\\.[0-9]+)?" "\\1" VMA_VULKAN_MINOR_VERSION ${BUILD_VMA_VULKAN_VERSION}) + string(REGEX REPLACE "^([0-9]+\\.)+" "" VMA_VULKAN_PATCH_VERSION ${BUILD_VMA_VULKAN_VERSION}) + + math(EXPR VMA_VULKAN_VERSION "1000000 * ${VMA_VULKAN_MAJOR_VERSION} + 1000 * ${VMA_VULKAN_MINOR_VERSION} + ${VMA_VULKAN_PATCH_VERSION}" OUTPUT_FORMAT DECIMAL) +endif() + use_git_submodule("${vkcv_lib_path}/VulkanMemoryAllocator-Hpp" vma_hpp_status) if (${vma_hpp_status}) @@ -34,5 +50,9 @@ if (${vma_hpp_status}) list(APPEND vkcv_libraries VulkanMemoryAllocator) list(APPEND vkcv_includes ${VMA_HPP_PATH}) - message(${vkcv_config_msg} " VMA - ") + if (VMA_VULKAN_VERSION) + list(APPEND vkcv_definitions "VMA_VULKAN_VERSION=${VMA_VULKAN_VERSION}") + endif() + + message(${vkcv_config_msg} " VMA - " ${BUILD_VMA_VULKAN_VERSION}) endif () diff --git a/config/lib/vma/CMakeLists.txt b/config/lib/vma/CMakeLists.txt index 8b177fdc..2377e371 100644 --- a/config/lib/vma/CMakeLists.txt +++ b/config/lib/vma/CMakeLists.txt @@ -4,6 +4,7 @@ project(VulkanMemoryAllocator) find_package(Vulkan REQUIRED) +option(VMA_VULKAN_VERSION "Enforced Vulkan version" OFF) option(VMA_HPP_PATH "Location of C++ headers" "") option(VMA_VULKAN_H_PATH "Location of Vulkan C headers" "") @@ -64,4 +65,5 @@ target_compile_definitions( VMA_DEBUG_GLOBAL_MUTEX=$<BOOL:${VMA_DEBUG_GLOBAL_MUTEX}> VMA_DEBUG_DONT_EXCEED_MAX_MEMORY_ALLOCATION_COUNT=$<BOOL:${VMA_DEBUG_DONT_EXCEED_MAX_MEMORY_ALLOCATION_COUNT}> VMA_RECORDING_ENABLED=$<BOOL:${VMA_RECORDING_ENABLED}> + VMA_VULKAN_VERSION=${VMA_VULKAN_VERSION} ) diff --git a/src/vkcv/Context.cpp b/src/vkcv/Context.cpp index 0cd327be..f0520f05 100644 --- a/src/vkcv/Context.cpp +++ b/src/vkcv/Context.cpp @@ -89,7 +89,6 @@ namespace vkcv * @param instance The instance * @param physicalDevice The optimal physical device * @return Returns if a suitable GPU is found as physical device - * @see Context.deviceScore */ static bool pickPhysicalDevice(const vk::Instance& instance, vk::PhysicalDevice& physicalDevice) { -- GitLab