Last Comment Bug 777430 - Talos tsvgr_opacity regression when SVG display lists enabled
: Talos tsvgr_opacity regression when SVG display lists enabled
Status: RESOLVED FIXED
: perf
Product: Core
Classification: Components
Component: SVG (show other bugs)
: Trunk
: x86 Mac OS X
: -- normal (vote)
: mozilla17
Assigned To: Jonathan Watt [:jwatt] (catching up after vacation)
:
Mentors:
Depends on:
Blocks: 776054
  Show dependency treegraph
 
Reported: 2012-07-25 11:06 PDT by Jonathan Watt [:jwatt] (catching up after vacation)
Modified: 2012-08-01 10:52 PDT (History)
2 users (show)
See Also:
Crash Signature:
(edit)
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---


Attachments
patch (1.28 KB, patch)
2012-07-31 17:06 PDT, Jonathan Watt [:jwatt] (catching up after vacation)
roc: review+
Details | Diff | Splinter Review

Description Jonathan Watt [:jwatt] (catching up after vacation) 2012-07-25 11:06:07 PDT
Testing locally, small-group-opacity-2500.svg seems to take 5x or so longer to render when SVG display lists are enabled. I thought at first this must be because the group opacity optimization wasn't working correctly with display lists, but in fact we can't even use that optimization for this test, so that's not it. Needs some investigation.
Comment 1 Jonathan Watt [:jwatt] (catching up after vacation) 2012-07-31 17:06:19 PDT
Created attachment 647771 [details] [diff] [review]
patch
Comment 2 Jonathan Watt [:jwatt] (catching up after vacation) 2012-07-31 17:11:27 PDT
For the record, the problem is that when SDL is enabled, we create an nsDisplayOpacity item to handle the group opacity on all the rects. When painting through that we end up under BasicLayerThebes::PaintThebes where we call BasicLayerManager::PushGroupForLayer, which calls gfxContext::PushGroupAndCopyBackground. The PushGroupAndCopyBackground call spends virtually all its time in _moz_cairo_paint is much more expensive than the PushGroup call (which doesn't call _moz_cairo_paint) we make in the SDL-disabled path. In fact it takes up 80% of the paint time. A PushGroup call in comparison is virtually free.
Comment 3 Jonathan Watt [:jwatt] (catching up after vacation) 2012-08-01 03:04:54 PDT
https://hg.mozilla.org/integration/mozilla-inbound/rev/9d3c9b863c69
Comment 4 Jonathan Watt [:jwatt] (catching up after vacation) 2012-08-01 03:05:08 PDT
Thanks, roc!
Comment 5 Ed Morley [:emorley] 2012-08-01 10:52:50 PDT
https://hg.mozilla.org/mozilla-central/rev/9d3c9b863c69

Note You need to log in before you can comment on or make changes to this bug.