Closed Bug 2070998 Opened 2 months ago Closed 2 months ago

Fix broken active blob items heuristics

Categories

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

task

Tracking

()

RESOLVED FIXED
158 Branch
Tracking Status
firefox158 --- fixed

People

(Reporter: nical, Assigned: nical)

References

Details

(Keywords: perf-alert)

Attachments

(2 external files)

Two long standing bugs meant the thresholds in the grouping code never applied: ConstructGroups computed isLast with iterator::HasNext(), which is true for every item the loop visits, so the middle-of-list "Should" threshold was never used; and AssessBounds compared the item size in app
units against a threshold documented in pixels, so anything wider than about eight device pixels counted as large.

No longer blocks: 2070993
Blocks: 2070993

Count group blobs, fallback blobs, blob pixel area, items painted into
group blobs by type, and group splits by the type of the item that caused
them. The counters are reset per display list build and reported as a
"WebRender blob images" profiler marker so that the effect of making more
SVG items active can be read off a profile.

When gfx.webrender.debug.highlight-painted-layers is set, group blobs are
now tinted green (fallback blobs keep the red tint) so the two kinds can be
told apart.

Two long standing bugs meant the thresholds in the grouping code never
applied: ConstructGroups computed isLast with iterator::HasNext(), which is
true for every item the loop visits, so the middle-of-list "Should"
threshold was never used; and AssessBounds compared the item size in app
units against a threshold documented in pixels, so anything wider than about
eight device pixels counted as large. The effective behavior was that every
item that could be active was.

isLast is now computed from the next iterator and AssessBounds works in
device pixels.

How were the bugs found?

I know I found the app units vs pixels bug a long time ago in some bug while nical was on pto, I guess we forgot about it while waiting for nical to come back, back then.

(In reply to Jeff Muizelaar [:jrmuizel] from comment #3)

How were the bugs found?

Claude code found them while investigating converting some blob items to WR display items.

Status: NEW → RESOLVED
Closed: 2 months ago
Resolution: --- → FIXED
Target Milestone: --- → 158 Branch

Perfherder has detected a browsertime performance change from push 7af2b286ab5040815464ca9c5a7cf11abc226d6a.

No action is required from the author; this comment is provided for informational purposes only.

Improvement Test Platform Options Absolute values [old vs new] Performance Profiles
3% speedometer3 Charts-observable-plot/total (doc) windows11-64-24h2-hw-ref-shippable fission webrender 56.92 ms -> 54.96 ms Before/After
3% speedometer3 Charts-observable-plot/total (doc) windows11-64-24h2-hw-ref-shippable fission webrender 56.35 ms -> 54.85 ms Before/After

Need Help or Information?

If you have any questions, please reach out to fbilt@mozilla.com. Alternatively, you can find help on Slack by joining #perf-help, and on Matrix you can find help by joining #perftest.

Details of the alert can be found in the alert summary, including links to graphs and comparisons for each of the affected tests.

Keywords: perf-alert
QA Whiteboard: [qa-triage-done-c159/b158]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: