Skip to content

Commit

Permalink
Fix DX on VK (#40)
Browse files Browse the repository at this point in the history
This could probably be a little neater, as at the moment it conflates dxvk with being not on windows, but I think that if anyone wants to use dxvk on Windows they can cope with improving this
  • Loading branch information
expipiplus1 authored Sep 19, 2024
1 parent 5b53c56 commit af07297
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 16 deletions.
28 changes: 15 additions & 13 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,24 @@ option(SLANG_RHI_BUILD_SHARED "Build shared library" OFF)
option(SLANG_RHI_BUILD_TESTS "Build tests" ON)

# Determine available backends
set(SLANG_RHI_HAS_D3D11 OFF)
set(SLANG_RHI_HAS_D3D12 OFF)
set(SLANG_RHI_HAS_VULKAN OFF)
set(SLANG_RHI_HAS_METAL OFF)
set(SLANG_RHI_HAS_CUDA OFF)
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
set(SLANG_RHI_HAS_D3D11 ON)
set(SLANG_RHI_HAS_D3D12 ON)
set(SLANG_RHI_HAS_VULKAN ON)
set(SLANG_RHI_HAS_CUDA ON)
option(SLANG_RHI_HAS_D3D11 ON)
option(SLANG_RHI_HAS_D3D12 ON)
option(SLANG_RHI_HAS_VULKAN ON)
option(SLANG_RHI_HAS_METAL OFF)
option(SLANG_RHI_HAS_CUDA ON)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
set(SLANG_RHI_HAS_VULKAN ON)
set(SLANG_RHI_HAS_CUDA ON)
option(SLANG_RHI_HAS_D3D11 OFF)
option(SLANG_RHI_HAS_D3D12 OFF)
option(SLANG_RHI_HAS_VULKAN ON)
option(SLANG_RHI_HAS_METAL OFF)
option(SLANG_RHI_HAS_CUDA ON)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
set(SLANG_RHI_HAS_VULKAN ON)
set(SLANG_RHI_HAS_METAL ON)
option(SLANG_RHI_HAS_D3D11 OFF)
option(SLANG_RHI_HAS_D3D12 OFF)
option(SLANG_RHI_HAS_VULKAN ON)
option(SLANG_RHI_HAS_METAL ON)
option(SLANG_RHI_HAS_CUDA OFF)
endif()

# Backend options
Expand Down
6 changes: 5 additions & 1 deletion src/d3d/d3d-util.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -615,7 +615,11 @@ Result D3DUtil::compileHLSLShader(

SharedLibraryHandle D3DUtil::getDxgiModule()
{
const char* const libName = SLANG_ENABLE_DXVK ? "dxvk_dxgi" : "dxgi";
#if SLANG_WINDOWS_FAMILY
const char* const libName = "dxgi";
#else
const char* const libName = "libdxvk_dxgi.so";
#endif

static SharedLibraryHandle s_dxgiModule = [&]()
{
Expand Down
6 changes: 5 additions & 1 deletion src/d3d11/d3d11-device.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,11 @@ Result DeviceImpl::initialize(const Desc& desc)

// Rather than statically link against D3D, we load it dynamically.
SharedLibraryHandle d3dModule;
const char* libName = SLANG_ENABLE_DXVK ? "dxvk_d3d11" : "d3d11";
#if SLANG_WINDOWS_FAMILY
const char* const libName = "d3d11";
#else
const char* const libName = "libdxvk_d3d11.so";
#endif
if (SLANG_FAILED(loadSharedLibrary(libName, d3dModule)))
{
fprintf(stderr, "error: failed to load '%s'\n", libName);
Expand Down
2 changes: 1 addition & 1 deletion src/d3d12/d3d12-device.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -442,7 +442,7 @@ Result DeviceImpl::initialize(const Desc& desc)
#if SLANG_WINDOWS_FAMILY
const char* libName = "d3d12";
#else
const char* libName = "vkd3d-proton-d3d12";
const char* libName = "libvkd3d-proton-d3d12.so";
#endif
if (SLANG_FAILED(loadSharedLibrary(libName, d3dModule)))
{
Expand Down

0 comments on commit af07297

Please sign in to comment.