Comment 12 for bug 455943

Revision history for this message
In , Aj-novell (aj-novell) wrote :

The culprit is:
Author: Chris Wilson <email address hidden> 2009-09-20 02:02:39
Committer: Chris Wilson <email address hidden> 2009-09-20 02:15:41
Parent: 33f98e4056706f4c30bb4327677ac49e82058231 (Don't destroy bufmgr at CloseScreen time)
Branches: master, remotes/origin/master
Follows: 2.8.99.901
Precedes: 2.8.99.902

    Avoid fallbacks for a1 src/mask

    Carl Worth did the hard work in identifying that the regression in
    cairo between X.org 1.6 and 1.7 was caused by cairo sending an a1
    mask to the server in 1.7 whereas in 1.6 cairo used local fallbacks
    (as the source was using RepeatPad, which triggers cairo's
    'buggy_pad_reflect' fallback for X.org 1.6). This was causing the driver
    to do a fallback to handle the a1 mask instead, which due to the GPU
    pipeline stall is much more expensive than the equivalent fallback in
    cairo.

    Reference:
      cairo's performance downgrades 4X with server master than server-1.6.
      https://bugs.freedesktop.org/show_bug.cgi?id=23184

    The fix is a relatively simple extension of the current
    uxa_picture_from_pixman_image() to use CompositePicture() instead of
    CopyArea() when we need to convert to a new format.

    Signed-off-by: Chris Wilson <email address hidden>

For reference:
$ git bisect log
# bad: [2841a4cd8c6c64fdf4b2203ab73b57b38a50f651] Increment version to 2.9.0
# good: [e6105d978a0217219cb2d60a672ae200c70bc68d] Increment version number to 2.8.1 for release.
git bisect start '2.9.0' '2.8.1'
# good: [5d50a949b3c5d0ad2bc4cf48ab25da1f707a4f6f] Increment version number to 2.8.0 for release.
git bisect good 5d50a949b3c5d0ad2bc4cf48ab25da1f707a4f6f
# good: [e51126c57132492c664f86981c55b166dbb54c79] Add cursor registers to debug dump output.
git bisect good e51126c57132492c664f86981c55b166dbb54c79
# good: [c2abfa8e54acab61250dba1e435760e3b1499c8c] Avoid fallbacks for compositing gradient patterns
git bisect good c2abfa8e54acab61250dba1e435760e3b1499c8c
# bad: [bd817e2d733dfdb1140874b06595ccd1ef39159b] Split i915/i830 composite_emit_primitive into two functions.
git bisect bad bd817e2d733dfdb1140874b06595ccd1ef39159b
# bad: [57fc09cef28bad2e3e8455b93ef2927118f8a3a3] Avoid fallbacks for a1 src/mask
git bisect bad 57fc09cef28bad2e3e8455b93ef2927118f8a3a3
# good: [ee9ad853574e3ee1a210db6207b84ecd466e08ee] Make sure DRM output properties are freed after we're done with them.
git bisect good ee9ad853574e3ee1a210db6207b84ecd466e08ee
# good: [33f98e4056706f4c30bb4327677ac49e82058231] Don't destroy bufmgr at CloseScreen time
git bisect good 33f98e4056706f4c30bb4327677ac49e82058231