Bug 1413269 - Apply REQUIRE_COMPAT_PROFILE flag for WebGL 1 on Intel HD Grahpics 3000 on OSX. - r?jgilbert draft
authorDaosheng Mu <daoshengmu@gmail.com>
Fri, 24 Nov 2017 16:51:37 +0800
changeset 703444 f00ad029aea6b65502377832192f0a087c7a9de4
parent 702882 3f5d48c08903475b5f556f3d5906773978b30489
child 741765 95773cef15ff4e96dd20c777f473ba39cddac6f8
push id90811
push userbmo:dmu@mozilla.com
push dateSat, 25 Nov 2017 17:47:06 +0000
reviewersjgilbert
bugs1413269
milestone59.0a1
Bug 1413269 - Apply REQUIRE_COMPAT_PROFILE flag for WebGL 1 on Intel HD Grahpics 3000 on OSX. - r?jgilbert MozReview-Commit-ID: FZzZpaU9uiv
dom/canvas/WebGLContext.cpp
--- a/dom/canvas/WebGLContext.cpp
+++ b/dom/canvas/WebGLContext.cpp
@@ -707,16 +707,29 @@ WebGLContext::CreateAndInitGL(bool force
     }
 
     if (IsWebGL2()) {
         flags |= gl::CreateContextFlags::PREFER_ES3;
     } else if (!gfxPrefs::WebGL1AllowCoreProfile()) {
         flags |= gl::CreateContextFlags::REQUIRE_COMPAT_PROFILE;
     }
 
+#ifdef XP_MACOSX
+    const nsCOMPtr<nsIGfxInfo> gfxInfo = services::GetGfxInfo();
+    nsString vendorID, deviceID;
+
+    // Avoid crash for Intel HD Graphics 3000 on OSX. (Bug 1413269)
+    gfxInfo->GetAdapterVendorID(vendorID);
+    gfxInfo->GetAdapterDeviceID(deviceID);
+    if (vendorID.EqualsLiteral("0x8086") &&
+        (deviceID.EqualsLiteral("0x0116") || deviceID.EqualsLiteral("0x0126")))
+    {
+        flags |= gl::CreateContextFlags::REQUIRE_COMPAT_PROFILE;
+    }
+#endif
     //////
 
     const bool useEGL = PR_GetEnv("MOZ_WEBGL_FORCE_EGL");
 
 #ifdef XP_WIN
     tryNativeGL = false;
     tryANGLE = true;