sdl2: fix GL driver selection

SDL2 supports selecting between full OpenGL or OpenGL ES 1/2 but our
selection code was written before SDL 2.0 was officially released and
since then a new SDL_GL_CONTEXT_PROFILE_MASK attribute was added and
we have to explicitly set the SDL_GL_CONTEXT_MINOR_VERSION attribute.

Reviewed-by: Neil Roberts <neil@linux.intel.com>
This commit is contained in:
Robert Bragg 2014-03-13 16:25:48 +00:00
parent 849f691969
commit 2beb7c40e0

View File

@ -169,12 +169,23 @@ _cogl_winsys_display_setup (CoglDisplay *display,
set_gl_attribs_from_framebuffer_config (&display->onscreen_template->config); set_gl_attribs_from_framebuffer_config (&display->onscreen_template->config);
if (display->renderer->driver == COGL_DRIVER_GLES1) if (display->renderer->driver == COGL_DRIVER_GLES1)
{
SDL_GL_SetAttribute (SDL_GL_CONTEXT_PROFILE_MASK,
SDL_GL_CONTEXT_PROFILE_ES);
SDL_GL_SetAttribute (SDL_GL_CONTEXT_MAJOR_VERSION, 1); SDL_GL_SetAttribute (SDL_GL_CONTEXT_MAJOR_VERSION, 1);
SDL_GL_SetAttribute (SDL_GL_CONTEXT_MINOR_VERSION, 1);
}
else if (display->renderer->driver == COGL_DRIVER_GLES2) else if (display->renderer->driver == COGL_DRIVER_GLES2)
{
SDL_GL_SetAttribute (SDL_GL_CONTEXT_PROFILE_MASK,
SDL_GL_CONTEXT_PROFILE_ES);
SDL_GL_SetAttribute (SDL_GL_CONTEXT_MAJOR_VERSION, 2); SDL_GL_SetAttribute (SDL_GL_CONTEXT_MAJOR_VERSION, 2);
SDL_GL_SetAttribute (SDL_GL_CONTEXT_MINOR_VERSION, 0);
}
else if (display->renderer->driver == COGL_DRIVER_GL3) else if (display->renderer->driver == COGL_DRIVER_GL3)
{ {
SDL_GL_SetAttribute (SDL_GL_CONTEXT_MAJOR_VERSION, 3); SDL_GL_SetAttribute (SDL_GL_CONTEXT_MAJOR_VERSION, 3);
SDL_GL_SetAttribute (SDL_GL_CONTEXT_MINOR_VERSION, 1);
SDL_GL_SetAttribute (SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_SetAttribute (SDL_GL_CONTEXT_PROFILE_MASK,
SDL_GL_CONTEXT_PROFILE_CORE); SDL_GL_CONTEXT_PROFILE_CORE);
SDL_GL_SetAttribute (SDL_GL_CONTEXT_FLAGS, SDL_GL_SetAttribute (SDL_GL_CONTEXT_FLAGS,
@ -241,12 +252,13 @@ _cogl_winsys_display_setup (CoglDisplay *display,
break; break;
case COGL_DRIVER_GLES2: case COGL_DRIVER_GLES2:
if (!g_str_has_prefix (gl_version, "OpenGL ES 2")) if (!g_str_has_prefix (gl_version, "OpenGL ES 2") &&
!g_str_has_prefix (gl_version, "OpenGL ES 3"))
{ {
_cogl_set_error (error, COGL_WINSYS_ERROR, _cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_INIT, COGL_WINSYS_ERROR_INIT,
"The GLES2 driver was requested but SDL is " "The GLES2 driver was requested but SDL is "
"not using GLES2"); "not using GLES2 or GLES3");
goto error; goto error;
} }
break; break;