Bug 238328

Summary: WebGL2 occlusion query works only with early depth test
Product: WebKit Reporter: Juraj Bleho <bleho>
Component: WebGLAssignee: Nobody <webkit-unassigned>
Status: NEW ---    
Severity: Normal CC: dino, kbr, kkinnunen, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: Safari 15   
Hardware: iPhone / iPad   
OS: iOS 15   

Description Juraj Bleho 2022-03-24 08:58:05 PDT
When fragment shader uses discard or gl_FragDepth the result of gl.ANY_SAMPLES_PASSED query is dependent on original depth of fragment instead of modified value from shader.
Comment 1 Radar WebKit Bug Importer 2022-03-24 16:08:38 PDT
<rdar://problem/90799725>
Comment 2 Kenneth Russell 2022-03-24 16:12:43 PDT
Can you offer a minimal test case showing the problem? https://github.com/KhronosGroup/WebGL/tree/main/sdk/tests/conformance2/query has a couple of tests that could be extended.

Would you consider filing this on http://crbug.com/angleproject ? Ideally this will be fixed upstream in ANGLE first and then rolled into WebKit. The same problem likely happens on macOS, at least on M1 hardware.
Comment 3 Juraj Bleho 2022-03-25 02:28:10 PDT
In test you mentioned https://github.com/KhronosGroup/WebGL/tree/main/sdk/tests/conformance2/query just add discard into fragment shader. All pixel should be discarded and result should be 0 but it is 1