summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichel Dänzer <michel.daenzer@amd.com>2015-07-22 15:37:23 +0900
committerEric Anholt <eric@anholt.net>2015-07-27 14:27:21 -0700
commit0a458a908ec071a4da5d22c760581e0c5ec885ce (patch)
tree16fc27f21a1bb02dfd7293faeb0de9fc121509ab
parenta8a0f6464a33c12c1de495d74fd478c0d952643e (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.c26
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;