Platform/GFX/perf triage

From MozillaWiki
< Platform‎ | GFX
Jump to: navigation, search

The page contains a breakdown of performance related bugs and tasks for WebRender.

See also, the graphics perf bugs that come out of the performance team's triage process

Bugzilla tree view of the wr-perf bugs: https://bugzilla.mozilla.org/showdependencytree.cgi?id=1477376&hide_resolved=1

To determine in which category a performance issue fits in a good source of information is to set the pref gfx.webrender.debug.profiler-ui to "Frame stats,Time graphs, ,GPU". Also set "gfx.webrender.debug.profiler" and "gfx.webrender.debug.gpu-time-queries" to true. this should be enough to tell in which stage of the rendering pipeline the issue is. Then set the profiler ui pref to more specific counters to continue investigating (see the list of profile counters in profiler.rs).

High priority bugs

Metabug: wr-perf-p1

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Alternate query using performance flag set to P1:

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


CPU time

Frame building

useful prefs:

  • gfx.webrender.debug.profiler-ui: "Frame times"

Metabug: wr-frame-building

A few common themes:

  • Many vector allocations add up to occupying a lot of the total frame building time.
  • HashMap operations are also showing up.
  • Removing redundant work or moving it to scene building can help a lot (for example Glenn's work on clipping).
  • Some pages have a very high primitive count. Anything that can help amortize how costs scale with prim count helps.
  • Timings tend to spike, so it's best to look at maximum times instead of averages. Spikes tend to line up with scene builds.

See also

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Scene building

Metabug: wr-scene-building

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Renderer (Driver & ANGLE overhead)

Metabug: wr-renderer

Useful prefs:

  • gfx.webrender.debug.profiler-ui: "Frame stats,#Renderer,Renderer graphs"

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Texture/Buffer uploads

Metabug: texture-upload-perf

Useful prefs:

  • gfx.webrender.debug.profiler-ui: "#GPU cache upload,#Texture cache update,#Texture uploads,#Texture uploads mem,#Rasterized glyphs,#Rasterized blob tiles"

See also:

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Batching

Metabug: wr-batching

Performance issues caused by high amounts of draw calls. 100 draw calls per frames is a reasonable amount (not a hard limit). Multiple hundreds, however, tend to cause excessive CPU usage in the renderer.

Useful prefs:

  • gfx.webrender.debug.profiler-ui: "#Draw calls"

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Picture Caching

Metabug: picture-cache-perf

See also: incremental-perf

Useful prefs:

  • gfx.webrender.debug.profiler-ui: "#Rendered picture tiles, ,Picture cache slices,Picture tiles,Picture tiles mem"

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


DisplayList building

Metabug: wr-displaylist-perf

Useful prefs:

  • gfx.webrender.debug.profiler-ui: "Transaction times"

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Blob image rasterization

Metabug: blob-perf

Blob image performance affect SVG and a few drawing primitives that aren't supported by WebRender.

A few common themes in blob image performance bugs:

  • Rasterization performance on the CPU (rasterization itself, malloc contention)
  • Overhead of replaying commands on multiple tiles.
  • Bad layerization causing many rasterized tiles and a lot of overdraw.
  • Rendering very large blobs failing to account for parts that aren't visible.
  • SVG filters on the CPU.

See also:

Useful prefs:

  • gfx.webrender.blob.paint-flashing: true
  • gfx.webrender.debug.profiler-ui: "#Blob rasterization,#Rasterized blob pixels,#Rasterized blob tiles,#Rasterized blobs"

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


SVG filters metabug: wr-svg-filters

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Glyph rasterization

These bugs affect CPU time and texture uploads.

Metabug: 1681339

Useful prefs:

  • gfx.webrender.debug.glyph-flashing: true
  • gfx.webrender.debug.profiler-ui: "#Rasterized glyphs,#Glyph resolve,#Texture cache update"

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Scheduling

Metabug: frame-scheduling

Useful prefs:

  • gfx.webrender.debug.profiler-ui: "#Content send,#API send"

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Vsync

Metabug: vsync

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Preserve-3d

Metabug: bug 1795885

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


GPU time

Useful prefs:

  • gfx.webrender.debug.profiler-ui: "Frame stats, ,#GPU,#Rendered picture tiles,|,GPU time queries"
  • gfx.webrender.debug.gpu-time-queries: true


Caching

Metabug: wr-caching

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Too many render passes

Metabug: wr-render-passes

Note, it's likely that most of the bugs below would be fixed by caching the render passes (bucket above).

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Overdraw

Metabug: 1613404

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


GPU times (others)

Metabug: wr-gpu-time

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


GPU Memory usage

Metabug: wr-gpu-memory

Useful prefs:

- See all profile counters starting with "Texture cache" in addition to "Created targets".

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Video playback

Metabug: video-perf

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Power usage

Metabug: gfx-power-usage

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Android

Metabug: wr-android-perf

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Linux

Metabug: wr-linux-perf

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Software WebRender (SWGL)

Metabug: sw-wr-perf

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


See also:

Canvas 2D

Metabug: canvas-perf

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Tools

Metabug: wr-perf-tools

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


General WebRender perf metabug

Metabug: wr-perf

During graphics triage, WebRender performance bugs are added as dependency to the wr-perf meta-bug. The next step is to replace the wr-perf dependency with one of the more specific meta-bugs above.


No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);


Other meta-bugs:

- wr-low-end-perf
- wr-perf-graveyard