summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngineVulkan
diff options
context:
space:
mode:
authorazhirnov <zh1dron@gmail.com>2020-08-19 15:57:26 +0000
committerazhirnov <zh1dron@gmail.com>2020-08-19 16:01:49 +0000
commit95952ba8f76af60a91a2672f5657039c7fc7fa8c (patch)
tree80c3cd6aded0add54afcb549683b1a9ad14b36e6 /Graphics/GraphicsEngineVulkan
parentLoad dxcompiler.dll in runtime (diff)
downloadDiligentCore-95952ba8f76af60a91a2672f5657039c7fc7fa8c.tar.gz
DiligentCore-95952ba8f76af60a91a2672f5657039c7fc7fa8c.zip
Use DXIL to compile SPIRV from HLSL (wip)
Diffstat (limited to 'Graphics/GraphicsEngineVulkan')
-rw-r--r--Graphics/GraphicsEngineVulkan/CMakeLists.txt45
1 files changed, 45 insertions, 0 deletions
diff --git a/Graphics/GraphicsEngineVulkan/CMakeLists.txt b/Graphics/GraphicsEngineVulkan/CMakeLists.txt
index 93a811b1..c6fffdee 100644
--- a/Graphics/GraphicsEngineVulkan/CMakeLists.txt
+++ b/Graphics/GraphicsEngineVulkan/CMakeLists.txt
@@ -187,6 +187,51 @@ else()
list(APPEND PRIVATE_DEPENDENCIES SPIRV-Tools-opt)
endif()
+# find Vulkan SDK
+if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.7")
+ find_package(Vulkan)
+ if(Vulkan_FOUND)
+ get_filename_component(VulkanSDKPath ${Vulkan_LIBRARY} DIRECTORY)
+ set(VulkanSDKPath "${VulkanSDKPath}/..")
+ if(NOT EXISTS "${VulkanSDKPath}")
+ message(FATAL_ERROR "can't get Vulkan SDK path")
+ endif()
+ if(PLATFORM_WIN32)
+ if (${CMAKE_SIZEOF_VOID_P} EQUAL 8)
+ set(Vulkan_BINARY "${VulkanSDKPath}/Bin/dxcompiler.dll")
+ else()
+ set(Vulkan_BINARY "${VulkanSDKPath}/Bin32/dxcompiler.dll")
+ endif()
+ elseif(PLATFORM_LINUX)
+ set(Vulkan_BINARY "${VulkanSDKPath}/bin/dxcompiler.so")
+ endif()
+ endif()
+endif()
+# Try to find Vulkan SDK from environment variable
+if(NOT Vulkan_FOUND)
+ if(EXISTS "$ENV{VULKAN_SDK}")
+ set(Vulkan_FOUND TRUE)
+ if(PLATFORM_WIN32)
+ if (${CMAKE_SIZEOF_VOID_P} EQUAL 8)
+ set(Vulkan_LIBRARY "$ENV{VULKAN_SDK}/Lib")
+ set(Vulkan_BINARY "$ENV{VULKAN_SDK}/Bin/dxcompiler.dll")
+ else()
+ set(Vulkan_LIBRARY "$ENV{VULKAN_SDK}/Lib32")
+ set(Vulkan_BINARY "$ENV{VULKAN_SDK}/Bin32/dxcompiler.dll")
+ endif()
+ elseif(PLATFORM_LINUX)
+ set(Vulkan_LIBRARY "$ENV{VULKAN_SDK}/lib")
+ set(Vulkan_BINARY "$ENV{VULKAN_SDK}/bin/dxcompiler.so")
+ endif()
+ endif()
+endif()
+if(EXISTS ${Vulkan_BINARY})
+ set(HAS_VK_DXIL_COMPILER TRUE CACHE INTERNAL "" FORCE)
+ set(DXC_VK_COMPILER_PATH "${Vulkan_BINARY}" CACHE INTERNAL "" FORCE)
+ target_compile_definitions(Diligent-GraphicsEngineVk-static PRIVATE HAS_VK_DXIL_COMPILER)
+ message(STATUS "Found DXIL compiler for Vulkan")
+endif()
+
if(PLATFORM_WIN32)
# Use Volk
elseif(PLATFORM_MACOS)