summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/angle/patches/0001-ANGLE-Load-the-DirectX-libraries-from-the-system.patch
blob: fea52c78b8371e9043b9103215ad02c723bcdd05 (plain)
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
From a5b015834168dee1ba91603bb82ccab3a50b445c Mon Sep 17 00:00:00 2001
From: Andy Shaw <andy.shaw@qt.io>
Date: Fri, 18 Feb 2022 14:47:55 +0100
Subject: [PATCH] ANGLE: Load the DirectX libraries from the system path
 directly

Change-Id: I34812b32e420a6f50e5be6b26b97c8e21e0e7870
---
 .../renderer/d3d/d3d11/DebugAnnotator11.cpp    |  8 +++++++-
 .../libANGLE/renderer/d3d/d3d11/Renderer11.cpp | 18 +++++++++++++++---
 2 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
index 1e70363e11..8100acf56c 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
@@ -11,6 +11,8 @@
 #include "common/debug.h"
 #include "libANGLE/renderer/d3d/d3d11/renderer11_utils.h"
 
+#define INFO_BUFFER_SIZE 32767
+
 namespace rx
 {
 
@@ -88,7 +90,11 @@ void DebugAnnotator11::initializeDevice()
     if (!mInitialized)
     {
 #if !defined(ANGLE_ENABLE_WINDOWS_STORE)
-        mD3d11Module = LoadLibrary(TEXT("d3d11.dll"));
+        TCHAR infoBuf[INFO_BUFFER_SIZE];
+        DWORD bufCharCount = INFO_BUFFER_SIZE;
+        GetSystemDirectory(infoBuf, INFO_BUFFER_SIZE);
+        lstrcat(infoBuf, TEXT("\\d3d11.dll"));
+        mD3d11Module = LoadLibrary(infoBuf);
         ASSERT(mD3d11Module);
 
         PFN_D3D11_CREATE_DEVICE D3D11CreateDevice = (PFN_D3D11_CREATE_DEVICE)GetProcAddress(mD3d11Module, "D3D11CreateDevice");
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
index b0ef9abddc..c9aeace241 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
@@ -80,6 +80,8 @@
 #define ANGLE_SKIP_DXGI_1_2_CHECK 0
 #endif
 
+#define INFO_BUFFER_SIZE 32767
+
 namespace rx
 {
 
@@ -772,9 +774,19 @@ egl::Error Renderer11::initializeD3DDevice()
         {
             SCOPED_ANGLE_HISTOGRAM_TIMER("GPU.ANGLE.Renderer11InitializeDLLsMS");
             TRACE_EVENT0("gpu.angle", "Renderer11::initialize (Load DLLs)");
-            mDxgiModule  = LoadLibrary(TEXT("dxgi.dll"));
-            mD3d11Module = LoadLibrary(TEXT("d3d11.dll"));
-            mDCompModule = LoadLibrary(TEXT("dcomp.dll"));
+            TCHAR dxgiFile[INFO_BUFFER_SIZE];
+            TCHAR d3d11File[INFO_BUFFER_SIZE];
+            TCHAR dcompFile[INFO_BUFFER_SIZE];
+            DWORD bufCharCount = INFO_BUFFER_SIZE;
+            GetSystemDirectory(dxgiFile, INFO_BUFFER_SIZE);
+            lstrcpy(d3d11File, dxgiFile);
+            lstrcpy(dcompFile, dxgiFile);
+            lstrcat(dxgiFile, TEXT("\\dxgi.dll"));
+            mDxgiModule = LoadLibrary(dxgiFile);
+            lstrcat(d3d11File, TEXT("\\d3d11.dll"));
+            mD3d11Module = LoadLibrary(d3d11File);
+            lstrcat(dcompFile, TEXT("\\dcomp.dll"));
+            mDCompModule = LoadLibrary(dcompFile);
 
             if (mD3d11Module == nullptr || mDxgiModule == nullptr)
             {
-- 
2.27.0.windows.1