diff --git a/CMakeLists.txt b/CMakeLists.txt index d47706415b6274a135a4c85aa1010fde2e959105..2f70c78f105d3a080a3c482de91000dc23ec0e1d 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 6dc61dd1722fefecc204fa67f42f76cc32fd858f..9270dbd0345660802487b0b1fdfd0f769f4ce958 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 8b177fdcb8eb2c3cb71d5142fe13ceb79b4cb36f..2377e371e71e212b8a1142be1f2f1ea732f2d9ab 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 0cd327befa33f33ea0b773eb9cd316d6df34a405..f0520f0505b193e0e13d7f724242f1286f84634e 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) {