Commit 2b6473dc05f70f59fa85fe54670b0b1313939b73

Sam Lantinga 2019-06-08T15:10:20

Fixed bug 4533 - Update ANGLE to load d3dcompiler_47.dll instead of d3dcompiler_46.dll msmshazan Update ANGLE Libraries to support d3dcompiler_47.dll since chrome does not ship with d3dcompiler_46.dll and d3dcompiler_43.dll

diff --git a/src/video/SDL_egl.c b/src/video/SDL_egl.c
index d9a179b..778e555 100644
--- a/src/video/SDL_egl.c
+++ b/src/video/SDL_egl.c
@@ -279,16 +279,30 @@ SDL_EGL_LoadLibrary(_THIS, const char *egl_path, NativeDisplayType native_displa
 
 #if SDL_VIDEO_DRIVER_WINDOWS || SDL_VIDEO_DRIVER_WINRT
     d3dcompiler = SDL_GetHint(SDL_HINT_VIDEO_WIN_D3DCOMPILER);
-    if (!d3dcompiler) {
+    if (d3dcompiler) {
+        if (SDL_strcasecmp(d3dcompiler, "none") != 0) {
+            if (SDL_LoadObject(d3dcompiler) == NULL) {
+                SDL_ClearError();
+            }
+        }
+    } else {
         if (WIN_IsWindowsVistaOrGreater()) {
-            d3dcompiler = "d3dcompiler_46.dll";
+            /* Try the newer d3d compilers first */
+            const char *d3dcompiler_list[] = {
+                "d3dcompiler_47.dll", "d3dcompiler_46.dll",
+            };
+            int i;
+
+            for (i = 0; i < SDL_arraysize(d3dcompiler_list); ++i) {
+                if (SDL_LoadObject(d3dcompiler_list[i]) != NULL) {
+                    break;
+                }
+                SDL_ClearError();
+            }
         } else {
-            d3dcompiler = "d3dcompiler_43.dll";
-        }
-    }
-    if (SDL_strcasecmp(d3dcompiler, "none") != 0) {
-        if (SDL_LoadObject(d3dcompiler) == NULL) {
-            SDL_ClearError();
+            if (SDL_LoadObject("d3dcompiler_43.dll") == NULL) {
+                SDL_ClearError();
+            }
         }
     }
 #endif