secondlife / jira-archive

2 stars 0 forks source link

[BUG-228802] CEF (Shared Media) Performance Disparity with HTML5/WebGL #6795

Open sl-service-account opened 4 years ago

sl-service-account commented 4 years ago

What just happened?

CEF (Chromium Embedded Framework) or Shared Media as we would know it has a disparity between HTML5/WebGL content. For this bug report, I'll assume that Firestorm has not made their own version of CEF (though I've tested this in the main viewer too).

So here's what I know from testing:

When trying to put an HTML5/WebGL game on a prim, some will play flawlessly, others might have no audio, and the higher end might regularly experience barely alive FPS along with sound issues (glitchy or non-existent).

When tested across a wide range of computer setups (users) this seems to hold true for all but the most higher end gaming rigs (like an RTX card). I would, of course expect this with integrated graphics on a laptop, but something doesn't seem right in the results altogether. It's just all over the place.

So let's try a few examples:

Put these on a prim -

Labyrneath II http://uploads.ungrounded.net/alternate/1319000/1319749_alternate_75390_r4.zip

The playback with CEF should be fine, including Audio. No issues really reported in testing. Uses Construct as the engine.

Let's step this up a notch:

Access Code: Heaven http://uploads.ungrounded.net/alternate/1118000/1118227_alternate_48310_r1.zip

Uses the Unity WebGL implement. Plays fine in Chrome on its own, but when added to a Prim in shared media (CEF), more often than not will have no sound. Unknown reasons, but this is a common report in testing among other games, too (Oh! Snake etc).

Last but not least, let's push the CEF a little harder.

The final link here is an HTML5/WebGL type retro console emulator. Putting aside the obvious discussion otherwise, this and Neptune.JS make for an excellent stress test in Second Life of CEF to see how it performs.

So let's put this link on a prim to see how it does - https://static.arcadespot.com/retroemulator.php?system=sega&game=2016/09/streets-of-rage-2.gen

So in a few years of testing, I've collected enough insight to realize that the flash versions of the emulators ran smoothly, but the HTML5 JS whatever versions struggle on all but higher end hardware (RTX GPU+) in SL unless running something dead simple like a Pico-8 game (https://kdata1.com/2020/03/2055596/xzero1.2_html) or Atari 2600 (Javatari). We're again talking an RTX card and up where it works fine but anything lower and it starts to bomb.

From a comment Ebbe made to me on Twitter, CEF doesn't have Hardware Acceleration available like Chrome does, so this might be a major factor in that Shared Media has to effectively brute force certain things on the CPU instead while running Second Life.

What were you doing when it happened?

Testing various HTML5/WebGL games on a shared media surface.

What were you expecting to happen instead?

I expected that they would work reliably. As it stands, even on the simpler WebGL games it's hit and miss even if they work in an external browser.

Other information

Possibly a few things could fix this in the next CEF Update -

Links

Related

