-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathSDL_shadercross.patch
47 lines (43 loc) · 1.46 KB
/
SDL_shadercross.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ea4469e..b085a0f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -125,7 +125,6 @@ if(SDLSHADERCROSS_VENDORED)
add_subdirectory(external/DirectXShaderCompiler EXCLUDE_FROM_ALL)
add_library(DirectXShaderCompiler::dxcompiler ALIAS dxcompiler)
add_library(DirectXShaderCompiler::dxil ALIAS dxildll)
- list(APPEND vendored_targets dxcompiler dxildll)
add_dependencies(dxcompiler dxildll)
endif()
diff --git a/src/SDL_shadercross.c b/src/SDL_shadercross.c
index 676883b..fc33289 100644
--- a/src/SDL_shadercross.c
+++ b/src/SDL_shadercross.c
@@ -308,6 +308,8 @@ struct IDxcUtils
/* DXCompiler */
#if defined(SDL_PLATFORM_XBOXONE) || defined(SDL_PLATFORM_XBOXSERIES) || defined(SDL_PLATFORM_WINDOWS)
+extern HRESULT DXC_Init(void);
+extern void DXC_Done(void);
extern HRESULT __stdcall DxcCreateInstance(REFCLSID rclsid, REFIID riid, LPVOID* ppv);
#else
extern HRESULT DxcCreateInstance(REFCLSID rclsid, REFIID riid, LPVOID *ppv);
@@ -2387,11 +2389,21 @@ bool SDL_ShaderCross_Init(void)
}
}
+#if !defined(SDL_PLATFORM_XBOXONE) && !defined(SDL_PLATFORM_XBOXSERIES)
+ if (DXC_Init() < 0) {
+ return false;
+ }
+#endif
+
return true;
}
void SDL_ShaderCross_Quit(void)
{
+#if !defined(SDL_PLATFORM_XBOXONE) && !defined(SDL_PLATFORM_XBOXSERIES)
+ DXC_Done();
+#endif
+
if (d3dcompiler_dll != NULL) {
SDL_UnloadObject(d3dcompiler_dll);
d3dcompiler_dll = NULL;