WebGL vertex-uniform limit reported below what the GL compiler actually enforces

br.gpu_uniform_underreport  ·  convicts

browserlayer
coherencecategory

What it catches

The ACTUAL-COMPILE probe — the vertex-uniform analog of br.webgl_maxtexture_unallocatable, and the unspoofable counter to a fork that spoofs MAX_VERTEX_UNIFORM_VECTORS DOWN (to a mobile 256) to beat br.mobile_gpu_uniforms_software. getParameter only changes what JS READS; the GL shader compiler ENFORCES the REAL backend limit. The collector compiles+links a vertex shader that declares and USES (reported + 40) uniform vec4s: a real device — whose reported limit EQUALS what it enforces — REJECTS it (link fails); a claim spoofed BELOW a bigger real backend (256 reported over SwiftShader's real 4096) LINKS, because the compiler honours 4096 regardless of the spoofed getParameter value. So a successful link of an over-the-reported-limit shader proves reported < real — a downward uniform spoof. CONVICTING (w0.8). Scoped to a mobile GPU renderer string with reported vu <= 2048 (a mobile-looking claim; > 2048 is already caught by the value check mobile_gpu_uniforms_software). FP-SAFE: a real mobile GPU reports what it enforces, so the over-claim shader fails to link and it never fires; only reported < real (a spoof) links it; no getParameter/caps patch repairs it (the compiler reaches the real silicon). EXPERIMENTAL. Together with mobile_gpu_uniforms_software this closes the uniform surface both ways: leave vu HIGH (SwiftShader 4096) -> value check fires; spoof vu DOWN -> this compile probe fires. GROUNDED LIVE: KS_RENDERER='Adreno 505' + KS_FAKE_VU=256 (reports vu 256 over the real 4096 backend) FIRES gpu_uniform_underreport while mobile_gpu_uniforms_software goes SILENT (256 <= 2048); the un-spoofed case (vu 4096) does NOT fire this (out of scope) and fires the value check instead.

Signals it reads

browser.gpu_uniform_underreport

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.

← all detections