Bug 204102 - [WebGL] Analyze remaining non texture-to-video ANGLE conformance regressions
Summary: [WebGL] Analyze remaining non texture-to-video ANGLE conformance regressions
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebGL (show other bugs)
Version: Other
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Justin Fan
URL:
Keywords:
Depends on: 204433
Blocks:
  Show dependency treegraph
 
Reported: 2019-11-11 22:15 PST by Justin Fan
Modified: 2020-07-23 11:33 PDT (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Justin Fan 2019-11-11 22:15:21 PST
These tests regress when using ANGLE:

conformance/glsl/misc/non-ascii-comments.vert.html
conformance/ogles/GL/build/build_177_to_178.html
conformance/renderbuffers/framebuffer-object-attachment.html (8 failures -> 23 failures)
conformance/extensions/angle-instanced-arrays.html
conformance/extensions/webgl-depth-texture.html (36 failures -> 76 failures)
conformance/context/context-hidden-alpha.html
Comment 1 Justin Fan 2019-11-20 15:04:02 PST
Updates:

non-ascii-comments.vert is not a real regression when run in browser
build_177_to_178 is addressed by https://chromium-review.googlesource.com/c/chromium/src/+/1842223/2/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc, but requires an ANGLE update
angle-instanced-arrays is not a real regression
Comment 2 Justin Fan 2019-11-20 15:04:06 PST
framebuffer-object-attachment: Several new failures, may not be on ANGLE side though:

1) When trying the framebuffer combination "COLOR_ATTACHMENT0 = RGBA/UNSIGNED_BYTE texture + DEPTH_STENCIL_ATTACHMENT = DEPTH_STENCIL renderbuffer", after the call to gl.framebufferRenderbuffer, status is reported as "FRAMEBUFFER_UNSUPPORTED" instead of "FRAMEBUFFER_COMPLETE".

In ANGLE this validation error finds that the depth/stencil attachment is attached twice and sets "gl::FramebufferState.mWebGLDepthStencilConsistent" to false. This makes sense as for WebGL 1, WebKit currently sets a renderbuffer to both DEPTH_ATTACHMENT and STENCIL_ATTACHMENT when DEPTH_STENCIL_ATTACHMENT is requested. Directly forwarding the DEPTH_STENCIL_ATTACHMENT call to ANGLE does not fix this.

2) Attempting to "Attach depthStencil using DEPTH_STENCIL_ATTACHMENT" with a size of 2x2 results in "FRAMEBUFFER_INCOMPLETE_ATTACHMENT" status instead of expected "FRAMEBUFFER_COMPLETE"

3) Testing "DEPTH_STENCIL vs DEPTH_COMPONENT16 with delete/unbind" are broken

4) gl.readPixels(...) on an FBO with no color attachment is reporting "INVALID_ENUM" instead of "INVALID_OPERATION". This is due to incorrect WebKit-side validation. Removing validation in WebGLRenderingContextBase.cpp for readPixels fixes this.
Comment 3 Justin Fan 2019-11-20 17:40:27 PST
Addressing conformance/extensions/webgl-depth-texture.html in https://bugs.webkit.org/show_bug.cgi?id=204433.
Comment 4 Justin Fan 2019-11-21 17:42:37 PST
context-hidden-alpha.html: gl.blendFunc seems to have the wrong effect with the ANGLE backend. 

On release Safari, `gl.blendFunc(gl.ZERO, gl.DST_ALPHA)` produces the correct result, but fails with ANGLE

With the ANGLE backend, `gl.blendFunc(gl.ZERO, gl.ONE_MINUS_DST_ALPHA)` produces the desired results, but fails in release Safari.

The correct enums are being passed to ANGLE, so it might be something else in the pipeline that's misinterpreting them.
Comment 5 James Darpinian 2019-12-27 15:16:40 PST
I believe these regressions are all fixed now after my recent changes.