Closed Bug 1351131 (wr-displayitems) Opened 7 years ago Closed 4 years ago

[meta] Display Item Conversion


(Core :: Graphics: WebRender, enhancement, P3)

53 Branch



Tracking Status
firefox56 --- unaffected
firefox57 --- unaffected


(Reporter: mchang, Unassigned)



(Keywords: meta)


(1 file)

We have bugs all over the place to track display item layer conversions. Let's make this the default meta. 

The giant list of items:

As of today:
Open - 
Gradients - Bug 1347469 - Add gradient border support in quantum render.
Background image gradients -
AltFeedback -
Bullet - 
ColumnRule -
TableBorderBackground -

Image - - Done
Text - - Done
ButtonBorderBackground - - Done
ButtonForeground - - Done
CanvasBackgroundColor - - Done
BackgroundColor - - Done
Border - Bug 1322079 - Add support for border layers in WebRender LayerManager/Bridge code - Done
Outline -

Items that don't need work:
sDisplayTransform, nsDisplayBlendMode, nsDisplayBlendContainer, nsDisplayMask, nsDisplayOwnLayer, nsDisplayOpacity
Alias: wr-displayitems
Depends on: 1337552
Done: Box shadow inset - bug 1349843
Depends on: 1349843
Depends on: 1351133
Outer box shadows, almost done - 1347727
Depends on: 1347727
Assignee: nobody → mchang
Background image - bug 1351242
Depends on: 1351495
Depends on: 1351508
Depends on: 1351510
Depends on: 1351511
Text overflow marker - bug 1351508
Bug 1351510 - Conver nsDisplaySolidColor to a WebRender Display Item
Bug 1351511 - Convert nsSolidColorRegion to WR DisplayItems
Depends on: 1339575
Depends on: 1352034
A chart of how many times a display item of a certain type was created compared to all the display items that were created. We see that we don't actually have that many items.

Top 10 are:
1) Layer event regions (27%)
2) text (26%)
3) Background color (13.5%)
4) background (5.8%)
5) border (5.6%)
6) Image (4%)
7) opacity (3.5%)
8) Transform (2.1%)
9) SVG Geometry (1.9%)
10) button border background (1.8%)
It'd also be interesting to see what percentage of display lists each type of display item is present in. eg There would only be one CanvasBackgroundColor per display list, so it is quite low down this list. But it is present in basically every page, (and takes up a large area) so is important that we convert it. I realise this particular example is already implemented, but there might be others.
I think it would give a more accurate picture to only count each display item once per page.
Note: please keep the status of DI up to date in this etherpad:
I did some local profiling to see what display items are actually slow. The list is surprisingly small. In order of importance:

1) Background
2) Text
3) Images
4) Box Shadows both inner and outer
5) nsDisplaySVGGeometry

After browsing for quite some time, it's rare that we see other display items ever take more than 1 ms to render.

Backgrounds wildly vary, but by far are much slower than every other item. Sometimes I've seen 300 +ms to render a background.
Text is next, but most of the time takes 1-2 ms, with max of ~30ms.
Next are images, usually take 3-4 ms with a max of ~8ms
Finally box shadows with average 1-2ms with maxes of 5ms.
SVG Geometry ~1-2ms.

All tests done on Windows 10 w/ d2d on a late 2013 MacBook pro + NVidia gpu.
Depends on: 1352654
Also once in a very rare while, borders can sometimes take ~5ms.
Depends on: 1359242
Depends on: 1392343
Depends on: 1392470
Depends on: 1393383
Assignee: mchang → nobody
Depends on: 1406608
Depends on: 1412179
Keywords: meta
Depends on: 1414097
Depends on: 1415989

Old metabug, no open deps, closing.

Closed: 4 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.