Chromium WebGL divides FPS on each window running
Reported by
a...@funwithtriangles.net,
Jun 6 2017
|
||
Issue descriptionUserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Steps to reproduce the problem: 1) Run Chrome on Linux 2) Make a second chrome window (ctrl-n) 3) Make a third chrome window (ctrl-n) 3) Run the webgl aquarium in all 3 windows. http://webglsamples.googlecode.com/hg/aquarium/aquarium.html What is the expected behavior? On a decent machine, it will run at ~60fps on all windows What went wrong? On 2 windows: 30ps On 3 windows: 20fps As mentioned here: https://bugs.chromium.org/p/chromium/issues/detail?id=71439 Here's the issue: lets say you have N windows open, all of which are GPU acceleratred and both drawing at 60hz. Moreover, assume that they're not GPU bound. In this case, the max frame rate achievable is 60/N on Linux and Windows [but not Mac]. The reason is because all these contexts flatten down to one GPU process. And, we block the GPU process' thread on present. So, even if the GPU process correctly interleaves thee windows rendering [which it probably won't], you get: Window1 processcommands for ~2ms Window1.Present for ~14ms Window2 processcommands for ~2ms Window2.Present for ~14ms ... and so on for every open window Did this work before? N/A Does this work in other browsers? N/A Chrome version: 58.0.3029.110 Channel: n/a OS Version: 16.04 LTS Flash Version: This behaviour is also happening with NWJS and is why I'm filing this issue, as it's detrimental to my multi-window app. If anyone can test this on other versions of Linux, I'd love to know your results!
,
Jun 6 2017
Thanks for investigating. Please note that Windows and Linux had the same issue in 2011. https://bugs.chromium.org/p/chromium/issues/detail?id=71439
,
Jun 6 2017
We ported the workaround from Windows (swap generations) to Linux in https://chromium-review.googlesource.com/c/479566/ That was merged into M59 and I just tested that it works as intended on 60.0.3112.10 (Official Build) dev (64-bit) #0: Can you test on beta (soon to be stable) or dev channel?
,
Jun 6 2017
This works on beta for Linux. :) Will try and see if my issue is also fixed in NWJS with an update...
,
Jun 7 2017
Thanks for confirming. Do let us know if you think this isn't working as intended. |
||
►
Sign in to add a comment |
||
Comment 1 by kbr@chromium.org
, Jun 6 2017Components: Internals>GPU>Internals
Owner: sunn...@chromium.org