summaryrefslogtreecommitdiffstats
path: root/Graphics
diff options
context:
space:
mode:
authorazhirnov <zh1dron@gmail.com>2020-09-02 23:00:11 +0000
committerazhirnov <zh1dron@gmail.com>2020-09-02 23:00:11 +0000
commit2a058abd2099d31aa12dd01fefe5689516ca3f77 (patch)
tree1797e2c0a5fa24f4a02a5c2ae29eda40ec655201 /Graphics
parentadded argument --comp=dxc to run tests with DXC compiler (diff)
downloadDiligentCore-2a058abd2099d31aa12dd01fefe5689516ca3f77.tar.gz
DiligentCore-2a058abd2099d31aa12dd01fefe5689516ca3f77.zip
fixed compilation on UWP
Diffstat (limited to 'Graphics')
-rw-r--r--Graphics/GraphicsEngineD3DBase/src/ShaderD3DBase.cpp5
-rw-r--r--Graphics/HLSLTools/src/DXILUtils.cpp35
2 files changed, 32 insertions, 8 deletions
diff --git a/Graphics/GraphicsEngineD3DBase/src/ShaderD3DBase.cpp b/Graphics/GraphicsEngineD3DBase/src/ShaderD3DBase.cpp
index 1dec5e4f..48132a4b 100644
--- a/Graphics/GraphicsEngineD3DBase/src/ShaderD3DBase.cpp
+++ b/Graphics/GraphicsEngineD3DBase/src/ShaderD3DBase.cpp
@@ -346,8 +346,11 @@ ShaderD3DBase::ShaderD3DBase(const ShaderCreateInfo& ShaderCI, const ShaderVersi
if (ShaderModel.Major == MaxSM.Major && ShaderModel.Minor > MaxSM.Minor)
ShaderModel = MaxSM;
}
+ else
+ m_isDXIL = false;
}
- else
+
+ if (!m_isDXIL)
{
ShaderModel = (ShaderModel.Major < 6 ? ShaderModel : (IsD3D12 ? ShaderVersion{5, 1} : ShaderVersion{5, 0}));
}
diff --git a/Graphics/HLSLTools/src/DXILUtils.cpp b/Graphics/HLSLTools/src/DXILUtils.cpp
index 172ebacd..8268ac1c 100644
--- a/Graphics/HLSLTools/src/DXILUtils.cpp
+++ b/Graphics/HLSLTools/src/DXILUtils.cpp
@@ -49,17 +49,12 @@
// Platforms that has DXIL compiler.
#if defined(PLATFORM_WIN32) || defined(PLATFORM_UNIVERSAL_WINDOWS) || defined(PLATFORM_LINUX)
-# ifdef _WIN32
-__declspec(dllimport) HMODULE __stdcall LoadLibraryA(LPCSTR);
-__declspec(dllimport) FARPROC __stdcall GetProcAddress(HMODULE, LPCSTR);
-# endif
-
namespace Diligent
{
namespace
{
-# if defined(PLATFORM_WIN32) || defined(PLATFORM_UNIVERSAL_WINDOWS)
+# ifdef PLATFORM_WIN32
struct DXILCompilerWin32
{
HMODULE Module = nullptr;
@@ -83,6 +78,32 @@ struct DXILCompilerWin32
using DXILCompilerBase = DXILCompilerWin32;
# endif // PLATFORM_WIN32
+# ifdef PLATFORM_UNIVERSAL_WINDOWS
+struct DXILCompilerUWP
+{
+ HMODULE Module = nullptr;
+ DxcCreateInstanceProc CreateInstance = nullptr;
+
+ explicit DXILCompilerUWP(const std::string& name)
+ {
+ std::wstring wname{name.begin(), name.end()};
+ wname += L".dll";
+ Module = LoadPackagedLibrary(wname.c_str(), 0);
+ if (Module)
+ {
+ CreateInstance = reinterpret_cast<DxcCreateInstanceProc>(GetProcAddress(Module, "DxcCreateInstance"));
+ }
+ }
+
+ ~DXILCompilerUWP()
+ {
+ if (Module)
+ FreeLibrary(Module);
+ }
+};
+using DXILCompilerBase = DXILCompilerUWP;
+# endif
+
# ifdef PLATFORM_LINUX
struct DXILCompilerLinux
{
@@ -272,7 +293,7 @@ bool DXILGetMaxShaderModel(DXILCompilerTarget Target,
case DXILCompilerTarget::Vulkan: DxilCompiler = SPIRVCompilerLib(); break;
}
- if (DxilCompiler == nullptr)
+ if (DxilCompiler == nullptr || DxilCompiler->Module == nullptr)
return false;
Version = DxilCompiler->MaxShaderModel;