From ea5e784e029aa6ad55cb66ff7eaf11d7082b3edf Mon Sep 17 00:00:00 2001 From: assiduous Date: Mon, 23 Nov 2020 16:03:21 -0800 Subject: Switched to using Volk and dynamic engine libraries on Mac (fixed https://github.com/DiligentGraphics/DiligentCore/issues/151) --- Graphics/GraphicsEngineVulkan/CMakeLists.txt | 31 +++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) (limited to 'Graphics/GraphicsEngineVulkan') diff --git a/Graphics/GraphicsEngineVulkan/CMakeLists.txt b/Graphics/GraphicsEngineVulkan/CMakeLists.txt index 323b4ccf..05c0915b 100644 --- a/Graphics/GraphicsEngineVulkan/CMakeLists.txt +++ b/Graphics/GraphicsEngineVulkan/CMakeLists.txt @@ -216,7 +216,29 @@ if(PLATFORM_WIN32) endif() endif() endif() -endif(PLATFORM_WIN32) +elseif(PLATFORM_MACOS) + if(NOT VULKAN_SDK AND DEFINED ENV{VULKAN_SDK}) + set(VULKAN_SDK $ENV{VULKAN_SDK}) + endif() + + if(VULKAN_SDK) + if(EXISTS "${VULKAN_SDK}/lib/libvulkan.dylib") + set(VULKAN_LIB_PATH ${VULKAN_SDK}/lib CACHE PATH "Vulkan library path" FORCE) + elseif(EXISTS "${VULKAN_SDK}/macOS/lib/libvulkan.dylib") + set(VULKAN_LIB_PATH ${VULKAN_SDK}/macOS/lib CACHE PATH "Vulkan library path" FORCE) + endif() + + if(NOT VULKAN_LIB_PATH) + message(WARNING "Unable to find vulkan library at: " ${VULKAN_SDK}) + endif() + endif() + + if (VULKAN_LIB_PATH) + message("Using Vulkan library path: " ${VULKAN_LIB_PATH}) + else() + message(WARNING "Vulkan library is not found. Executables may fail to start bcause the library may not be in rpath. Define VULKAN_SDK environment or CMake variable to specify the SDK path.") + endif() +endif() if(PLATFORM_LINUX) # VulkanSDK installs dxc to this path @@ -233,8 +255,7 @@ endif() if(PLATFORM_WIN32) # Use Volk elseif(PLATFORM_MACOS) - find_library(Vulkan_LIBRARY NAMES vulkan.1 vulkan PATHS "../../ThirdParty/vulkan/libs/macOS") - list(APPEND PRIVATE_DEPENDENCIES ${Vulkan_LIBRARY}) + # Use Volk elseif(PLATFORM_IOS) set(Vulkan_LIBRARY ${MoltenVK_LIBRARY}) list(APPEND PRIVATE_DEPENDENCIES ${Vulkan_LIBRARY}) @@ -306,9 +327,9 @@ endif() if(PLATFORM_WIN32) set(PRIVATE_COMPILE_DEFINITIONS VK_USE_PLATFORM_WIN32_KHR=1 NOMINMAX DILIGENT_USE_VOLK=1) elseif(PLATFORM_LINUX) - set(PRIVATE_COMPILE_DEFINITIONS VK_USE_PLATFORM_XCB_KHR=1 VK_USE_PLATFORM_XLIB_KHR=1 DILIGENT_USE_VOLK=1) + set(PRIVATE_COMPILE_DEFINITIONS VK_USE_PLATFORM_XCB_KHR=1 VK_USE_PLATFORM_XLIB_KHR=1 DILIGENT_USE_VOLK=1) elseif(PLATFORM_MACOS) - set(PRIVATE_COMPILE_DEFINITIONS VK_USE_PLATFORM_MACOS_MVK=1) + set(PRIVATE_COMPILE_DEFINITIONS VK_USE_PLATFORM_MACOS_MVK=1 DILIGENT_USE_VOLK=1) elseif(PLATFORM_IOS) set(PRIVATE_COMPILE_DEFINITIONS VK_USE_PLATFORM_IOS_MVK=1) elseif(PLATFORM_ANDROID) -- cgit v1.2.3 From 4d66ac648516c48e2aba5f0a51c837af2105dd71 Mon Sep 17 00:00:00 2001 From: assiduous Date: Mon, 23 Nov 2020 19:39:59 -0800 Subject: CMake: updated paths to MoltenVK libraries on iOS --- Graphics/GraphicsEngineVulkan/CMakeLists.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'Graphics/GraphicsEngineVulkan') diff --git a/Graphics/GraphicsEngineVulkan/CMakeLists.txt b/Graphics/GraphicsEngineVulkan/CMakeLists.txt index 05c0915b..cab747e8 100644 --- a/Graphics/GraphicsEngineVulkan/CMakeLists.txt +++ b/Graphics/GraphicsEngineVulkan/CMakeLists.txt @@ -257,8 +257,10 @@ if(PLATFORM_WIN32) elseif(PLATFORM_MACOS) # Use Volk elseif(PLATFORM_IOS) - set(Vulkan_LIBRARY ${MoltenVK_LIBRARY}) - list(APPEND PRIVATE_DEPENDENCIES ${Vulkan_LIBRARY}) + list(APPEND PRIVATE_DEPENDENCIES + "${MoltenVK_FRAMEWORK}/ios-arm64/libMoltenVK.a" + "${MoltenVK_FRAMEWORK}/ios-x86_64-simulator/libMoltenVK.a" + ) find_library(CORE_GRAPHICS CoreGraphics) find_library(METAL_LIBRARY Metal) -- cgit v1.2.3 From d98e6cb036a8bf5b9b5a0ef07a631075c559139f Mon Sep 17 00:00:00 2001 From: assiduous Date: Mon, 23 Nov 2020 21:14:05 -0800 Subject: CMake: added comment --- Graphics/GraphicsEngineVulkan/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) (limited to 'Graphics/GraphicsEngineVulkan') diff --git a/Graphics/GraphicsEngineVulkan/CMakeLists.txt b/Graphics/GraphicsEngineVulkan/CMakeLists.txt index cab747e8..1701c341 100644 --- a/Graphics/GraphicsEngineVulkan/CMakeLists.txt +++ b/Graphics/GraphicsEngineVulkan/CMakeLists.txt @@ -257,6 +257,8 @@ if(PLATFORM_WIN32) elseif(PLATFORM_MACOS) # Use Volk elseif(PLATFORM_IOS) + # For the apparent lack of a better way, link with both arm64 and x64 libraries. + # The linker will issue a warning, but this will work for both device and the simulator. list(APPEND PRIVATE_DEPENDENCIES "${MoltenVK_FRAMEWORK}/ios-arm64/libMoltenVK.a" "${MoltenVK_FRAMEWORK}/ios-x86_64-simulator/libMoltenVK.a" -- cgit v1.2.3