diff options
author | Michel Dänzer <michel.daenzer@amd.com> | 2015-07-22 15:37:23 +0900 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2015-07-27 14:27:21 -0700 |
commit | 0a458a908ec071a4da5d22c760581e0c5ec885ce (patch) | |
tree | 16fc27f21a1bb02dfd7293faeb0de9fc121509ab | |
parent | a8a0f6464a33c12c1de495d74fd478c0d952643e (diff) |
glamor: Make our EGL context current before calling into GL in glamor_init
Without this, the context of another screen may be current, or no context
at all if glamor_egl_init failed for another screen.
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
-rw-r--r-- | glamor/glamor.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/glamor/glamor.c b/glamor/glamor.c index 6dcc25954..439906ac5 100644 --- a/glamor/glamor.c +++ b/glamor/glamor.c @@ -457,6 +457,20 @@ glamor_init(ScreenPtr screen, unsigned int flags) goto fail; } + glamor_priv->saved_procs.close_screen = screen->CloseScreen; + screen->CloseScreen = glamor_close_screen; + + /* If we are using egl screen, call egl screen init to + * register correct close screen function. */ + if (flags & GLAMOR_USE_EGL_SCREEN) { + glamor_egl_screen_init(screen, &glamor_priv->ctx); + } else { + if (!glamor_glx_screen_init(&glamor_priv->ctx)) + goto fail; + } + + glamor_make_current(glamor_priv); + if (epoxy_is_desktop_gl()) glamor_priv->gl_flavor = GLAMOR_GL_DESKTOP; else @@ -579,18 +593,6 @@ glamor_init(ScreenPtr screen, unsigned int flags) glamor_set_debug_level(&glamor_debug_level); - glamor_priv->saved_procs.close_screen = screen->CloseScreen; - screen->CloseScreen = glamor_close_screen; - - /* If we are using egl screen, call egl screen init to - * register correct close screen function. */ - if (flags & GLAMOR_USE_EGL_SCREEN) { - glamor_egl_screen_init(screen, &glamor_priv->ctx); - } else { - if (!glamor_glx_screen_init(&glamor_priv->ctx)) - goto fail; - } - glamor_priv->saved_procs.create_screen_resources = screen->CreateScreenResources; screen->CreateScreenResources = glamor_create_screen_resources; |