Original Jira Fields | Field | Value | | ------------- | ------------- | | Issue | BUG-228802 | | Summary | CEF (Shared Media) Performance Disparity with HTML5/WebGL | | Type | Bug | | Priority | Unset | | Status | Accepted | | Resolution | Accepted | | Reporter | Aeonix Aeon (aeonix.aeon) | | Created at | 2020-05-21T22:14:45Z | | Updated at | 2020-10-08T17:17:14Z | ``` { 'Build Id': 'unset', 'Business Unit': ['Platform'], 'Date of First Response': '2020-05-22T11:33:44.269-0500', "Is there anything you'd like to add?": 'Possibly a few things could fix this in the next CEF Update -\r\n\r\n* Add Hardware Acceleration option to CEF like Chrome has\r\n* Alter resource priority of a focused Shared Media prim \r\n* Treat the CEF in the background as a "plugin" and let the computer allocate non-shared resources to it \r\n* Maybe just updating the CEF and bringing it up to speed with latest incarnations will alleviate many of these issues.\r\n\r\nIt\'s a given that end-users will play games on prims in SL going forward - doubly so that those games will be HTML5/WebGL. Can it handle an Agar.io game? Who knows. But you get my point here. \r\n\r\nNo matter how you slice it, CEF currently is choking on everything but the simplest HTML5/WebGL game implementations unless you\'re running a computer so monstrous it demands to be called Mister Computer in front of company and demands regular sacrifices in its honor.', 'ReOpened Count': 0.0, 'Severity': 'Unset', 'System': 'SL Viewer', 'Target Viewer Version': 'viewer-development', 'What just happened?': "CEF (Chromium Embedded Framework) or Shared Media as we would know it has a disparity between HTML5/WebGL content. For this bug report, I'll assume that Firestorm has not made their own version of CEF (though I've tested this in the main viewer too).\r\n\r\nSo here's what I know from testing:\r\n\r\nWhen trying to put an HTML5/WebGL game on a prim, some will play flawlessly, others might have no audio, and the higher end might regularly experience barely alive FPS along with sound issues (glitchy or non-existent).\r\n\r\nWhen tested across a wide range of computer setups (users) this seems to hold true for all but the most higher end gaming rigs (like an RTX card). I would, of course expect this with integrated graphics on a laptop, but something doesn't seem right in the results altogether. It's just all over the place.\r\n\r\nSo let's try a few examples:\r\n\r\nPut these on a prim -\r\n\r\nLabyrneath II\r\nhttp://uploads.ungrounded.net/alternate/1319000/1319749_alternate_75390_r4.zip\r\n\r\nThe playback with CEF should be fine, including Audio. No issues really reported in testing. Uses Construct as the engine.\r\n\r\nLet's step this up a notch:\r\n\r\nAccess Code: Heaven\r\nhttp://uploads.ungrounded.net/alternate/1118000/1118227_alternate_48310_r1.zip\r\n\r\nUses the Unity WebGL implement. Plays fine in Chrome on its own, but when added to a Prim in shared media (CEF), more often than not will have no sound. Unknown reasons, but this is a common report in testing among other games, too (Oh! Snake etc).\r\n\r\nLast but not least, let's push the CEF a little harder.\r\n\r\nThe final link here is an HTML5/WebGL type retro console emulator. Putting aside the obvious discussion otherwise, this and Neptune.JS make for an excellent stress test in Second Life of CEF to see how it performs.\r\n\r\nSo let's put this link on a prim to see how it does -\r\nhttps://static.arcadespot.com/retroemulator.php?system=sega&game=2016/09/streets-of-rage-2.gen\r\n\r\nSo in a few years of testing, I've collected enough insight to realize that the flash versions of the emulators ran smoothly, but the HTML5 JS whatever versions struggle on all but higher end hardware (RTX GPU+) in SL unless running something dead simple like a Pico-8 game (https://kdata1.com/2020/03/2055596/xzero1.2_html) or Atari 2600 (Javatari). We're again talking an RTX card and up where it works fine but anything lower and it starts to bomb.\r\n\r\nFrom a comment Ebbe made to me on Twitter, CEF doesn't have Hardware Acceleration available like Chrome does, so this might be a major factor in that Shared Media has to effectively brute force certain things on the CPU instead *while* running Second Life.\r\n", 'What were you doing when it happened?': 'Testing various HTML5/WebGL games on a shared media surface.', 'What were you expecting to happen instead?': "I expected that they would work reliably. As it stands, even on the simpler WebGL games it's hit and miss even if they work in an external browser.", } ```
sl-service-account commented 4 years ago

Whirly Fizzle commented at 2020-05-22T16:33:44Z, updated at 2020-05-22T16:35:50Z

I see the same results in all viewers tested apart from the CEF special RC: Second Life Release 6.4.1.541204 (64bit) All links play fine in Firefox web browser.

Labyrneath II http://uploads.ungrounded.net/alternate/1319000/1319749_alternate_75390_r4.zip

This plays fine - no issues with sound or media on:

So it appears all these problems are fixed on the LL CEF Special Viewer At least on my system.


Second Life Release 6.4.1.541204 (64bit)
Release Notes

