author Sam Lantinga <>
Mon, 09 Jan 2017 10:10:33 -0800
changeset 10800 f3439b0eb486
parent 10737 3406a0f8b041
child 11382 2c50e79b19e0
permissions -rw-r--r--
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.

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.
     1 /*
     2   Simple DirectMedia Layer
     3   Copyright (C) 1997-2017 Sam Lantinga <>
     5   This software is provided 'as-is', without any express or implied
     6   warranty.  In no event will the authors be held liable for any damages
     7   arising from the use of this software.
     9   Permission is granted to anyone to use this software for any purpose,
    10   including commercial applications, and to alter it and redistribute it
    11   freely, subject to the following restrictions:
    13   1. The origin of this software must not be misrepresented; you must not
    14      claim that you wrote the original software. If you use this software
    15      in a product, an acknowledgment in the product documentation would be
    16      appreciated but is not required.
    17   2. Altered source versions must be plainly marked as such, and must not be
    18      misrepresented as being the original software.
    19   3. This notice may not be removed or altered from any source distribution.
    20 */
    21 #include "../../SDL_internal.h"
    23 #ifndef _SDL_winopengles_h
    24 #define _SDL_winopengles_h
    28 #include "../SDL_sysvideo.h"
    29 #include "../SDL_egl_c.h"
    31 /* OpenGLES functions */
    32 #define WIN_GLES_GetAttribute SDL_EGL_GetAttribute
    33 #define WIN_GLES_GetProcAddress SDL_EGL_GetProcAddress
    34 #define WIN_GLES_UnloadLibrary SDL_EGL_UnloadLibrary
    35 #define WIN_GLES_GetSwapInterval SDL_EGL_GetSwapInterval
    36 #define WIN_GLES_SetSwapInterval SDL_EGL_SetSwapInterval
    38 extern int WIN_GLES_LoadLibrary(_THIS, const char *path);
    39 extern SDL_GLContext WIN_GLES_CreateContext(_THIS, SDL_Window * window);
    40 extern int WIN_GLES_SwapWindow(_THIS, SDL_Window * window);
    41 extern int WIN_GLES_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context);
    42 extern void WIN_GLES_DeleteContext(_THIS, SDL_GLContext context);
    43 extern int WIN_GLES_SetupWindow(_THIS, SDL_Window * window);
    45 #endif /* SDL_VIDEO_OPENGL_EGL */
    47 #endif /* _SDL_winopengles_h */
    49 /* vi: set ts=4 sw=4 expandtab: */