Troubles with webgl

(Wolh) #1

Good day to you.
I have some issues with viewing all models, it says "for compatibility reasons 3d is not available"
But from Edge it shows correctly. Official webgl test says that webgl working fine also.

What can i do?


At the moment, our viewer does not support Google SwiftShader.

@stephomi @paul_sketch we’ve seen this several times lately. Maybe we could test again if performance is too bad?

(Paul Sketch) #3

What happened is that You Graphic Card / Driver has been blacklisted by Google Chrome.
You can try updating graphic card drivers
And if it still doesn’t work you can “override” the blacklist using that in you google chrome location bar:


Note that Overriding the flags means that sometimes you may have graphics bugs

As “blacklist” are browser dependant, and as Edge Works on your gpu, Firefox browser might work too.
(list of blacklist is not up to date, but page gives an idea)

Google SwiftShader won’t work for sketchfab, it’s way too slow, no more real-time. and It makes the whole computer “irresponsive”.
It’s intended for very basic webgl, with few operations, and mostly in 2D.

(Wolh) #4

override turned on already and still not working, so as change of drivers
i have 1080ti, dont think that it can be blacklisted by chrome

(Paul Sketch) #5

don’t think that it can be blacklisted by chrome

Chrome enables “SwiftShader” (which is software renderer) instead of hardware accelerated render when it’s blacklisted (or too many crash on a row which can be solved by a browser close/restart). “unmasked renderer” is the line you should monitor for a change in order to see when it’s hardware accelerated.

Correct working would be “ANGLE (NVIDIA GeForce 1080ti Direct3D11 vs_5_0 ps_5_0)”

Another diagnostic tool is chrome://gpu
Inspect the WebGL item in the Graphics Feature Status list. The status will be one of the following:
Hardware accelerated — WebGL is enabled and hardware-accelerated (running on the graphics card).
Software only, hardware acceleration unavailable — WebGL is enabled, but running in software. See here for more info: "For software rendering of WebGL, Chrome uses SwiftShader, a software GL rasterizer."
Unavailable — WebGL is not available in hardware or software.

Just in case, please check chrome overall “enable hardware acceleration” setting:

  • Go to chrome://settings
  • Click the + Show advanced settings button
    In the System section, ensure the Use hardware acceleration when available checkbox is checked (you’ll need to relaunch Chrome for any changes to take effect)

(Wolh) #6

oh, that option was off
thanks a lot! now its working all fine

(Capn) #7

Hi @paul_sketch, I’m the lead developer of SwiftShader at Google. Can you help me better understand why Sketchfab doesn’t support 3D rendering with SwiftShader, and what we can do to meet its needs?

The message “For compatibility reasons, 3D is not available (check requirements)” when the GPU is blacklisted doesn’t quite seem accurate to me. SwiftShader is compatible with WebGL 1 & 2, and is readily available on Chrome on Windows and Linux (soon Mac OS too). Also, when one clicks the check requirements link, we’re directed to to check browser compatibility and it states that “Your browser supports WebGL”.

SwiftShader’s performance depends on the CPU, and I don’t think blanket conclusions can be based on that. For example my workstation has 8 times more CPU computational power than its GPU (based on GFLOPS). I realize that’s atypical, but I’m just trying to make a point about rendering on the CPU not being inherently slow. AVX-512 technology will also significantly reduce the gap (once SwiftShader is able to exploit it). I think it’s also worth noting that Sketchfab’s 3D content can be explored on a mobile phone, and in my experience SwiftShader can keep up with mobile GPUs even on low-powered desktops.

In conclusion I was wondering if the decision between 3D rendering and 2D canvas could be made user-controllable? This would also greatly help me to be able to analyze performance issues and improve SwiftShader.

(Paul Sketch) #8

we will add an url option to force it so that you can benchmark it. I’ll ping you when it’s in prod.

That message does need rework, you’re right. We’ll try to make a better message.

As you can see in this Forum post, most of use case is:

  • blacklisted gpus
  • repeated “webgl crash”

In both case, what user wants is re-enabling the GPU, not going SwiftShader route.

Doing like we do now allows us to solve user problem. (which is re-enabling their GPU)

Use case of swiftShader for us would be with GPU we cannot support.
Those are very exotic kind of GPU, like those Vivante GPUs, with their “max_fragment_uniforms: 6”.
For that use case, we would need a guaranteed way to enable SwiftShader on demand though when we consider the GPU “unacceptable”. I don’t think there is a way from inside js for now ?
(not a cli switch or chrome flags, but a was to explicitly request a software webgl context)

When we tried swiftShader, the resulting user experience was very different than when using GPU (even on our very high end developer’s CPUs):

  • near freeze of all the os desktop
  • high input latency
  • near instant cpu fans to the max
  • laptop battery going out very fast

(Capn) #9

Thanks, looking forward to trying that to see for myself how well/badly SwiftShader fares at rendering Sketchfab content.

Understood, but in the case of a blacklisted or frequently crashing driver there’s typically a root cause that should get addressed, instead of being masked on a user-by-user case, which may put them at risk of greater issues and doesn’t help resolve the root cause for users with the same issue. In other words, we’d be very grateful if people filed bugs at in case a GPU appears to incorrectly be blacklisted, or when it keeps crashing. Thanks!

Interesting. Yes, I agree that would be a good use of SwiftShader. I’ll suggest the JS feature to the WebGL working group at Khronos.

Thanks for the feedback. I’ll investigate whether we can improve that, once there’s a url option that will allow rendering with SwiftShader.