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:
parent
849f691969
commit
2beb7c40e0
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user