[cairo-bugs] [Bug 32014] GTK programs in cairo 1.10 are sluggish over NX
bugzilla-daemon at freedesktop.org
bugzilla-daemon at freedesktop.org
Mon Jun 20 01:42:05 PDT 2011
https://bugs.freedesktop.org/show_bug.cgi?id=32014
--- Comment #4 from Andrea Canciani <ranma42 at gmail.com> 2011-06-20 01:42:02 PDT ---
(In reply to comment #3)
> This appears to be due to having 'display->buggy_repeat' set in
> _cario_xlib_device_create(). NX (3.5, at least) presents itself as an X.Org
> server with version 60900000, which trips the 'buggy_repeat' flag.
>
> 'buggy_repeat' is set on X.Org 6.9 to avoid a bug which will crash the X
> server. On NX 3.5, running the 'extend-reflect' test case after forcing the
> buggy_repeat flag to FALSE on git rev ced061124d0b402c did not crash the X
> server, so it is possible this bug does not need to be worked around on NX
> servers. (The test application crashes on svg11 and svg12 test modes, and fails
> on others, but it doesn't crash the X server itself. Plus, NX fails many other
> tests, and other tests *will* crash the server; not exactly a bastion of
> correctness.)
>
> Cairo will use software compositing for some operations, preventing NX from
> doing its X11 protocol compression magic to send text in an efficient manner.
> The commit indicated by Ryan Prichard causes more operations than before to use
> software compositing. I'm not sure if this was intentional or not.
>
> I see three reasonable solutions:
>
> * Get NoMachine to update NX's reported version number. My current employer
> makes extensive use of NX; I'll try to have someone talk to them about this.
>
> * Detect and whitelist NX for buggy_repeat using an out-of-band mechanism.
>
> * Revert to the (possibly incorrect?) stricter test for falling back to
> software rendering.
Another (untested) possibility is to use the xlib-xcb functions.
Is NX sluggish on a cairo library compiled with --enable-xlib-xcb ?
>
> In the mean-time, users can apply this patch to Cairo to work around the
> workaround. I'm not recommending that this patch be applied to Cairo itself,
> it's just for NX users who can't stand the slowness. Applies to current git
> HEAD, but probably works fine with 1.10 too.
>
> diff --git a/src/cairo-xlib-surface.c b/src/cairo-xlib-surface.c
> index f8caf83..ffaa344 100644
> --- a/src/cairo-xlib-surface.c
> +++ b/src/cairo-xlib-surface.c
> @@ -1994,8 +1994,8 @@ _recategorize_composite_operation (cairo_xlib_surface_t
> *dst,
> return DO_XTILE;
> }
>
> - if (dst->buggy_repeat && src_attr->extend == CAIRO_EXTEND_REPEAT)
> - return DO_UNSUPPORTED;
> + //if (dst->buggy_repeat && src_attr->extend == CAIRO_EXTEND_REPEAT)
> + //return DO_UNSUPPORTED;
>
> if (! CAIRO_SURFACE_RENDER_HAS_COMPOSITE (src))
> return DO_UNSUPPORTED;
--
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
More information about the cairo-bugs
mailing list