Open Bug 1907266 Opened 2 months ago Updated 2 months ago

Canvas performance regression if Firefox is built with GCC/PGO

Categories

(Core :: Graphics, defect)

defect

Tracking

()

People

(Reporter: stransky, Unassigned, NeedInfo)

References

Details

Downstream bug: https://bugzilla.redhat.com/show_bug.cgi?id=2293910

Fedora builds Firefox with GCC/PGO and it brings significant performance regression on Canvas rendering (for instance the MotionMark 1.3 benchmark (https://browserbench.org/MotionMark1.3/).

Scores:
a) Firefox 127.0.1 PGO
Multiply: 462
Canvas Arcs: 423
Leaves: 360
Paths: 1126
Canvas Lines: 1
Images: 208
Design: 83
Suits: 630

b) Firefox 127.0.1 Non-PGO
Multiply: 331
Canvas Arcs: 552
Leaves: 313
Paths: 1651
Canvas Lines: 18616
Images: 207
Design: 82
Suits: 517

See Also: → 1601903

Martin, from reading the downstream bug, the regression is GCC/PGO compared to Mozilla-provided builds (clang PGO). Is that correct? Or is GCC PGO a regression compared to GCC without PGO?

The attached screenshots of the visual difference are also a bit concerning. Is it possible that a different canvas backend is being used? (eg accelerated canvas vs skia)

Severity: -- → S3
Flags: needinfo?(stransky)

(In reply to Jamie Nicol [:jnicol] from comment #1)

Martin, from reading the downstream bug, the regression is GCC/PGO compared to Mozilla-provided builds (clang PGO). Is that correct? Or is GCC PGO a regression compared to GCC without PGO?

GCC PGO build is much slower than GCC without PGO. I don't compare GCC and Clang builds.

The attached screenshots of the visual difference are also a bit concerning. Is it possible that a different canvas backend is being used? (eg accelerated canvas vs skia)

I use the same profile for testing, only difference is GCC and GCC+PGO build config. I can provide gecko profiler data if needed or anything else.

If you could please provide gecko profiles using the graphics preset for both with and without PGO that would be great.

How is the PGO profile data generated?

(In reply to Jamie Nicol [:jnicol] from comment #3)

If you could please provide gecko profiles using the graphics preset for both with and without PGO that would be great.

Will look at it and also try to build on latest trunk.

How is the PGO profile data generated?

I guess the same way as clang ones...the code is shared AFAIK.

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