diff options
author | Robert Bragg <robert.bragg@intel.com> | 2014-03-13 16:25:48 +0000 |
---|---|---|
committer | Robert Bragg <robert.bragg@intel.com> | 2014-03-20 17:34:04 +0000 |
commit | 2beb7c40e01f776cc7396559cd213ceeb445bc36 (patch) | |
tree | 1ffda0c92eb31c4acfb2a8305c4ed49c83e0b03b | |
parent | 849f6919695ac9bd3d3b0adf59c2ab215a8141b8 (diff) | |
download | cogl-2beb7c40e01f776cc7396559cd213ceeb445bc36.tar.gz |
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>
-rw-r--r-- | cogl/winsys/cogl-winsys-sdl2.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/cogl/winsys/cogl-winsys-sdl2.c b/cogl/winsys/cogl-winsys-sdl2.c index 960d439d..c6661d93 100644 --- a/cogl/winsys/cogl-winsys-sdl2.c +++ b/cogl/winsys/cogl-winsys-sdl2.c @@ -169,12 +169,23 @@ _cogl_winsys_display_setup (CoglDisplay *display, set_gl_attribs_from_framebuffer_config (&display->onscreen_template->config); if (display->renderer->driver == COGL_DRIVER_GLES1) - SDL_GL_SetAttribute (SDL_GL_CONTEXT_MAJOR_VERSION, 1); + { + 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_MINOR_VERSION, 1); + } else if (display->renderer->driver == COGL_DRIVER_GLES2) - SDL_GL_SetAttribute (SDL_GL_CONTEXT_MAJOR_VERSION, 2); + { + 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_MINOR_VERSION, 0); + } else if (display->renderer->driver == COGL_DRIVER_GL3) { 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_CONTEXT_PROFILE_CORE); SDL_GL_SetAttribute (SDL_GL_CONTEXT_FLAGS, @@ -241,12 +252,13 @@ _cogl_winsys_display_setup (CoglDisplay *display, break; 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_WINSYS_ERROR_INIT, "The GLES2 driver was requested but SDL is " - "not using GLES2"); + "not using GLES2 or GLES3"); goto error; } break; |