Bug 201784 - Layout Test webgl/2.0.0/conformance/glsl/misc/shaders-with-invariance.html is failing since ANGLE roll
Summary: Layout Test webgl/2.0.0/conformance/glsl/misc/shaders-with-invariance.html is...
Alias: None
Product: WebKit
Classification: Unclassified
Component: Tools / Tests (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Dean Jackson
Keywords: InRadar
Depends on:
Reported: 2019-09-13 17:07 PDT by Russell Epstein
Modified: 2019-10-09 10:32 PDT (History)
5 users (show)

See Also:

Patch (4.35 KB, patch)
2019-10-08 17:48 PDT, Dean Jackson
no flags Details | Formatted Diff | Diff
Patch (5.95 KB, patch)
2019-10-09 09:51 PDT, Dean Jackson
graouts: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Russell Epstein 2019-09-13 17:07:22 PDT
The following layout test is failing on iOS:


Probable cause:

Test started failing with r249823
From James Darpinian in associated bug 201156:
"Looks like the shaders-with-invariance.html test is broken. It was updated upstream. WebKit's copy of the WebGL conformance tests should be updated."

Flakiness Dashboard:

Comment 1 Radar WebKit Bug Importer 2019-09-13 17:08:23 PDT
Comment 2 Russell Epstein 2019-09-13 17:13:10 PDT
Marked test as failing in r249860.
Comment 3 Dean Jackson 2019-10-08 14:46:27 PDT
It was the ANGLE update in r249823 that caused this.

The actual change in ANGLE is: https://chromium.googlesource.com/angle/angle/+/b7418a177f70ab736c5d4b1c3b42f9d387244718

although that seems to be an attempt to fix the same failure in Chrome.

Note that our version of this test is out of date.

I'm looking through https://bugs.chromium.org/p/chromium/issues/detail?id=980675 to see how Chrome addressed this.
Comment 4 Dean Jackson 2019-10-08 15:46:33 PDT
The difference is in the translated fragment shader source.

invariant varying mediump vec4 webgl_a78e73e400000001;
void main(){
(gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0));
(gl_FragColor = webgl_a78e73e400000001);

varying mediump vec4 webgl_a78e73e400000001;
void main(){
(gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0));
(gl_FragColor = webgl_a78e73e400000001);

However, my reading of the GLSL specifications says this is ok.

"Only variables output from a shader can be candidates for invariance. This includes user-defined output variables and the built-in output variables. As only outputs can be declared as invariant, an output from one shader stage will still match an input of a subsequent stage without the input being declared as invariant."
Comment 5 Dean Jackson 2019-10-08 17:40:00 PDT
False alarm. I was looking at the wrong file :(
Comment 6 Dean Jackson 2019-10-08 17:48:00 PDT
Created attachment 380486 [details]
Comment 7 Kenneth Russell 2019-10-08 18:30:46 PDT
Ah, relieved to know that the test was out of date and that there wasn't a bug in the version of ANGLE that WebKit rolled forward!
Comment 8 Dean Jackson 2019-10-09 09:51:39 PDT
Created attachment 380538 [details]
Comment 9 Dean Jackson 2019-10-09 10:32:19 PDT
Committed r250917: <https://trac.webkit.org/changeset/250917>