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.
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
The culprit is: c30bb4327677ac4 9e82058231 (Don't destroy bufmgr at CloseScreen time) origin/ master
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: 33f98e4056706f4
Branches: master, remotes/
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 pad_reflect' fallback for X.org 1.6). This was causing the driver
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_
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: /bugs.freedeskt op.org/ show_bug. cgi?id= 23184
cairo's performance downgrades 4X with server master than server-1.6.
https:/
The fix is a relatively simple extension of the current picture_ from_pixman_ image() to use CompositePicture() instead of
uxa_
CopyArea() when we need to convert to a new format.
Signed-off-by: Chris Wilson <email address hidden>
For reference: fdf4b2203ab73b5 7b38a50f651] Increment version to 2.9.0 219cb2d60a672ae 200c70bc68d] Increment version number to 2.8.1 for release. ad2bc4cf48ab25d a1f707a4f6f] Increment version number to 2.8.0 for release. d2bc4cf48ab25da 1f707a4f6f 2c664f86981c55b 166dbb54c79] Add cursor registers to debug dump output. c664f86981c55b1 66dbb54c79 61250dba1e43576 0e3b1499c8c] Avoid fallbacks for compositing gradient patterns 1250dba1e435760 e3b1499c8c b1140874b06595c cd1ef39159b] Split i915/i830 composite_ emit_primitive into two functions. 1140874b06595cc d1ef39159b 2e3e8455b93ef29 27118f8a3a3] Avoid fallbacks for a1 src/mask e3e8455b93ef292 7118f8a3a3 e1a210db6207b84 ecd466e08ee] Make sure DRM output properties are freed after we're done with them. 1a210db6207b84e cd466e08ee 4c30bb4327677ac 49e82058231] Don't destroy bufmgr at CloseScreen time c30bb4327677ac4 9e82058231
$ git bisect log
# bad: [2841a4cd8c6c64
# good: [e6105d978a0217
git bisect start '2.9.0' '2.8.1'
# good: [5d50a949b3c5d0
git bisect good 5d50a949b3c5d0a
# good: [e51126c5713249
git bisect good e51126c57132492
# good: [c2abfa8e54acab
git bisect good c2abfa8e54acab6
# bad: [bd817e2d733dfd
git bisect bad bd817e2d733dfdb
# bad: [57fc09cef28bad
git bisect bad 57fc09cef28bad2
# good: [ee9ad853574e3e
git bisect good ee9ad853574e3ee
# good: [33f98e4056706f
git bisect good 33f98e4056706f4