Detect software vs hardware webGL render mode
Asked Answered
C

1

2

I've got an error I'm trying to catch with MapboxGL that doesn't handle when a version of IE switches the webGL render modes from hardware to software. I've been pouring over documentation and console logging pretty much everything I can, but can't find any documented way to find out if webGL is using hardware or software render modes.

Any ideas?

Cosset answered 17/1, 2017 at 18:17 Comment(2)
Does trying to create a context with {failIfMajorPerformanceCaveat : true} catch it?Serviceable
It does on load, but not during runtime. So it will prevent you from running if the conditions on load will severely degrade performance, but not if something happens during runtime.Cosset
T
4

You can check whether or not a browser can run GL JS in a hardware render mode using the mapbox-gl-supported library

<script src='mapbox-gl-supported.js'></script>
<script>
if (mapboxgl.supported({failIfMajorPerformanceCaveat: true})) {
    // hardware mode! :D
} else {
    // software mode :(
}
</script>
Todd answered 17/1, 2017 at 19:46 Comment(2)
This works at load, but won't change dynamically if IE switches from hardware to software during the runtime.Cosset
@Cosset Have you tried reinitializing the canvas context? I mean, no browser is going to suddenly delete all references to any object that is still at play if that is what you are referring to.Scrofula

© 2022 - 2024 — McMap. All rights reserved.