demo · v139

GPU Capability Matrix

Probe real WebGL1, WebGL2, and WebGPU capabilities, then drive the same decision logic through no-GPU, software-renderer, and context-loss branches. Chrome 139 removes the silent SwiftShader fallback, so sites must branch on getContext() and render a useful fallback.

capability lab

The live path creates real canvas contexts and checks renderer strings. The simulation modes do not fake API support; they force the application decision branch so you can verify what users see when WebGL returns null, a software renderer is blocked, or a context is lost mid-session.

selected path Not run

Run the probe to choose WebGL or a fallback.

software renderer risk Not run

Renderer strings are checked for SwiftShader, llvmpipe, softpipe, and related tokens.

context health Not run

Context creation and context-loss events are surfaced here.

WebGPU adapter Not run

Adapter availability is reported separately from WebGL fallback behavior.

render result

decision log

Run the probe to inspect context creation, renderer strings, extension counts, and fallback choice.

WebGL 1.0

not probed

WebGL 2.0

not probed

WebGPU

not probed

Supported WebGL extensions — capability score

not probed

extensions supported. WEBGL_debug_renderer_info: not yet probed

Graceful degradation when WebGL is unavailable

  1. Feature-detect before initialising: const gl = canvas.getContext("webgl2") ?? canvas.getContext("webgl");
  2. If gl === null, fall back to Canvas 2D or SVG and keep the page useful.
  3. Use failIfMajorPerformanceCaveat: true when a slow software renderer is worse than showing a fallback.
  4. Listen for webglcontextcreationerror, webglcontextlost, and webglcontextrestored to record the exact branch users hit.
  5. Check chrome://gpu to diagnose disabled acceleration or blocklisted drivers.

see also