# webgl-adapter — VALIDATION RESULTS

## Signal hypothesis

Headless Chromium without `--enable-unsafe-swiftshader` falls back to
SwiftShader, a software renderer with vendor="Google Inc. (Google)" or
description="SwiftShader Device".

Real GPU reports vendor="NVIDIA", "AMD", "Intel", "Apple", etc.

## 3-condition results

| Condition | webgpuAvailable | requestAdapter | webglRenderer |
|---|---|---|---|
| Vanilla headless | True | no adapter | ANGLE (Google, Vulkan 1.3.0 (SwiftShader)) |
| CDP-attached | True | no adapter | ANGLE (Google, Vulkan 1.3.0 (SwiftShader)) |
| Headful (Xvfb) | True | no adapter | (not captured — same env) |

**All 3 conditions show SwiftShader.** The legacy WebGL renderer string
shows "SwiftShader Device" clearly. WebGPU API is available but adapter
request returns null.

## Verdict: ✅ ALREADY SHIPPED — confirmed in production

After investigation, the SwiftShader detection is **already deployed** in
the production script via two existing findings:

1. **`software_gpu`** (Phase 1): fires when `isSoftwareRenderer=true` AND
   platform is non-Linux. Catches headless claiming Mac/Windows.
2. **`gpu_ua_mismatch`** (Phase 1): fires when UA claims Mac/Windows but
   SwiftShader detected.

The pattern matched against WebGL renderer:
```js
/swiftshader|llvmpipe|software|mesa|vmware|virtualbox/i
```

This is the **strongest single signal** in detect-bot — it fires on every
headless Chrome, on every browser that uses software rendering, and on
stealth frameworks that miss the WebGL renderer override.

**Verified live at `https://detect-bot.vercel.app/api/script?key=test`:
4 occurrences of `software_gpu|swiftshader` and `gpu_ua_mismatch`.**

## Recommendation

No action needed. The webgl-adapter spike validated an **already-shipped
finding**. The empirical validation confirms the check is robust across
headless configurations.

## Files

- `demo.html` — diagnostic page (informational only)

