glamor performance regression
Michel Dänzer
michel at daenzer.net
Thu Mar 13 20:07:54 PDT 2014
On Don, 2014-03-13 at 10:43 -0700, Eric Anholt wrote:
> Michel Dänzer <michel at daenzer.net> writes:
>
> > On Mon, 2014-03-10 at 14:10 -0700, Keith Packard wrote:
> >>
> >> commit 25be6b384298a7769fedb6d9b5bdc370398c9c95
> >> Author: Eric Anholt <eric at anholt.net>
> >> 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 <eric at anholt.net>
> >> 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 173 bytes
Desc: This is a digitally signed message part
URL: <http://lists.x.org/archives/xorg-devel/attachments/20140314/c4a6f2fa/attachment.pgp>
More information about the xorg-devel
mailing list