On Don, 2014-03-13 at 10:43 -0700, Eric Anholt wrote: > Michel Dänzer <[email protected]> writes: > > > On Mon, 2014-03-10 at 14:10 -0700, Keith Packard wrote: > >> > >> commit 25be6b384298a7769fedb6d9b5bdc370398c9c95 > >> Author: Eric Anholt <[email protected]> > >> Date: Sun Jan 12 07:18:50 2014 +0800 > >> > >> glamor: Fix a mismatched glamor_get/put_context(). > >> > >> We don't call GL in this function any more, so we can just drop the > >> get. > >> > >> Signed-off-by: Eric Anholt <[email protected]> > >> Reviewed-by: Markus Wick <markus at selfnet.de> > > > > This commit made glamor unusably slow with radeonsi, at least an order > > of magnitude slower than before. > > > > Eric's pending change 'glamor: Drop the set of the context to NULL at > > the end of glamor ops.' fixes the performance regression with Xephyr, > > but obviously doesn't help Xorg. The standalone glamor tree doesn't have > > this problem, even though the corresponding context calls are balanced > > there. > > > > Eric, any ideas? > > We need to delete the context unset in EGL, too, and actually fix things > correctly.
Hmm, the patch below indeed fixes the performance regression with Xorg.
But attempting to do GLX indirect rendering crashes the server, and more
importantly, I can't even complete a piglit run, because
glx-make-current-multi-process crashes the server as well. That crash
was fixed in the standalone glamor tree by commit
cccfea4454949e3e376be42bb230603848997195 ('Fix a missing MakeCurrent in
glamor_egl_create_argb8888_based_texture'), but the corresponding change
in xserver doesn't prevent the crash right now.
I might have to switch back to the standalone glamor tree until there's
a solution for this. Any ideas for a solution?
diff --git a/glamor/glamor_egl.c b/glamor/glamor_egl.c
index 05e6bd0..1935529 100644
--- a/glamor/glamor_egl.c
+++ b/glamor/glamor_egl.c
@@ -118,11 +118,7 @@ glamor_egl_get_context(struct glamor_context *glamor_ctx)
static void
glamor_egl_put_context(struct glamor_context *glamor_ctx)
{
- if (--glamor_ctx->get_count)
- return;
-
- eglMakeCurrent(glamor_ctx->display, EGL_NO_SURFACE,
- EGL_NO_SURFACE, EGL_NO_CONTEXT);
+ --glamor_ctx->get_count;
}
static EGLImageKHR
--
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Mesa and X developer
signature.asc
Description: This is a digitally signed message part
_______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
