Bug 10634

Summary: Low performance for Firefox 3.0a with cairo
Product: cairo Reporter: Alfred Peng <alfred.peng>
Component: generalAssignee: Carl Worth <cworth>
Status: RESOLVED FIXED QA Contact: cairo-bugs mailing list <cairo-bugs>
Severity: normal    
Priority: high CC: brian.lu
Version: 1.4.3   
Hardware: SPARC   
OS: Solaris   
Whiteboard:
i915 platform: i915 features:

Description Alfred Peng 2007-04-13 00:47:22 UTC
The Firefox 3.0a with cairo is slow on Solaris Nevada SPARC. With x86, it works well. Both the Mozilla community cairo and the cairo library 1.4.2 have the same problem.

Following are some basic investigation on this issue:

I used Sun Studio 11's "collect" and "analyzer" tools to get the time profile information. The test case is quite simple as the low performance is obvious. I did some basic operations(which includes making several empty tabs and switching amongst different tabs).

The result shows that function "pixman_fill_rect_32bpp" spends 8% of the whole Firefox life time. To dig further, there seems to be a loop function call between _cairo_surface_fallback_fill_rectangles and _cairo_surface_fill_rectangles for many time. And that's where the time goes.

I'm not familiar with the cairo code itself. Any clue on this to get further information?
Comment 1 Chris Wilson 2008-10-10 09:51:15 UTC
Hmm, this is reminiscent of:

commit f90b155b5a59211bed7502b537dbf207b3d4bf5e
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Tue May 27 04:41:03 2008 -0400

    [cairo-xlib] Delay using fallback if xrender is not available
    
    So we can use XCopyArea when Render is not available.  Based on patch by
    Ginn Chen.

and

commit 07fef4f4802639a2cb16284841635d1bcc9b8e8f
Author: Ginn Chen <ginn.chen@sun.com>
Date:   Tue May 27 04:44:08 2008 -0400

    [cairo-xlib] Implement _cairo_xlib_surface_solid_fill_rectangles() (#11529)

which address the issue of falling back to pixman when the Xserver doesn't support the required XRender operation.

One of the tools you can use to identity performance cases is cairo-trace which records all the cairo calls made an application and allows one to inspect and replay it at will.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.