Open Bug 1020340 Opened 11 years ago Updated 3 years ago

Poor canvas performance on OpenLayers3

Categories

(Core :: Graphics: Canvas2D, defect)

29 Branch
x86_64
Windows 7
defect

Tracking

()

People

(Reporter: elogrono, Unassigned)

Details

(Whiteboard: [bugday-20140609])

User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0 (Beta/Release) Build ID: 20140506152807 Steps to reproduce: Hello, I'm trying OpenLayers3 examples and I found your browser has poor performance compared to Explorer and Chrome. I think problem is Canvas rendering... You can compare it -> http://ol3js.org/en/master/examples/synthetic-lines.html Do you know what is the problem ? Thanks! Actual results: Bad performance
Confirmed on Windows 7, 64 bits, with Firefox Beta 30 (User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0, Build ID: 20140605174243)
Status: UNCONFIRMED → NEW
Component: Untriaged → Canvas: 2D
Ever confirmed: true
Product: Firefox → Core
Whiteboard: [bugday-20140609]
Summary: canvas performance → Poor canvas performance on OpenLayers3
Another example - http://openlayers.org/en/v3.0.0/examples/vector-layer.html. Try to drag the map, while no country is selected. Performance is awful... )-:
I get a freeze on the comment 0 site on MacBook Pro (nightly 20141210). With comment 2 site, I get ~12-15fps.
blocking-b2g: --- → backlog
blocking-b2g: backlog → ---
Assignee: nobody → lsalzman
On the synthetic lines test case, and peeking inside what Cairo was doing, it appears to be handing us a fairly gigantic path of 10K points to stroke, which internally is generating a fairly big polygon mesh. The Direct2D backends also seem to choke on this as well. Skia and Skia GL backends seem to do much better and give interactive performance. After conferring with Bas, it was discussed that the reason for this difference is that Skia is primarily a hairline renderer that does not mess with building meshes. Whereas for Cairo and Direct2D, since we are not caching the mesh that is built up, a lot of time is spent rebuilding this mesh every frame, and not much on the actual rendering itself. Bas also looked into IE11 performance on this test case and found it was similarly not good. I tried poking at some Cairo "cheats" like turning off AA, messing with cap or join options, but none of that made much of a difference, as expected, since the bottleneck is in processing the mesh itself before any of that becomes an issue. For the time being, I am not sure there is much we can do about this one for the Direct2D backend, though at least in cases where we rely on Cairo canvas, using Skia as an alternative is one solution.
Assignee: lsalzman → nobody
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.