[Radar 28901793]
On macOS machines with an Intel GPU, when glDrawBuffers has set all buffers to GL_NONE to discard all fragment shader output data, an output variable in the shader with its value being set from a constant like “my_FragColor = vec4(1, 0, 0, 1);”, will trigger the gl context lost error (likely a GPU sub-process crash). This won’t happen if the variable assigns its value from an uniform variable. This bug causes failures of draw-buffers.html's tests in the WebGL 2.0 conformance suite.
This bug does not occur on other GPU types on macOS, nor on other operating systems.
Steps to reproduce
1. Download Chrome Canary and run from the Terminal:
/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary --enable-unsafe-es3-apis
2. Check out the KhronosGroup/WebGL repository:
git clone https://github.com/KhronosGroup/WebGL.git
3. Launch an HTTP server against that repository:
cd WebGL
python -m SimpleHTTPServer
4. Navigate the browser to the test cases:
http://localhost:8000/sdk/tests/conformance2/rendering/draw-buffers.html?webglVersion=2&quiet=0
This test is also available online at:
https://www.khronos.org/registry/webgl/sdk/tests/conformance2/rendering/draw-buffers.html?webglVersion=2&quiet=0
Expected Results
Expect all tests to pass, as they do on other operating systems and on other GPU types on macOS.
Actual Results
The test case “test that NONE draws nothing” fails and its side-effect brings more failures to other innocent cases.
OS X Build/Version
macOS Sierra (10.12)
MacBook-Early 2016-Intel HD Graphics 515(DEVICE=0x191e)
Notes:
NOT reproducible on MacBook Pro-Mid 2015-Intel Iris Pro Graphics 5200
Comment 1 by jie.a.c...@intel.com
, Oct 24 2016