Description
About WebGL Test
Introduction
The DeviceHub WebGL Test is a free online context smoke test that attempts WebGL and WebGL2 canvas contexts and reads vendor/renderer parameters when browsers expose them, without claiming unmasked strings will always appear. Game developers, mapping library authors, and support staff diagnosing black canvas issues use context creation as a first GPU smoke step inside the tab. DeviceHub notes honestly: WEBGL_debug_renderer_info and similar extensions are often blocked or return generic values for fingerprinting resistance, empty or vague renderer output is frequently intentional policy, not a failed test. Pair with WebGPU Test for next-generation probes and Screen Resolution when canvas sizing interacts with layout bugs. GIS teams running Mapbox GL in locked-down Chrome profiles verify WebGL2 context creation here before redeploying tile servers. MapLibre or Cesium “lost context” tickets start with context creation smoke before blaming tile servers. ANGLE backend strings when visible hint whether Direct3D or Vulkan paths are active on Windows, useful when games work but maps fail. PreserveDrawingBuffer defaults affect screenshot workflows, not context creation smoke tested here. Fleet map dashboards black-screening on Intel integrated GPUs start triage with WebGL1/WebGL2 creation rows before blaming tile servers. Map dashboards black-screening on Intel integrated GPUs start with WebGL1/WebGL2 creation before tile server blame. HDR browser modes rarely change GL creation but can affect perceived canvas colors, note HDR state separately. OES_texture_float support when probed elsewhere affects map rendering, context creation is only first gate. CesiumJS globe tiles and MapLibre vector maps both require WebGL2 floating-point textures on some layers; when WebGL1 succeeds but WebGL2 fails, fallback shaders may render flat blue oceans, capture both context rows before blaming CDN tile availability. PreserveDrawingBuffer true when set in apps affects screenshot alpha, this smoke uses default false attributes.
What this tool does
The page creates test contexts, queries GL parameters, and optionally requests debug renderer info when permitted, labeling masked strings as privacy behavior. It does not rewrite GPU blocklists, force driver updates, or benchmark draw call throughput. Failures surface when hardware acceleration is off, blocklists apply, or remote desktop breaks GL. Separate rows or messaging for WebGL1 versus WebGL2 avoid conflating partial support. Zero-size canvas CSS can look like black GL, confirm layout sizes via Screen Resolution separately. PreserveDrawingBuffer defaults affect screenshot workflows, not context creation smoke tested here. Labeled WebGL1 versus WebGL2 outcomes prevent misfiled bugs when only one context tier is blocklisted. Separate context rows prevent misfiled bugs when only WebGL2 is blocklisted on older drivers. loseContext stability under gaming load is not simulated, creation smoke differs from long-session stability. Canvas alpha:false defaults sometimes surprise screenshot tests, context smoke does not set canvas CSS size. Context attributes such as antialias, depth, and stencil requested at creation time can differ from production map libraries; this smoke uses conservative defaults so failures here still implicate blocklists or acceleration toggles rather than exotic attribute mismatches alone. Integrated GPU dual-stack laptops switching to battery mode may block discrete GL, retest on AC power before driver tickets.
When to use it
Run when WebGL maps fail silently, after GPU driver updates, when comparing integrated versus discrete GPU browser behavior, or before escalating black canvas tickets to hardware RMA. Prefer WebGPU Test when investigating newer Chromium graphics stacks alongside legacy WebGL. Antialiasing defaults differ between WebGL1 and WebGL2 partial support scenarios. PreserveDrawingBuffer defaults affect screenshot workflows, not context creation smoke tested here. Remote desktop users see software GL or total failure, retest on local hardware before GPU RMA. Zero CSS canvas size looks like black GL, verify layout via Screen Resolution separately from context smoke. Enterprise software rendering policies fail contexts on healthy GPUs, policy not panel defect. Electron apps embedding Chromium with --disable-gpu flag for CI builds will fail context creation here identically to end-user black maps, label headless or GPU-disabled shells in tickets before escalating to DeviceHub. MAX_TEXTURE_SIZE queries when shown help tile atlas planning, context creation alone does not print every limit. WebGL context lost event after GPU process crash is not simulated, users may need browser restart after one-shot success here.
How it works
WebGL contexts come from canvas elements; browsers may refuse context creation on blocklisted GPUs or software renderers. UNMASKED_VENDOR_WEBGL and UNMASKED_RENDERER_WEBGL via debug extension are increasingly restricted, DeviceHub reports what is returned, not what a native app sees. Secure HTTPS hosts the page; permissions stay none. WebGL2 availability may differ from WebGL1 on the same machine. loseContext events are not simulated here, this is creation smoke, not stability testing. PreserveDrawingBuffer defaults affect screenshot workflows, not context creation smoke tested here. loseContext events from GPU reset are not simulated; creation smoke differs from stability under gaming load. WEBGL_debug_renderer_info blocked while contexts work means masked renderer is policy not missing GL. WebGL2 missing with WebGL1 working explains many map-library fallback paths, paste both outcomes in tickets. WebGL loseContext extension exists for testing, production apps rarely call it; this smoke does not simulate GPU reset storms. Stencil buffer defaults when absent break certain clipping shaders, context attributes beyond creation smoke matter for map overlays.
Step-by-step instructions
- Open WebGL Test over HTTPS with hardware acceleration enabled in browser settings. Enable hardware acceleration in browser settings before black canvas tickets cite this smoke.
- Run probes for WebGL1 and WebGL2 noting which contexts succeed or throw. Capture canvas CSS width/height beside context outcome when creation succeeds yet canvas looks black.
- Read vendor and renderer fields understanding privacy reduction may leave them blank or generic. Test locally, not via remote desktop, before GPU hardware RMA from GL failures alone.
- If contexts fail, check GPU blocklists, acceleration toggles, and If you are on remote desktop. Paste WebGL1 and WebGL2 rows separately for map libraries with dual fallback paths.
- Open WebGPU Test when investigating newer Chromium graphics stacks alongside legacy WebGL. Check about:gpu blocklist status when contexts fail on machines that should support GL.
- Paste both WebGL1 and WebGL2 outcomes into tickets, partial support explains many map-library fallback paths. Pair WebGPU Test when investigating Chromium versions shipping both APIs concurrently.
Common problems
Assuming masked renderer strings mean DeviceHub broke misses fingerprinting policy. Remote desktop often breaks GL entirely. Enterprise software rendering policies produce failures on healthy GPUs. Expecting WebGL2 on every mobile browser overstates mobile support. Black canvas after sleep/resume on laptops may need GPU driver restart, not captured by one-shot context creation. PreserveDrawingBuffer defaults affect screenshot workflows, not context creation smoke tested here. Remote desktop breaks GL contexts frequently, retest on local hardware before GPU RMA. GPU blocklists in browser about:gpu pages explain unexpected context failures, link internally when allowed. Intel driver blocklists after sleep/resume on Windows laptops sometimes require closing all GPU tabs before context creation succeeds again, a one-shot smoke after wake may false-negative until the user restarts the browser. ANGLE Metal versus D3D11 backend choice on Windows affects driver bug triage, pair context outcome with about:gpu backend notes.
Privacy explanation
GL parameters render locally. Masked renderer strings reflect browser policy. No camera or microphone permission is requested. Context creation does not access camera or microphone despite GPU naming overlap in vendor strings. PreserveDrawingBuffer defaults affect screenshot workflows, not context creation smoke tested here. Renderer strings may read "Google SwiftShader" on VMs, that indicates software rendering, not personal data leak. Software SwiftShader strings on VMs indicate rendering path, not personal data leaks in renderer field. Pair WebGPU Test when investigating newer stacks alongside legacy WebGL on Chromium. Even when UNMASKED_RENDERER_WEBGL returns a string, treat it as a browser policy snapshot, not grounds to deanonymize users in public bug threads. Floating-point render targets when required by postprocessing shaders need OES_texture_float, context creation smoke is only step one.