demo ยท v139

WebGL Fallback Decision Lab

Chrome 139 stops silently replacing failed WebGL with SwiftShader. This lab probes the real canvas.getContext() path, then lets you force the null, software-renderer, and context-lost branches that production code now needs to handle.

fallback path lab

The live probe creates an actual WebGL context with the selected options and inspects its renderer string. Scenario controls then drive the same app-level decision tree so every fallback branch is visible without requiring a broken GPU.

42 plotted points
app decision Not run

Run the probe to choose WebGL or a fallback.

context result Not run

Context creation, null returns, and context loss appear here.

fallback renderer Not run

Canvas 2D, SVG, or support messaging will be selected when WebGL cannot be used.

rendered output

probe log

awaiting probe

the production branch

const options = { failIfMajorPerformanceCaveat: true };
const gl = canvas.getContext("webgl2", options) ?? canvas.getContext("webgl", options);

if (!gl || rendererLooksLikeSoftware(gl)) {
  renderCanvas2DFallback();
} else {
  startWebGLScene(gl);
}

see also