From 604b9ef1a83ffc02eb90f48d5ca7bd5ed78ce8c4 Mon Sep 17 00:00:00 2001 From: Egor Yusov Date: Sun, 23 Dec 2018 19:40:32 -0800 Subject: Enabled Vulkan build on macOS --- Graphics/GraphicsEngineVulkan/CMakeLists.txt | 16 +++++++++++++++- Graphics/GraphicsEngineVulkan/src/SwapChainVkImpl.cpp | 4 ++-- 2 files changed, 17 insertions(+), 3 deletions(-) (limited to 'Graphics/GraphicsEngineVulkan') diff --git a/Graphics/GraphicsEngineVulkan/CMakeLists.txt b/Graphics/GraphicsEngineVulkan/CMakeLists.txt index 6bb043f5..a0401154 100644 --- a/Graphics/GraphicsEngineVulkan/CMakeLists.txt +++ b/Graphics/GraphicsEngineVulkan/CMakeLists.txt @@ -178,6 +178,8 @@ set(PRIVATE_DEPENDENCIES if(PLATFORM_WIN32) find_library(Vulkan_LIBRARY NAMES vulkan-1 vulkan PATHS "../../External/vulkan/libs") +elseif(PLATFORM_MACOS) + find_library(Vulkan_LIBRARY NAMES MoltenVK PATHS "../../External/vulkan/libs/macOS" REQUIRED) else() find_library(Vulkan_LIBRARY NAMES vulkan HINTS "$ENV{VULKAN_SDK}/lib" "../../External/vulkan/libs" REQUIRED) endif() @@ -197,10 +199,22 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR set_target_properties(GraphicsEngineVk-shared PROPERTIES CXX_VISIBILITY_PRESET hidden) # -fvisibility=hidden endif() +if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") + # Disable the following clang warning + # '' hides overloaded virtual function + # as hiding is intended + target_compile_options(GraphicsEngineVk-static PRIVATE -Wno-overloaded-virtual) + target_compile_options(GraphicsEngineVk-shared PRIVATE -Wno-overloaded-virtual) +endif() + if(PLATFORM_WIN32) set(PRIVATE_COMPILE_DEFINITIONS VK_USE_PLATFORM_WIN32_KHR=1 NOMINMAX) elseif(PLATFORM_LINUX) set(PRIVATE_COMPILE_DEFINITIONS VK_USE_PLATFORM_XCB_KHR=1) +elseif(PLATFORM_MACOS) + set(PRIVATE_COMPILE_DEFINITIONS VK_USE_PLATFORM_MACOS_MVK=1) +elseif(PLATFORM_IOS) + set(PRIVATE_COMPILE_DEFINITIONS VK_USE_PLATFORM_IOS_MVK=1) else() message(FATAL_ERROR "Unknown platform") endif() @@ -260,4 +274,4 @@ set_target_properties(ProcessGenerateMipsVkShader PROPERTIES if(INSTALL_DILIGENT_CORE) install_core_lib(GraphicsEngineVk-shared) install_core_lib(GraphicsEngineVk-static) -endif() \ No newline at end of file +endif() diff --git a/Graphics/GraphicsEngineVulkan/src/SwapChainVkImpl.cpp b/Graphics/GraphicsEngineVulkan/src/SwapChainVkImpl.cpp index 89b05416..d7434bae 100644 --- a/Graphics/GraphicsEngineVulkan/src/SwapChainVkImpl.cpp +++ b/Graphics/GraphicsEngineVulkan/src/SwapChainVkImpl.cpp @@ -57,12 +57,12 @@ SwapChainVkImpl::SwapChainVkImpl(IReferenceCounters* pRefCounters, #elif defined(VK_USE_PLATFORM_IOS_MVK) VkIOSSurfaceCreateInfoMVK surfaceCreateInfo = {}; surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK; - surfaceCreateInfo.pView = nullptr; + surfaceCreateInfo.pView = pNativeWndHandle; auto err = vkCreateIOSSurfaceMVK(m_VulkanInstance->GetVkInstance(), &surfaceCreateInfo, nullptr, &m_VkSurface); #elif defined(VK_USE_PLATFORM_MACOS_MVK) VkMacOSSurfaceCreateInfoMVK surfaceCreateInfo = {}; surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK; - surfaceCreateInfo.pView = nullptr; + surfaceCreateInfo.pView = pNativeWndHandle; auto err = vkCreateMacOSSurfaceMVK(m_VulkanInstance->GetVkInstance(), &surfaceCreateInfo, NULL, &m_VkSurface); #elif defined(VK_USE_PLATFORM_WAYLAND_KHR) VkWaylandSurfaceCreateInfoKHR surfaceCreateInfo = {}; -- cgit v1.2.3