summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngineVulkan
diff options
context:
space:
mode:
authorEgor <egor.yusov@gmail.com>2018-11-03 16:57:47 +0000
committerEgor <egor.yusov@gmail.com>2018-11-03 16:57:47 +0000
commite80c2b12f2657754fc7d49a6a70d07954d39dc2d (patch)
treee2ea05772e062b7a3e8da73c682fd82c245c0fc2 /Graphics/GraphicsEngineVulkan
parentFixed few more Linux build problems (diff)
downloadDiligentCore-e80c2b12f2657754fc7d49a6a70d07954d39dc2d.tar.gz
DiligentCore-e80c2b12f2657754fc7d49a6a70d07954d39dc2d.zip
Enabled Vulkan backend build on Linux
Diffstat (limited to 'Graphics/GraphicsEngineVulkan')
-rw-r--r--Graphics/GraphicsEngineVulkan/CMakeLists.txt33
-rw-r--r--Graphics/GraphicsEngineVulkan/src/SwapChainVkImpl.cpp14
2 files changed, 33 insertions, 14 deletions
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");