[cairo-bugs] [Bug 12996] Xlib source surface fast-paths do not use IncludeInferiors, while slow paths do

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Wed Aug 26 12:48:53 PDT 2009


http://bugs.freedesktop.org/show_bug.cgi?id=12996


Chris Wilson <chris at chris-wilson.co.uk> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED




--- Comment #4 from Chris Wilson <chris at chris-wilson.co.uk>  2009-08-26 12:48:51 PST ---
commit 40aefac5d714bf7536632ed38c7a8ee05049f30b
Author: Benjamin Otte <otte at gnome.org>
Date:   Wed Aug 26 21:22:07 2009 +0200

    [xlib] DO_XCOPYAREA and DO_XTILE optimizations break with Window source

    Cairo should include the contents of subwindows when using a Window as a
    source but will clip to subwindows when using a Window as a destination.
    This can be set using the GC's subwindow_mode.

    XCopyArea and XFillRectangle can however only use one GC for both source
    and destination. Cairo's mode is set to (the default) ClipByChildren.
    This means that copying from a Window is broken, so we only allow the
    optimization when we know that the source is a Pixmap.

    The performance impact of this change has not been tested. It should be
    small, as the code will use XRender otherwise.

    If it turns out to be a bigger impact, the optimizations could be
    improved by doing a two-step copy process:
    1) Copy to an intermediate Pixmap with IncludeInferiors
    2) Copy to the destination with ClipByChildren
    (potentially omitting one one of the steps if source or destination are
    known to be Pixmaps).

    references:
    commit 0c5d28a4e5ce5e4dd72c0f416ce5e960e92b808b
    https://bugs.freedesktop.org/show_bug.cgi?id=12996


Likely places where it will break are old and slow machines, which were the
motivation for this fast path... Let's see how many of those still exist.


-- 
Configure bugmail: http://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