CEP-Resources icon indicating copy to clipboard operation
CEP-Resources copied to clipboard

Extensions are locked to ~30fps on macOS

Open GoodBoyNinja opened this issue 2 years ago • 9 comments

Hey.

The problem: On Macs, extensions are locked to <60fps (maybe even 30fps), which makes performance feel much worse than on PC.

I have been testing my extension panel on a 14" M1 Pro MacBook pro with (120hz display). I can't help but notice that the panel is locked to a lower fps:

https://user-images.githubusercontent.com/66829812/192144512-e39e10d5-4abe-437c-b7fb-7fbcf12222e3.mov

This is not a code issue nor an M1 issue, I have had this experience with other macs as well. On PC, the same extension runs buttery smooth.

This is also not a 120hz vs 60hz issue. If I limit my mac's display to 60hz, the maximum fps is still noticeably lower. I can also use chrome's debugging tools to prove that there are no fps drops in my interface.

https://user-images.githubusercontent.com/66829812/192145048-63f1df44-ce5e-4259-b653-a9ea67bf8bb9.mov

Other extensions seem to behave the same, feeling just overall sluggish compared to the host app. This seems purely like a rendering issue, as if your implementation of CEF in After-Effects is capping the maximum frame rate on macs. On PCs things run very smoothly.

I know that you guys are busy and aiming to moving to UXP soon, but please, this is not a small issue. It affects performance simnifically for all mac users, making buying extensions for mac less appealing and puts a cap on our ability to develop good tools for After-Effects, essentially hurting our income as well. With the top performance looking like this, you're basically making us feel like the best we can do with 3rd party plugins is to give users some buttons and sliders, and it's really discouraging.

Please look into this. It makes the hard work we put into developing for the Adobe ecosystem feel like a waste of time. Saar

GoodBoyNinja avatar Sep 25 '22 13:09 GoodBoyNinja

I don't know anything about how cef is implemented, but I can point out to resources I have found online: https://www.magpcss.org/ceforum/viewtopic.php?f=6&t=12029 https://github.com/cefsharp/CefSharp/issues/2275 https://bitbucket.org/chromiumembedded/cef/issues/3077/offscreen-rendering-capped-at-60fps-in https://groups.google.com/g/cefpython/c/k-R1ql6256A?pli=1 https://github.com/cefsharp/CefSharp/issues/1261 https://code.google.com/archive/p/chromiumembedded/issues/1368

GoodBoyNinja avatar Sep 25 '22 13:09 GoodBoyNinja

Hey! After some more online reading I couldn't find anything that truly solves the problem. However, I have found that inserting the following parameters in the manifest.xml inside the <CEFCommandLine> tag makes a difference:

  <Parameter>--windowless-frame-rate=60</Parameter>
  <Parameter>--disable-frame-rate-limit</Parameter>
  <Parameter>--disable-gpu-vsync</Parameter>
  <Parameter>--disable-gpu</Parameter>
  <Parameter>--disable-gpu-compositing</Parameter>
  <Parameter>--hardware-acceleration=false</Parameter>
  <Parameter>--hardware-video-decode-framerate=0</Parameter>
  <Parameter>--enable-begin-frame-scheduling</Parameter>

I believe some of those tags are redundant but not sure yet which ones exactly.

However, that doesn't solve the problem completely. While rendering seems to reach much higher frame rates now, interactions with the mouse are not entirely smooth and can feel a bit off, and some mouse interactions can feel delayed or out of sync. I have not yet tested it on a pc and can't verify it doesn't damage the experience there, which was fine before.

GoodBoyNinja avatar Oct 04 '22 14:10 GoodBoyNinja

Any feedback on this issue will be tremendously appreciated, thanks!

GoodBoyNinja avatar Jan 19 '23 14:01 GoodBoyNinja

I will try again in a month

GoodBoyNinja avatar Feb 23 '23 20:02 GoodBoyNinja

@GoodBoyNinja Did you happen to test on Win and confirm that things are still functioning properly?

PerryDesign avatar Mar 31 '23 16:03 PerryDesign

@GoodBoyNinja Did you happen to test on Win and confirm that things are still functioning properly?

Not in the past couple of months, but before that, yes. This extension has been developed mostly on Windows where things were always perfectly smooth. Others' extensions seem to behave similarly.

GoodBoyNinja avatar Mar 31 '23 16:03 GoodBoyNinja

@sujaisivanandan Would you be able to take a look at this issue?

PerryDesign avatar Mar 31 '23 17:03 PerryDesign

@GoodBoyNinja : The CEF has clamped frame rate @ 30fps for the OSR. CEP doesn't actually interfere here for the performance concerns. The single available workaround can be to use --disable-frame-rate-limit as CEFCommandLineParameter, but we don't recommend it. It essentially turns the vsync off & can shoot up CPU & GPU usage to max. Also, the results are going to be choppy & stuttering.

manishkrmishra avatar Apr 05 '23 06:04 manishkrmishra

@GoodBoyNinja : The CEF has clamped frame rate @ 30fps for the OSR. CEP doesn't actually interfere here for the performance concerns. The single available workaround can be to use --disable-frame-rate-limit as CEFCommandLineParameter, but we don't recommend it. It essentially turns the vsync off & can shoot up CPU & GPU usage to max. Also, the results are going to be choppy & stuttering.

Sounds like it's time to shift my future hopes towards UXP. Thank you both for the informative answers!

GoodBoyNinja avatar Apr 16 '23 15:04 GoodBoyNinja