Browse Source

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
Sam Lantinga 5 years ago
parent
commit
2b6473dc05
1 changed files with 22 additions and 8 deletions
  1. 22 8
      src/video/SDL_egl.c

+ 22 - 8
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