You are at 81.6, 133.3, 21.9 in Testylvania Sandbox located at sim10781.agni.lindenlab.com (216.82.56.71:13013)
SLURL: http://maps.secondlife.com/secondlife/Testylvania%20Sandbox/82/133/22
(global coordinates 332,114.0, 305,797.0, 21.9)
Second Life Server 2020-05-08T19:15:39.541970
Release Notes

CPU: Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz (3491.94 MHz)
Memory: 16268 MB
OS Version: Microsoft Windows 7 SP1 64-bit (Build 7601)
Graphics Card Vendor: NVIDIA Corporation
Graphics Card: GeForce GTX 750/PCIe/SSE2

Windows Graphics Driver Version: 23.21.13.9135
OpenGL Version: 4.6.0 NVIDIA 391.35

Window size: 1920x1021
Font Size Adjustment: 96pt
UI Scaling: 1
Draw distance: 128m
Bandwidth: 3000kbit/s
LOD factor: 1.125
Render quality: 5
Advanced Lighting Model: Enabled
Texture memory: 512MB
VFS (cache) creation time: May 06 2020 08:39:04

J2C Decoder Version: KDU v7.10.4
Audio Driver Version: FMOD Ex 4.44.64
Dullahan: 1.5.2.202004240417
CEF: 81.2.17+gb382c62+chromium-81.0.4044.113
Chromium: 81.0.4044.113
LibVLC Version: 2.2.8
Voice Server Version: Vivox 4.10.0000.32327

Packets Lost: 61/8,107 (0.8%)
May 22 2020 09:28:01
sl-service-account commented 4 years ago

Dan Linden commented at 2020-05-22T17:08:04Z

Thank you for the bug report, Aeonix.

sl-service-account commented 4 years ago

Aeonix Aeon commented at 2020-05-22T17:22:06Z

Yes, a lot of times I've noticed the differentiation between testers was higher end GPU and systems, usually RTX and up before they said "It plays fine" with some little things here and there like choppy audio when unfocusing the prim and focusing on it again. At the moment, GTX looks like a cutoff before it all goes horribly wrong, but I look forward to seeing if the new CEF release addresses that and lowers the barrier to entry for Html5/WebGL content.

sl-service-account commented 4 years ago

Aeonix Aeon commented at 2020-05-22T17:28:09Z

Additional note: I'm assuming then that something like Pluto.TV would work in the CEF too? As it stands, the video doesn't play at all but the interface works. I'm guessing since I haven't seen any release notes for CEF Special to know if it updates that part too.

sl-service-account commented 4 years ago

Whirly Fizzle commented at 2020-05-23T12:31:50Z

Aeonix, there's a bug report filed for Pluto TV here: BUG-228806

sl-service-account commented 4 years ago

Aeonix Aeon commented at 2020-05-23T15:55:30Z

I'm aware. I asked Nik to file it. He's running similar hardware to you, and was using the current CEF Special available on the site. We were running the same tests. Didn't get the same results, unfortunately. He was reporting back the same issues as before, when we tried a Pluto.tv prim just out of curiosity on the CEF viewer.

sl-service-account commented 3 years ago

Aeonix Aeon commented at 2020-10-04T02:01:15Z

Issue seems to have gotten worse in the recent Default Viewer.

I just logged in to test Pluto.tv and on an off chance, decided to run through the HTML5 games again on shared media. They now crash Shared Media shortly after the games load. Which is to say, it gets only so far and shared media simply shuts off.

Thought it was a fluke, but tested on Xeno Punch, Labyrneath, Labyrneath II, Oh Snake, and Nymphiad all with the same result. When laoded to shared media, they load up, but shortly afterward shared media locks up and shuts itself off.

You can try for yourself:

Xeno Punch: 

https://itch.io/embed-upload/356643

Labyrneath II: 

https://uploads.ungrounded.net/alternate/1319000/1319749_alternate_75390_r4.zip

Same games work in latest Firestorm release, and oddly they worked when I first made this report though there was the expected issue with performance. 

Thought maybe I needed to relog, and did... only to get the same results. From my end on the Default Viewer, it's all broken.