mc-imperial / shader-compiler-bugs

A collection of shader compiler bugs.
MIT License
49 stars 9 forks source link

Adding dead discard leads to black image #69

Open afd opened 7 years ago

afd commented 7 years ago

[Shaders, screenshots, error log, reproduction steps, platform info, etc.] [ZIP]

Recipient:

recipient image

Variant:

variant image

WebGL viewer for recipient:

http://htmlpreview.github.io/?https://github.com/mc-imperial/shader-compiler-bugs/blob/master/angle/wrong-images/squares/webgl_viewer_recipient.html

WebGL viewer for variant:

http://htmlpreview.github.io/?https://github.com/mc-imperial/shader-compiler-bugs/blob/master/angle/wrong-images/squares/webgl_viewer_variant.html

The only difference between the shaders is that in the variant we add:

        if(((injectionSwitch.x > injectionSwitch.y)))
            {
                discard;
            }

Because injectionSwitch = (0.0, 1.0) the discard should be unreachable.

We suspect this is an ANGLE or Direct3D bug, because it manifests on two systems with Intel and NVIDIA GPU drivers respectively, with Chrome version 57.0.2987.110 (64-bit), and also in Firefox.

0152la commented 7 years ago

Did not observe differences on (none of the following use ANGLE): Chrome and Firefox on Archlinux running Mesa 13.0.3 on an Intel i7 Firefox on Ubuntu 16.04.2 running Mesa 17.0.1 on an AMD R9 *Chrome and Firefox on Ubuntu 16.10 running Nvidia proprietary drivers 375.39 on a GTX980M

Observed a linking failure on Edge on Windows 10 running Radeon 17.2.1 on an AMD R9 Fury. On the same machine, in Chrome (running ANGLE), observed the black box variant.

afd commented 7 years ago

Reported to ANGLE (though the Edge linking error suggests that it might be a Direct3D issue): https://bugs.chromium.org/p/angleproject/issues/detail?id=1949

afd commented 7 years ago

The issue was confirmed.