Canvas performance regression if Firefox is built with GCC/PGO
Categories
(Core :: Graphics, 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
Comment 1•2 months ago
|
||
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)
Reporter | ||
Comment 2•2 months ago
|
||
(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.
Comment 3•2 months ago
|
||
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?
Reporter | ||
Comment 4•2 months ago
|
||
(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.
Description
•