diff options
author | Eric Anholt <eric@anholt.net> | 2014-04-04 07:03:31 +0100 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2014-04-22 12:29:38 -0700 |
commit | 024d7555499211a512616fc41a41561f604817db (patch) | |
tree | f5b7bc5b30a4d113f6b45d2aa6be6fec9239f222 | |
parent | ac50424c06e7d3f0e2f776be60ddcd2ad3124e03 (diff) |
glamor: Explain the weird EGL_NO_CONTEXT code.
Signed-off-by: Eric Anholt <eric@anholt.net>
-rw-r--r-- | glamor/glamor_egl.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/glamor/glamor_egl.c b/glamor/glamor_egl.c index 1755d23c8..54af2753e 100644 --- a/glamor/glamor_egl.c +++ b/glamor/glamor_egl.c @@ -97,8 +97,15 @@ glamor_egl_get_screen_private(ScrnInfoPtr scrn) static void glamor_egl_make_current(struct glamor_context *glamor_ctx) { + /* There's only a single global dispatch table in Mesa. EGL, GLX, + * and AIGLX's direct dispatch table manipulation don't talk to + * each other. We need to set the context to NULL first to avoid + * EGL's no-op context change fast path when switching back to + * EGL. + */ eglMakeCurrent(glamor_ctx->display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); + if (!eglMakeCurrent(glamor_ctx->display, EGL_NO_SURFACE, EGL_NO_SURFACE, glamor_ctx->ctx)) { |