From 4e9c9fce136e0bb524ce1bfc0d27bae59f6eba60 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 9 Jan 2017 10:10:33 -0800 Subject: [PATCH] Fixed bug 3100 - SetSwapInterval should now be enabled for ANGLE/EGL Mark Logan 2015-08-24 15:57:50 UTC In SDL_windowsopengles.c, WIN_GLES_SetSwapInterval is as follows: WIN_GLES_SetSwapInterval(_THIS, int interval) { /* FIXME: This should call SDL_EGL_SetSwapInterval, but ANGLE has a bug that prevents this * from working if we do (the window contents freeze and don't swap properly). So, we ignore * the request for now. */ SDL_Log("WARNING: Ignoring SDL_GL_SetSwapInterval call due to ANGLE bug"); return 0; } With a recent version of ANGLE (early July) calling SDL_EGL_SetSwapInterval with a D3D11 backend appears to work just fine. I am working on testing this with D3D9. -- Alex Szpakowski I found the bug, it was fixed in 2013. https://bugs.chromium.org/p/angleproject/issues/detail?id=481 In my opinion it should be safe to unconditionally use SetSwapInterval now. Anyone who encounters the bug should update their ANGLE to a version less than 3 years old, especially since they'd be using a SDL version that's 3+ years newer than their ANGLE version. --- src/video/windows/SDL_windowsopengles.c | 11 ----------- src/video/windows/SDL_windowsopengles.h | 4 +--- 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/src/video/windows/SDL_windowsopengles.c b/src/video/windows/SDL_windowsopengles.c index da35fdd664ad4..90d0a7b8de64f 100644 --- a/src/video/windows/SDL_windowsopengles.c +++ b/src/video/windows/SDL_windowsopengles.c @@ -126,17 +126,6 @@ WIN_GLES_SetupWindow(_THIS, SDL_Window * window) return WIN_GLES_MakeCurrent(_this, current_win, current_ctx); } -int -WIN_GLES_SetSwapInterval(_THIS, int interval) -{ - /* FIXME: This should call SDL_EGL_SetSwapInterval, but ANGLE has a bug that prevents this - * from working if we do (the window contents freeze and don't swap properly). So, we ignore - * the request for now. - */ - SDL_Log("WARNING: Ignoring SDL_GL_SetSwapInterval call due to ANGLE bug"); - return 0; -} - #endif /* SDL_VIDEO_DRIVER_WINDOWS && SDL_VIDEO_OPENGL_EGL */ /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/windows/SDL_windowsopengles.h b/src/video/windows/SDL_windowsopengles.h index a21ebc5973506..e8398d2827088 100644 --- a/src/video/windows/SDL_windowsopengles.h +++ b/src/video/windows/SDL_windowsopengles.h @@ -33,9 +33,7 @@ #define WIN_GLES_GetProcAddress SDL_EGL_GetProcAddress #define WIN_GLES_UnloadLibrary SDL_EGL_UnloadLibrary #define WIN_GLES_GetSwapInterval SDL_EGL_GetSwapInterval -/* See the WIN_GLES_GetSwapInterval implementation to see why this is commented out */ -/*#define WIN_GLES_SetSwapInterval SDL_EGL_SetSwapInterval*/ -extern int WIN_GLES_SetSwapInterval(_THIS, int interval); +#define WIN_GLES_SetSwapInterval SDL_EGL_SetSwapInterval extern int WIN_GLES_LoadLibrary(_THIS, const char *path); extern SDL_GLContext WIN_GLES_CreateContext(_THIS, SDL_Window * window);