[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