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
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
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