Open Bug 716462 Opened 12 years ago Updated 1 year ago

Performance regression with xBGR visual and no RENDER extension

Categories

(Core :: Graphics, defect, P3)

All
Solaris
defect

Tracking

()

People

(Reporter: ginnchen+exoracle, Unassigned, NeedInfo)

References

Details

(Keywords: regression, Whiteboard: [gfx-noted])

Attachments

(1 file)

2.00 KB, patch
ginnchen+exoracle
: review?
chris
joe
: review?
jrmuizel
Details | Diff | Splinter Review
Firefox/Thunderbird 7 or later renders pretty slow on xBGR display and no RENDER extension.

The slow path is
0.   	0.   	gfxContext::Paint(double)
0.   	0.   	_moz_cairo_paint_with_alpha
0.   	0.   	_cairo_gstate_paint
0.   	0.   	_cairo_surface_paint
0.   	0.   	_cairo_surface_fallback_paint
0.   	0.   	_clip_and_composite_region
0.   	0.   	_cairo_surface_composite
0.   	0.   	_cairo_xlib_surface_composite
0.   	0.   	_cairo_xlib_surface_upload
0.   	0.   	_draw_image_surface
0.670	0.670	_XPutPixel32

and

0.   	0.   	gfxContext::Fill()
0.   	0.   	_moz_cairo_fill_preserve
0.   	0.   	_cairo_gstate_fill
0.   	0.   	_cairo_surface_fill
0.   	0.   	_cairo_surface_fallback_fill
0.   	0.   	_clip_and_composite_trapezoids
0.   	0.   	_clip_and_composite_region
0.   	0.   	_cairo_surface_composite
0.   	0.   	_cairo_xlib_surface_composite
0.   	0.   	_cairo_xlib_surface_upload
0.   	0.   	_draw_image_surface
0.680	0.680	_XPutPixel32

_cairo_xlib_surface_upload is new in cairo 1.10.
It seems it caused the regression.
Attached patch patchSplinter Review
Do not do upload if RGB masks don't match.
It will avoid falling into slow XPutPixel32 path.

The patch improves gfxContext::Fill() performance ~15 times with xBGR visual and no RENDER extension.
(although it is still ~ 10 times slower than the RENDER path.)
Assignee: nobody → ginn.chen
Status: NEW → ASSIGNED
Attachment #586909 - Flags: review?(chris)
Comment on attachment 586909 [details] [diff] [review]
patch

Let's also accept a review by Jeff here. He can push it upstream if it works for him.
Attachment #586909 - Flags: review?(jmuizelaar)
(In reply to Joe Drew (not getting mail) from comment #2)
> Comment on attachment 586909 [details] [diff] [review]
> patch
> 
> Let's also accept a review by Jeff here. He can push it upstream if it works
> for him.

Looks like this was missed - is it still valid?
Flags: needinfo?(jmuizelaar)
Whiteboard: [gfx-noted]
This is still being used for FF build on Solaris. Ginn, can you please comment whether this is still valid?

The bug assignee didn't login in Bugzilla in the last 7 months, so the assignee is being reset.

Assignee: ginnchen+exoracle → nobody
Status: ASSIGNED → NEW
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.