Comment 65 for bug 186186

Revision history for this message
Fabien Tassin (fta) wrote :

For the records, here is my view of the situation:

it's a compositing bug (at least) in ATI drivers which are not able to use either an untransformed repeating source pattern with a source in off-screen video memory, or, a repeated transformed images using a general transform matrix (or both).

Cairo has 3 fallback mechanisms when 'XRenderComposite' is not usable:
- XCopyArea (not usable with alpha compositing)
- XSetTile (for the repeat patterns with general transform bug, also not usable with alpha, and not with 1x1 surfaces)
- or software rendering (slower)

Problem with our background rendering bug is that it seems it's always with alpha so we end-up with either XRenderComposite or software rendering. To detect if XRenderComposite has a bug, Cairo devs used the X *server* version with known-buggy versions but it doesn't tell which X *driver* it is so we cannot say we want the software workaround for ATI only, hence the unconditional patch above.

An improved patch could try to figure out at runtime what the X driver name & version are, and maybe the Acceleration method too, then trigger software rendering only for the known buggy drivers. AFAIK, there's no way to get those information except by parsing /var/log/Xorg.0.log