Closed
Bug 582489
Opened 14 years ago
Closed 3 months ago
Much slower on particle demo due to canvas performance issues with fillRect
Categories
(Core :: Graphics: Canvas2D, defect)
Tracking
()
RESOLVED
INACTIVE
People
(Reporter: bzbarsky, Unassigned)
References
Details
Attachments
(1 file)
1.86 KB,
text/html
|
Details |
BUILD: Current trunk mac build
STEPS TO REPRODUCE:
1) Load the attachment.
2) Click the "Start" button.
3) Wait a bit for the FPS to stabilize
ACTUAL RESULTS: 8fps or so on my machine
EXPECTED RESULTS: 20+ fps like Safari and Chrome (note that Opera doesn't support fillText so doesn't run the testcase).
ADDITIONAL INFORMATION: Shark says that 85% of our time is spent under nsCanvasRenderingContext2D::FillRect. This breaks down as (all percentages are of total time, and are times under, not in):
2% ~gfxPath
2% free under nsCanvasRenderingContext2D::DrawRect
2% gfxContext::CopyPath
5% gfxContext::Rectangle
1% gfxContext::UserToDevice (under nsCanvasRenderingContext2D::DrawPath)
3% gfxContext::GetUserPathExtent
68% _cairo_quartz_surface_fill
The fill stuff is:
CGContextFillPath: 25%
_cairo_quartz_setup_state: 24% (calling CGContextSetRGBStroke/FillColor and
CGContextSaveGState)
_cairo_quartz_teardown_state: 7% (all CGContextRestoreGState)
_cairo_quartz_cairo_path_to_quartz_context: 7% (all under
_cairo_path_fixed_interpret).
I'm having a real hard time believing that rectangle fills need all that gunk (complete with the _cairo_path_fixed_interpret!).... Is this really expected?
Reporter | ||
Comment 1•14 years ago
|
||
sounds like we need to an optimization to recognize when the path we're drawing is just a rectangle...
Reporter | ||
Comment 3•14 years ago
|
||
Note that I've seen this pop up before; fillRect is often somewhat of an issue in canvas profiles. This one was just more egregious than most. ;) Point being, it's not that this particular testcase is somehow doing something weird... at least as far as I can tell.
I also don't know whether there are similar issues on non-Mac platforms.
Comment 4•14 years ago
|
||
I don't like not blocking on this, but I also can't justify it if it's not a regression. :( Would gladly take a patch!
blocking2.0: ? → -
Reporter | ||
Comment 5•14 years ago
|
||
OK. Is there a way to track this as a must-fix for post-2.0? :(
Comment 6•13 years ago
|
||
This appears fine on windows, do we have a plan to attack this Jeff? Or would you say we're going at this through Azure?
Updated•2 years ago
|
Severity: normal → S3
Comment 7•3 months ago
|
||
This performs worse with gpu-canvas on Windows : https://share.firefox.dev/3WQYX7U
With d2d-canvas, the testcase is smoother than Chrome.
Updated•3 months ago
|
Status: NEW → RESOLVED
Closed: 3 months ago
Resolution: --- → INACTIVE
You need to log in
before you can comment on or make changes to this bug.
Description
•