diff options
Diffstat (limited to 'src/angle/patches/0008-ANGLE-Dynamically-load-D3D-compiler-from-a-list-or-t.patch')
-rw-r--r-- | src/angle/patches/0008-ANGLE-Dynamically-load-D3D-compiler-from-a-list-or-t.patch | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/angle/patches/0008-ANGLE-Dynamically-load-D3D-compiler-from-a-list-or-t.patch b/src/angle/patches/0008-ANGLE-Dynamically-load-D3D-compiler-from-a-list-or-t.patch new file mode 100644 index 0000000000..55d1307601 --- /dev/null +++ b/src/angle/patches/0008-ANGLE-Dynamically-load-D3D-compiler-from-a-list-or-t.patch @@ -0,0 +1,69 @@ +From a3196fcfe7dd7aff5e5fa07d1a9bbf2c72fc0b41 Mon Sep 17 00:00:00 2001 +From: Andrew Knight <andrew.knight@digia.com> +Date: Fri, 4 Jul 2014 08:39:54 +0300 +Subject: [PATCH 08/12] ANGLE: Dynamically load D3D compiler from a list or the + environment + +If the default compiler cannot be found, load it from a list of DLL names, +including a non-versioned proxy DLL provided by Qt. On Desktop Windows, +the default compiler can also be specified by an environment variable, +QT_D3DCOMPILER_DLL. + +Change-Id: I0d7a8a8a36cc571836f8fa59ea14513b9b19c19b +--- + .../src/libGLESv2/renderer/d3d/HLSLCompiler.cpp | 31 +++++++++++++++++++--- + 1 file changed, 28 insertions(+), 3 deletions(-) + +diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/HLSLCompiler.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/HLSLCompiler.cpp +index 1df6a5e..31942e6 100644 +--- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/HLSLCompiler.cpp ++++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/HLSLCompiler.cpp +@@ -24,6 +24,14 @@ typedef HRESULT (WINAPI *pD3DCompile)(const void *data, SIZE_T data_size, const + + #endif // __MINGW32__ && !D3DCOMPILER_DLL + ++#ifndef QT_D3DCOMPILER_DLL ++#define QT_D3DCOMPILER_DLL D3DCOMPILER_DLL ++#endif ++ ++#ifndef LoadLibrary ++#define LoadLibrary(dll) LoadPackagedLibrary(dll, NULL) ++#endif ++ + namespace rx + { + +@@ -54,10 +62,27 @@ bool HLSLCompiler::initialize() + } + #endif // ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES + +- if (!mD3DCompilerModule) ++ // Load the compiler DLL specified by the environment, or default to QT_D3DCOMPILER_DLL ++ const wchar_t *defaultCompiler = _wgetenv(L"QT_D3DCOMPILER_DLL"); ++ if (!defaultCompiler) ++ defaultCompiler = QT_D3DCOMPILER_DLL; ++ ++ const wchar_t *compilerDlls[] = { ++ defaultCompiler, ++ L"d3dcompiler_47.dll", ++ L"d3dcompiler_46.dll", ++ L"d3dcompiler_45.dll", ++ L"d3dcompiler_44.dll", ++ L"d3dcompiler_43.dll", ++ 0 ++ }; ++ ++ // Load the first available known compiler DLL ++ for (int i = 0; compilerDlls[i]; ++i) + { +- // Load the version of the D3DCompiler DLL associated with the Direct3D version ANGLE was built with. +- mD3DCompilerModule = LoadLibrary(D3DCOMPILER_DLL); ++ mD3dCompilerModule = LoadLibrary(compilerDlls[i]); ++ if (mD3dCompilerModule) ++ break; + } + + if (!mD3DCompilerModule) +-- +1.9.0.msysgit.0 + |