With no X RENDER extension, the rendering of Firefox 3 is about 5-8 times slower than Firefox 2.
I have patches to improve the performance for both Firefox and Cairo code.
I'll post the Firefox part here.
Created attachment 322503 [details] [diff] [review]
Do not use gfxXlibSurface for images (offscreen surface) if we've no render.
Use gfxImageSurface instead.
The current code creates a pixmap and use it for gfxXlibSurface in this case.
It is harmful for performance.
Because when the image is being composite to a X drawable and we don't have RENDER, the fallback code in cairo will need to call XGetImage for the source image, and composite it as cairo image surface.
If we just use cairo image surface for offscreen surface, we will save a call of XGetImage.
If the image is huge (e.g. open a big jpeg file directly), the save is significant.
Shouldn't Thebes use cairo_surface_create_similar instead? That takes care of this bug.
Comment on attachment 322503 [details] [diff] [review]
Hm, yeah, this looks ok. We can't use create_similar because we have nothing to create_similar to at this pint.
Pushed to mozilla-central in changeset: