diff options
author | Michel Dänzer <mdaenzer@redhat.com> | 2021-11-01 13:05:56 +0100 |
---|---|---|
committer | Michel Dänzer <michel@daenzer.net> | 2021-11-04 09:54:23 +0000 |
commit | b656b0aa5d41270fe60be245582f1ff6f1dbbb9c (patch) | |
tree | 91fec23c43a230d3210efa1e617d7fce114cfcf5 | |
parent | 0099412ea4347b02e61ea21946f309f2535cc07b (diff) |
xwayland: Store EGLContext pointer in lastGLContext
We were storing the pointer to struct glamor_context. However, glamor
itself is storing the EGLContext pointer since the commit below. Since
the two values could never be equal, this resulted in constant
superfluous eglMakeCurrent calls. The implicit glFlush triggered by
those couldn't be good for performance.
Fixes: 7c88977d338a "glamor: Store the actual EGL/GLX context pointer in lastGLContext"
Reviewed-by: Olivier Fourdan <ofourdan@redhat.com>
-rw-r--r-- | hw/xwayland/xwayland-glamor.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/hw/xwayland/xwayland-glamor.c b/hw/xwayland/xwayland-glamor.c index 2729e8747..55a41fae1 100644 --- a/hw/xwayland/xwayland-glamor.c +++ b/hw/xwayland/xwayland-glamor.c @@ -58,10 +58,12 @@ glamor_egl_make_current(struct glamor_context *glamor_ctx) void xwl_glamor_egl_make_current(struct xwl_screen *xwl_screen) { - if (lastGLContext == xwl_screen->glamor_ctx) + EGLContext ctx = xwl_screen->glamor_ctx->ctx; + + if (lastGLContext == ctx) return; - lastGLContext = xwl_screen->glamor_ctx; + lastGLContext = ctx; xwl_screen->glamor_ctx->make_current(xwl_screen->glamor_ctx); } |