Closed Bug 754475 Opened 13 years ago Closed 2 years ago

Poor css transform transition performance

Categories

(Core :: Graphics, defect)

15 Branch
x86
macOS
defect

Tracking

()

RESOLVED WORKSFORME

People

(Reporter: johan, Unassigned)

References

()

Details

User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:15.0) Gecko/15.0 Firefox/15.0a1 Build ID: 20120509040219 Steps to reproduce: Go to http://beta.svtplay.se/ in a browser window that is wider than 1024px and click the left/right arrow for the carousel to invoke the transition. Actual results: The scaling + opacity animation is not running at an acceptable framerate when compared to Chrome (19.0.1084.46 beta). It's noticeably slower. Expected results: The animation in Firefox should be as smooth as it is in Chrome (19.0.1084.46 beta).
Is this OS X specific ? This looks fast enough for me with Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/15.0 Firefox/15.0a1 SeaMonkey/2.12a1 Can you please post the graphic section from about:support ?
Fast here with Linux. Both Linux and Windows have some kind of content acceleration (xrender & D2D). So yes, that might be Mac specific.
Component: Untriaged → Graphics
Product: Firefox → Core
QA Contact: untriaged → thebes
This is the Graphic section from about:support on both of my macs: iMac: Vendor ID: 0x10de Device ID: 0x 609 WebGL Renderer: NVIDIA Corporation -- NVIDIA GeForce 8800 GS OpenGL Engine -- 2.1 NVIDIA-7.18.11 GPU Accelerated Windows: 1/1 OpenGL AzureBackend: quartz Macbook Air: Vendor ID: 0x8086 Device ID: 0x 116 WebGL Renderer: Intel Inc. -- Intel HD Graphics 3000 OpenGL Engine -- 2.1 APPLE-7.18.11 GPU Accelerated Windows: 1/1 OpenGL AzureBackend: quartz
Component: Graphics → Build Config
Product: Core → Firefox
Component: Build Config → Graphics
Product: Firefox → Core
I recorded a video that compares Firefox to Chrome. The quality is quite poor but it gives you an idea about the issue: http://www.youtube.com/watch?v=nqn1d4HpLpQ Firefox performs quite well but Chrome is just incredibly smooth.
Status: UNCONFIRMED → NEW
Ever confirmed: true
Blocks: 770810
Similar problem occurs here: http://tympanus.net/Tutorials/CSS3FullscreenSlideshow/index2.html I started Firefox in safe mode for sure and then investigated following: - When using maximized windows (1680 x 1050) native resolution, transition isn’t fluid - The smaller the Firefox window, the smoother animation (Tested on Windows 7, 8 x64) - GeForce 9600 GT, problem also occurred on other deviceswith GeForce 9800 GTX+ and Radeon Mobility HD4500
Here's a minimal test case reproducing the issue: http://bl.ocks.org/mourner/4336d03f18c1938df5d9 Compared "Animate with CSS" behavior of Firefox with one in Chrome and Safari. The latter two animate 3000 circles smoothly, while Firefox performance is SO HORRIBLE it hurts.
The site in comment #0 runs smoother in Firefox than Chrome for me (release builds of both, on Linux). The test-case in comment #5 does indeed run terribly in Firefox though, probably because it's animating top/left and then perhaps hitting bug 1009693? I'm going to mark it as dependent and we should re-test once it's fixed.
Depends on: 1009693
It might also be worth checking that no reflows are happening too (which would be a regression of bug 157681, I think?)
Ok, didn't read this thoroughly enough... I don't know if comment #5 is just an unrelated thing to this bug, which is a Mac-specific problem? Though comment #4 makes it sound like it might be fixed (and then I expect any further performance difference to be solved by bug 927349 and bug 1071275. Let's wait for gfx to settle down a little and needinfo the reporter to re-test.
What do you think about the test case in comment #6?
(In reply to Vladimir Agafonkin from comment #10) > What do you think about the test case in comment #6? Sorry, when I said comment #5, I actually meant comment #6. Though I just took another look - during painting, it's repainting the entire scene, and it's doing it because it's animating with margin-left and margin-top. I really doubt we can make that fast in a generic way, I expect this is better in Chrome purely down to better drawing performance. I don't think this is a meaningful test, or a representation of any of the real-world cases cited in this bug.
Sorry, I'm strapped for time today and I'm clearly not looking closely enough. I can see it's using transforms, but the elements aren't getting layerised. I'll look at this more closely later to see if there's anything obviously wrong.
Flags: needinfo?(chrislord.net)
Sounds good, thanks so much for looking into this! The real-world use case here is performance of animated layers like markers and popups in Leaflet maps. http://leafletjs.com It's smooth in Chrome even with a big amount of layers (e.g. 500 markers), but very stuttery in Firefox, and I'm not sure why.
cc'ing Matt Woodrow in case there's any obvious comment to be made about perf with lots of tiny layers.
Not necessarily 'a lot of tiny' layers - I have an animated wordcloud widget that performs very poorly even with a mere 50 words. Both Chrome and IE render it fluidly. If I go to 100 words, a 1s transition renders in a 3 or 4 step animation.
I don't think there's anything I can do about this in any reasonable time, but all the examples seem to perform ok atm... Removing n?me on the bug, but if someone can update this bug with some examples and more information, I can try to make sure it gets appropriate attention.
Flags: needinfo?(chrislord.net)
Severity: normal → S3

Performs well now.

Status: NEW → RESOLVED
Closed: 2 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.