Merge inbound to mozilla-central. a=merge
authorGurzau Raul <rgurzau@mozilla.com>
Thu, 07 Feb 2019 07:03:37 +0200
changeset 515406 76e0d806619a5954ac5341f7330fbde3be3d5f4c
parent 515373 d09706f38e5e90e3a7754c48463ea1bd5077ae12 (current diff)
parent 515405 a8efc55933edf1c59a8be081de857129728ca76e (diff)
child 515412 c3402fa5e864f8e5e970eaa2c8de194a6fc45b0c
child 515420 cd7226068bbc06f1a915f1fa749688e6f94492a2
push id10862
push userffxbld-merge
push dateMon, 11 Mar 2019 13:01:11 +0000
treeherdermozilla-beta@a2e7f5c935da [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone67.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
Merge inbound to mozilla-central. a=merge
js/src/frontend/BinASTParser.cpp
js/src/frontend/BinSource.yaml
toolkit/mozapps/extensions/internal/RDFDataSource.jsm
toolkit/mozapps/extensions/internal/RDFManifestConverter.jsm
toolkit/mozapps/extensions/test/xpcshell/data/test_bug542391.rdf
toolkit/mozapps/extensions/test/xpcshell/data/test_install.rdf
toolkit/mozapps/extensions/test/xpcshell/data/test_temporary/bootstrap.js
toolkit/mozapps/extensions/test/xpcshell/data/test_update.rdf
toolkit/mozapps/extensions/test/xpcshell/data/test_updatecheck.rdf
toolkit/mozapps/extensions/test/xpcshell/data/test_updateid.rdf
toolkit/mozapps/extensions/test/xpcshell/test_update_rdf.js
--- a/dom/canvas/WebGLExtensionColorBufferHalfFloat.cpp
+++ b/dom/canvas/WebGLExtensionColorBufferHalfFloat.cpp
@@ -14,26 +14,30 @@ namespace mozilla {
 WebGLExtensionColorBufferHalfFloat::WebGLExtensionColorBufferHalfFloat(
     WebGLContext* webgl)
     : WebGLExtensionBase(webgl) {
   MOZ_ASSERT(IsSupported(webgl), "Don't construct extension if unsupported.");
 
   auto& fua = webgl->mFormatUsage;
 
   auto fnUpdateUsage = [&fua](GLenum sizedFormat,
-                              webgl::EffectiveFormat effFormat) {
+                              webgl::EffectiveFormat effFormat,
+                              const bool renderable) {
     auto usage = fua->EditUsage(effFormat);
-    usage->SetRenderable();
-    fua->AllowRBFormat(sizedFormat, usage);
+    if (renderable) {
+      usage->SetRenderable();
+    }
+    fua->AllowRBFormat(sizedFormat, usage, renderable);
   };
 
-#define FOO(x) fnUpdateUsage(LOCAL_GL_##x, webgl::EffectiveFormat::x)
+#define FOO(x, y) fnUpdateUsage(LOCAL_GL_##x, webgl::EffectiveFormat::x, y)
 
-  FOO(RGBA16F);
-  FOO(RGB16F);
+  FOO(RGBA16F, true);
+  FOO(RGB16F, false);  // It's not required, thus not portable. (Also there's a
+                       // wicked driver bug on Mac+Intel)
 
 #undef FOO
 }
 
 WebGLExtensionColorBufferHalfFloat::~WebGLExtensionColorBufferHalfFloat() {}
 
 bool WebGLExtensionColorBufferHalfFloat::IsSupported(
     const WebGLContext* webgl) {
--- a/dom/canvas/WebGLFormats.cpp
+++ b/dom/canvas/WebGLFormats.cpp
@@ -1113,20 +1113,21 @@ bool FormatUsageAuthority::AreUnpackEnum
                                                GLenum unpackType) const {
   return (Contains(mValidTexUnpackFormats, unpackFormat) &&
           Contains(mValidTexUnpackTypes, unpackType));
 }
 
 ////////////////////
 
 void FormatUsageAuthority::AllowRBFormat(GLenum sizedFormat,
-                                         const FormatUsageInfo* usage) {
+                                         const FormatUsageInfo* usage,
+                                         const bool expectRenderable) {
   MOZ_ASSERT(!usage->format->compression);
   MOZ_ASSERT(usage->format->sizedFormat);
-  MOZ_ASSERT(usage->IsRenderable());
+  MOZ_ASSERT(usage->IsRenderable() || !expectRenderable);
 
   AlwaysInsert(mRBFormatMap, sizedFormat, usage);
 }
 
 void FormatUsageAuthority::AllowSizedTexFormat(GLenum sizedFormat,
                                                const FormatUsageInfo* usage) {
   if (usage->format->compression) {
     MOZ_ASSERT(usage->isFilterable, "Compressed formats should be filterable.");
--- a/dom/canvas/WebGLFormats.h
+++ b/dom/canvas/WebGLFormats.h
@@ -371,17 +371,18 @@ class FormatUsageAuthority {
   const FormatUsageInfo* GetUsage(EffectiveFormat format) const;
 
   void AddTexUnpack(FormatUsageInfo* usage, const PackingInfo& pi,
                     const DriverUnpackInfo& dui);
 
   bool IsInternalFormatEnumValid(GLenum internalFormat) const;
   bool AreUnpackEnumsValid(GLenum unpackFormat, GLenum unpackType) const;
 
-  void AllowRBFormat(GLenum sizedFormat, const FormatUsageInfo* usage);
+  void AllowRBFormat(GLenum sizedFormat, const FormatUsageInfo* usage,
+                     bool expectRenderable = true);
   void AllowSizedTexFormat(GLenum sizedFormat, const FormatUsageInfo* usage);
   void AllowUnsizedTexFormat(const PackingInfo& pi,
                              const FormatUsageInfo* usage);
 
   const FormatUsageInfo* GetRBUsage(GLenum sizedFormat) const;
   const FormatUsageInfo* GetSizedTexUsage(GLenum sizedFormat) const;
   const FormatUsageInfo* GetUnsizedTexUsage(const PackingInfo& pi) const;
 };
new file mode 100644
--- /dev/null
+++ b/gfx/tests/reftest/1523776-ref.html
@@ -0,0 +1,13 @@
+<style>
+html, body {
+    margin: 0;
+}
+</style>
+  <div style="filter: drop-shadow(50px 50px 20px red)">
+    <div style="width:256px; height:256px; border-radius:16px; overflow:hidden">
+      <div style="width:256px; height:256px; background-color:green;"></div>
+    </div>
+  </div>
+<!-- add white divs on top to simulate the clip from the test file -->
+<div style="background-color: white; position:absolute; left: 0; top: 0; width: 100px; height: 700px"></div>
+<div style="background-color: white; position:absolute; left: 0; top: 0; width: 700px; height: 100px"></div>
new file mode 100644
--- /dev/null
+++ b/gfx/tests/reftest/1523776.html
@@ -0,0 +1,12 @@
+<style>
+html, body {
+    margin: 0;
+}
+</style>
+<div style="clip: rect(100px,1000px,1000px,100px); position:absolute">
+  <div style="filter: drop-shadow(50px 50px 20px red)">
+    <div style="width:256px; height:256px; border-radius:16px; overflow:hidden">
+      <div style="width:256px; height:256px; background-color:green;"></div>
+    </div>
+  </div>
+</div>
--- a/gfx/tests/reftest/reftest.list
+++ b/gfx/tests/reftest/reftest.list
@@ -15,8 +15,9 @@ fuzzy(0-100,0-30) == 1149923.html 114992
 == 1451168.html 1451168-ref.html
 == 1461313.html 1461313-ref.html
 fuzzy(5-32,21908-26621) fuzzy-if(webrender,0-9,0-100) == 1463802.html 1463802-ref.html
 fuzzy(0-11,0-4) == 1474722.html 1474722-ref.html
 == 1501195.html 1501195-ref.html
 == 1519754.html 1519754-ref.html
 skip-if(!asyncPan) == 1524261.html 1524261-ref.html
 fuzzy-if(webrender,14-14,44-44) == 1524353.html 1524353-ref.html
+fuzzy-if(webrender,6-7,34741-36908) == 1523776.html 1523776-ref.html
--- a/js/src/builtin/Promise.h
+++ b/js/src/builtin/Promise.h
@@ -543,19 +543,19 @@ class OffThreadPromiseRuntimeState {
 
   // All following fields are mutated by any thread and are guarded by mutex_.
   Mutex mutex_;
 
   // A set of all OffThreadPromiseTasks that have successfully called 'init'.
   // OffThreadPromiseTask's destructor removes them from the set.
   OffThreadPromiseTaskSet live_;
 
-  // The allCancelled_ condition is waited on and notified during engine shutdown,
-  // communicating when all off-thread tasks in live_ are safe to be destroyed
-  // from the (shutting down) main thread. This condition is met when
+  // The allCancelled_ condition is waited on and notified during engine
+  // shutdown, communicating when all off-thread tasks in live_ are safe to be
+  // destroyed from the (shutting down) main thread. This condition is met when
   // live_.count() == numCanceled_ where "canceled" means "the
   // DispatchToEventLoopCallback failed after this task finished execution".
   ConditionVariable allCanceled_;
   size_t numCanceled_;
 
   // The queue of JS::Dispatchables used by the DispatchToEventLoopCallback that
   // calling js::UseInternalJobQueues installs.
   DispatchableFifo internalDispatchQueue_;