From e80c2b12f2657754fc7d49a6a70d07954d39dc2d Mon Sep 17 00:00:00 2001 From: Egor Date: Sat, 3 Nov 2018 09:57:47 -0700 Subject: Enabled Vulkan backend build on Linux --- Graphics/GraphicsEngineVulkan/CMakeLists.txt | 33 +++++++++++++++++----- .../GraphicsEngineVulkan/src/SwapChainVkImpl.cpp | 14 ++++----- 2 files changed, 33 insertions(+), 14 deletions(-) (limited to 'Graphics/GraphicsEngineVulkan') diff --git a/Graphics/GraphicsEngineVulkan/CMakeLists.txt b/Graphics/GraphicsEngineVulkan/CMakeLists.txt index fc1d59b4..b4ed89c4 100644 --- a/Graphics/GraphicsEngineVulkan/CMakeLists.txt +++ b/Graphics/GraphicsEngineVulkan/CMakeLists.txt @@ -149,11 +149,16 @@ add_library(GraphicsEngineVk-static STATIC ) add_library(GraphicsEngineVk-shared SHARED - src/DLLMain.cpp - src/GraphicsEngineVk.def readme.md ) +if(PLATFORM_WIN32) + target_sources(GraphicsEngineVk-shared PRIVATE + src/DLLMain.cpp + src/GraphicsEngineVk.def + ) +endif() + add_dependencies(GraphicsEngineVk-static ProcessGenerateMipsVkShader) target_include_directories(GraphicsEngineVk-static @@ -172,9 +177,11 @@ set(PRIVATE_DEPENDENCIES ) if(PLATFORM_WIN32) - find_library(Vulkan_LIBRARY NAMES vulkan-1 vulkan PATHS ../../External/vulkan/) - list(APPEND PRIVATE_DEPENDENCIES ${Vulkan_LIBRARY}) + find_library(Vulkan_LIBRARY NAMES vulkan-1 vulkan PATHS "../../External/vulkan/libs") +else() + find_library(Vulkan_LIBRARY NAMES vulkan HINTS "$ENV{VULKAN_SDK}/lib" "../../External/vulkan/libs" REQUIRED) endif() +list(APPEND PRIVATE_DEPENDENCIES ${Vulkan_LIBRARY}) set(PUBLIC_DEPENDENCIES GraphicsEngineVkInterface @@ -183,17 +190,29 @@ set(PUBLIC_DEPENDENCIES target_link_libraries(GraphicsEngineVk-static PRIVATE ${PRIVATE_DEPENDENCIES} PUBLIC ${PUBLIC_DEPENDENCIES}) target_link_libraries(GraphicsEngineVk-shared PUBLIC GraphicsEngineVk-static) -target_compile_definitions(GraphicsEngineVk-shared PUBLIC ENGINE_DLL=1) +target_compile_definitions(GraphicsEngineVk-shared PUBLIC ENGINE_DLL=1 PRIVATE BUILDING_DLL=1) 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) +else() + message(FATAL_ERROR "Unknwon platform") endif() target_compile_definitions(GraphicsEngineVk-shared PRIVATE ${PRIVATE_COMPILE_DEFINITIONS}) target_compile_definitions(GraphicsEngineVk-static PRIVATE ${PRIVATE_COMPILE_DEFINITIONS}) -# Set output name to GraphicsEngineVk_{32|64}{r|d} -set_dll_output_name(GraphicsEngineVk-shared GraphicsEngineVk) +if(PLATFORM_WIN32) + + # Set output name to GraphicsEngineVk_{32|64}{r|d} + set_dll_output_name(GraphicsEngineVk-shared GraphicsEngineVk) + +else() + set_target_properties(GraphicsEngineVk-shared PROPERTIES + OUTPUT_NAME GraphicsEngineVk + ) +endif() set_common_target_properties(GraphicsEngineVk-shared) set_common_target_properties(GraphicsEngineVk-static) diff --git a/Graphics/GraphicsEngineVulkan/src/SwapChainVkImpl.cpp b/Graphics/GraphicsEngineVulkan/src/SwapChainVkImpl.cpp index 1251f5c1..c9c0a8f3 100644 --- a/Graphics/GraphicsEngineVulkan/src/SwapChainVkImpl.cpp +++ b/Graphics/GraphicsEngineVulkan/src/SwapChainVkImpl.cpp @@ -53,33 +53,33 @@ SwapChainVkImpl::SwapChainVkImpl(IReferenceCounters* pRefCounters, VkAndroidSurfaceCreateInfoKHR surfaceCreateInfo = {}; surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR; surfaceCreateInfo.window = window; - auto err = vkCreateAndroidSurfaceKHR(instance, &surfaceCreateInfo, NULL, &m_VkSurface); + auto err = vkCreateAndroidSurfaceKHR(m_VulkanInstance->GetVkInstance(), &surfaceCreateInfo, NULL, &m_VkSurface); #elif defined(VK_USE_PLATFORM_IOS_MVK) VkIOSSurfaceCreateInfoMVK surfaceCreateInfo = {}; surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK; surfaceCreateInfo.pNext = NULL; surfaceCreateInfo.flags = 0; surfaceCreateInfo.pView = view; - auto err = vkCreateIOSSurfaceMVK(instance, &surfaceCreateInfo, nullptr, &m_VkSurface); + 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.pNext = NULL; surfaceCreateInfo.flags = 0; surfaceCreateInfo.pView = view; - auto err = vkCreateMacOSSurfaceMVK(instance, &surfaceCreateInfo, NULL, &m_VkSurface); + auto err = vkCreateMacOSSurfaceMVK(m_VulkanInstance->GetVkInstance(), &surfaceCreateInfo, NULL, &m_VkSurface); #elif defined(VK_USE_PLATFORM_WAYLAND_KHR) VkWaylandSurfaceCreateInfoKHR surfaceCreateInfo = {}; surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR; surfaceCreateInfo.display = display; surfaceCreatem_VkSurface = window; - err = vkCreateWaylandSurfaceKHR(instance, &surfaceCreateInfo, nullptr, &m_VkSurface); + err = vkCreateWaylandSurfaceKHR(m_VulkanInstance->GetVkInstance(), &surfaceCreateInfo, nullptr, &m_VkSurface); #elif defined(VK_USE_PLATFORM_XCB_KHR) VkXcbSurfaceCreateInfoKHR surfaceCreateInfo = {}; surfaceCreateInfo.sType = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR; - surfaceCreateInfo.connection = connection; - surfaceCreateInfo.window = window; - auto err = vkCreateXcbSurfaceKHR(instance, &surfaceCreateInfo, nullptr, &m_VkSurface); + surfaceCreateInfo.connection = 0;//connection; + surfaceCreateInfo.window = 0;//window; + auto err = vkCreateXcbSurfaceKHR(m_VulkanInstance->GetVkInstance(), &surfaceCreateInfo, nullptr, &m_VkSurface); #endif CHECK_VK_ERROR_AND_THROW(err, "Failed to create OS-specific surface"); -- cgit v1.2.3