[Cogl] [PATCH 2/2] sdl2: Fix GL3 context creation

Robert Bragg robert at sixbynine.org
Wed Oct 3 06:02:54 PDT 2012


this looks good to land to me:

Robert Bragg <robert at linux.intel.com>

thanks,
- Robert

On Wed, Oct 3, 2012 at 12:12 PM, Neil Roberts <neil at linux.intel.com> wrote:
> The check to verify whether we've got the right GL context was
> checking that the GL version was less than 3 whenever the non-GL3
> driver is used. However it looks like the driver is free to return a
> GL3 context that is compatible with GL2 if GL2 is requested so this
> was breaking the GL2 driver.
>
> This also adds the necessary SDL attributes to request a forward
> compatible core context like the GLX and EGL winsys's do. I haven't
> actually tested this because it looks like SDL will only create a GL
> context with GLX and I haven't got a recent enough X server to handle
> the glXCreateContextAttribs request.
> ---
>  cogl/winsys/cogl-winsys-sdl2.c | 35 ++++++++++++++---------------------
>  1 file changed, 14 insertions(+), 21 deletions(-)
>
> diff --git a/cogl/winsys/cogl-winsys-sdl2.c b/cogl/winsys/cogl-winsys-sdl2.c
> index cd991a4..4c0583b 100644
> --- a/cogl/winsys/cogl-winsys-sdl2.c
> +++ b/cogl/winsys/cogl-winsys-sdl2.c
> @@ -158,7 +158,13 @@ _cogl_winsys_display_setup (CoglDisplay *display,
>    else if (display->renderer->driver == COGL_DRIVER_GLES2)
>      SDL_GL_SetAttribute (SDL_GL_CONTEXT_MAJOR_VERSION, 2);
>    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_PROFILE_MASK,
> +                           SDL_GL_CONTEXT_PROFILE_CORE);
> +      SDL_GL_SetAttribute (SDL_GL_CONTEXT_FLAGS,
> +                           SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG);
> +    }
>
>    /* Create a dummy 1x1 window that never gets display so that we can
>     * create a GL context */
> @@ -208,27 +214,14 @@ _cogl_winsys_display_setup (CoglDisplay *display,
>            goto error;
>          }
>
> -      if (gl_version[0] >= '3')
> -        {
> -          if (display->renderer->driver == COGL_DRIVER_GL)
> -            {
> -              _cogl_set_error (error, COGL_WINSYS_ERROR,
> -                               COGL_WINSYS_ERROR_INIT,
> -                               "The GL driver was requested but SDL is using "
> -                               "GL %c", gl_version[0]);
> -              goto error;
> -            }
> -        }
> -      else
> +      if (display->renderer->driver == COGL_DRIVER_GL3 &&
> +          gl_version[0] < '3')
>          {
> -          if (display->renderer->driver == COGL_DRIVER_GL3)
> -            {
> -              _cogl_set_error (error, COGL_WINSYS_ERROR,
> -                               COGL_WINSYS_ERROR_INIT,
> -                               "The GL3 driver was requested but SDL is using "
> -                               "GL %c", gl_version[0]);
> -              goto error;
> -            }
> +          _cogl_set_error (error, COGL_WINSYS_ERROR,
> +                           COGL_WINSYS_ERROR_INIT,
> +                           "The GL3 driver was requested but SDL is using "
> +                           "GL %c", gl_version[0]);
> +          goto error;
>          }
>        break;
>
> --
> 1.7.11.3.g3c3efa5
>
> _______________________________________________
> Cogl mailing list
> Cogl at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/cogl


More information about the Cogl mailing list