WebGL MAX_TEXTURE_SIZE claimed but a texture of that dimension cannot be allocated
br.webgl_maxtexture_unallocatable · convicts
What it catches
The UNSPOOFABLE floor beneath the WebGL caps STRING — an ACTUAL allocation probe, the in-sandbox form of the actual-rendering terminus (no external GPU corpus needed). getParameter(MAX_TEXTURE_SIZE) is a value a both-realm source-fork can fake to 16384 (defeating br.mobile_gpu_caps_mismatch + br.webgl_caps_worker_divergence), but gl.texImage2D validates the request against the REAL GL backend, not the JS-visible value: a (claimedMax x 1) texture — one row, ~64KB, so NO memory-pressure confound — SUCCEEDS on silicon that truly supports that dimension and FAILS with INVALID_VALUE on SwiftShader (real 8192) claiming 16384. No getParameter/caps patch in any realm repairs it — the allocation reaches the real driver's limit. GUARDED against a getError patch: the probe first confirms getError is HONEST (a deliberately-invalid getParameter(0x1234) MUST raise INVALID_ENUM) and only trusts the allocation error if so; a fork that silenced getError to hide the failure fails this guard (and a getError that never reports a known-invalid op is itself the tamper). CONVICTING (w0.8): the claimed texture limit contradicts what the hardware can actually allocate. FP-SAFE: an honest device allocates its OWN claimed max (claim == real) without error; only claim > real (a faked cap over a lesser backend) fails; 1-row keeps it memory-trivial on any real GPU. EXPERIMENTAL. GROUNDED LIVE: KS_RENDERER='Adreno 730' + KS_FAKE_MAXTEX (getParameter reports maxTexture 16384 over the real SwiftShader 8192 backend) FIRES webgl_maxtexture_unallocatable — the 16384-wide allocation fails on the real backend though the cap READS 16384; an honest KS_DEVICE='Pixel 5' (claims + allocates 8192) does NOT fire it. This pushes the source-fork from string/value spoofing (cheap, both-realm) to patching the actual rendering pipeline (invasive, breaks real WebGL, and the getError guard catches the naive version).
Signals it reads
browser.webgl_maxtexture_unallocatable
How it fires
present
Bypassed by 10
Frontier evaders that reach the detector uncaught (scored only suspicious, defeating every convicting tell) — this check is not one that stops them. The red-team frontier this detection still has to convict.