Bug 1368284 - Add SH_ADD_AND_TRUE_TO_LOOP_CONDITION shader compile work around for Intel drivers on MacOSX; r=jgilbert
authorDaosheng Mu <daoshengmu@gmail.com>
Mon, 26 Jun 2017 08:39:30 -0700
changeset 366097 05d88e32a4dbbb616404e8fcaa355807a0eb4c9f
parent 366096 cb289afab5defe1173c9dc383d0e122990b00bca
child 366098 5c41d4abf2841e4dd3985d08025c59038d96fb2b
push id32094
push usercbook@mozilla.com
push dateTue, 27 Jun 2017 08:49:48 +0000
treeherdermozilla-central@bda394665daa [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjgilbert
bugs1368284
milestone56.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1368284 - Add SH_ADD_AND_TRUE_TO_LOOP_CONDITION shader compile work around for Intel drivers on MacOSX; r=jgilbert MozReview-Commit-ID: JMHuZirH4L5
dom/canvas/WebGLShaderValidator.cpp
--- a/dom/canvas/WebGLShaderValidator.cpp
+++ b/dom/canvas/WebGLShaderValidator.cpp
@@ -48,16 +48,21 @@ ChooseValidatorCompileOptions(const ShBu
 #ifdef XP_MACOSX
         // Work around https://bugs.webkit.org/show_bug.cgi?id=124684,
         // https://chromium.googlesource.com/angle/angle/+/5e70cf9d0b1bb
         options |= SH_UNFOLD_SHORT_CIRCUIT;
 
         // Work around that Mac drivers handle struct scopes incorrectly.
         options |= SH_REGENERATE_STRUCT_NAMES;
         options |= SH_INIT_OUTPUT_VARIABLES;
+
+        // Work around that Intel drivers on Mac OSX handle for-loop incorrectly.
+        if (gl->Vendor() == gl::GLVendor::Intel) {
+            options |= SH_ADD_AND_TRUE_TO_LOOP_CONDITION;
+        }
 #endif
 
         if (!gl->IsANGLE() && gl->Vendor() == gl::GLVendor::Intel) {
             // Failures on at least Windows+Intel+OGL on:
             // conformance/glsl/constructors/glsl-construct-mat2.html
             options |= SH_SCALARIZE_VEC_AND_MAT_CONSTRUCTOR_ARGS;
         }
     }