From 95952ba8f76af60a91a2672f5657039c7fc7fa8c Mon Sep 17 00:00:00 2001 From: azhirnov Date: Wed, 19 Aug 2020 18:57:26 +0300 Subject: Use DXIL to compile SPIRV from HLSL (wip) --- Graphics/GraphicsEngineVulkan/CMakeLists.txt | 45 ++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'Graphics/GraphicsEngineVulkan') 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) -- cgit v1.2.3