Title: [233164] trunk
Revision
233164
Author
grao...@webkit.org
Date
2018-06-25 12:24:44 -0700 (Mon, 25 Jun 2018)

Log Message

REGRESSION: hardware-accelerated animation fails on inline element
https://bugs.webkit.org/show_bug.cgi?id=186981
<rdar://problem/41418697>

Reviewed by Dean Jackson.

Source/WebCore:

Ensure we only queue accelerated actions when we have a renderer so we don't attempt
to start an accelerated animation too soon.

Test: webanimations/opacity-animation-yields-compositing-span.html

* animation/KeyframeEffectReadOnly.cpp:
(WebCore::KeyframeEffectReadOnly::updateAcceleratedAnimationState):

LayoutTests:

* platform/mac/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt:
* platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt:
* webanimations/opacity-animation-yields-compositing-expected.txt:
* webanimations/opacity-animation-yields-compositing-span-expected.txt:
* webanimations/opacity-animation-yields-compositing-span.html: Added.
* webanimations/opacity-animation-yields-compositing.html:

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (233163 => 233164)


--- trunk/LayoutTests/ChangeLog	2018-06-25 19:23:28 UTC (rev 233163)
+++ trunk/LayoutTests/ChangeLog	2018-06-25 19:24:44 UTC (rev 233164)
@@ -1,3 +1,18 @@
+2018-06-25  Antoine Quint  <grao...@apple.com>
+
+        REGRESSION: hardware-accelerated animation fails on inline element
+        https://bugs.webkit.org/show_bug.cgi?id=186981
+        <rdar://problem/41418697>
+
+        Reviewed by Dean Jackson.
+
+        * platform/mac/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt:
+        * platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt:
+        * webanimations/opacity-animation-yields-compositing-expected.txt:
+        * webanimations/opacity-animation-yields-compositing-span-expected.txt:
+        * webanimations/opacity-animation-yields-compositing-span.html: Added.
+        * webanimations/opacity-animation-yields-compositing.html:
+
 2018-06-25  Youenn Fablet  <you...@apple.com>
 
         Add API to control mock media devices

Modified: trunk/LayoutTests/platform/mac/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt (233163 => 233164)


--- trunk/LayoutTests/platform/mac/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt	2018-06-25 19:23:28 UTC (rev 233163)
+++ trunk/LayoutTests/platform/mac/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt	2018-06-25 19:24:44 UTC (rev 233164)
@@ -140,7 +140,7 @@
 FAIL filter: percentage or numeric-specifiable functions (number value) assert_equals: The value should be brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3) at 500ms expected "brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3)" but got "brightness(0.30000000000000004) contrast(0.30000000000000004) grayscale(0.30000000000000004) invert(0.30000000000000004) opacity(0.30000000000000004) saturate(0.30000000000000004) sepia(0.30000000000000004)"
 FAIL filter: percentage or numeric-specifiable functions (percentage value) assert_equals: The value should be brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3) at 500ms expected "brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3)" but got "brightness(0.30000000000000004) contrast(0.30000000000000004) grayscale(0.30000000000000004) invert(0.30000000000000004) opacity(0.30000000000000004) saturate(0.30000000000000004) sepia(0.30000000000000004)"
 FAIL filter: interpolate different length of filter-function-list with function which lacuna value is 1 assert_equals: The value should be grayscale(0.5) brightness(0.5) contrast(0.5) opacity(0.5) saturate(0.5) at 500ms expected "grayscale(0.5) brightness(0.5) contrast(0.5) opacity(0.5) saturate(0.5)" but got "grayscale(1) brightness(0) contrast(0) opacity(0) saturate(0)"
-FAIL filter: interpolate different length of filter-function-list with function which lacuna value is 0 assert_equals: The value should be opacity(0.5) grayscale(0.5) invert(0.5) sepia(0.5) blur(5px) at 500ms expected "opacity(0.5) grayscale(0.5) invert(0.5) sepia(0.5) blur(5px)" but got "opacity(0.25) grayscale(0.75) invert(0.75) sepia(0.75) blur(7.5px)"
+PASS filter: interpolate different length of filter-function-list with function which lacuna value is 0 
 FAIL filter: interpolate different length of filter-function-list with drop-shadow function assert_equals: The value should be blur(5px) drop-shadow(rgba(85, 0, 170, 0.6) 5px 5px 5px at 500ms expected "blur(5px) drop-shadow(rgba(85, 0, 170, 0.6) 5px 5px 5px" but got "blur(10px) drop-shadow(rgba(0, 0, 255, 0.8) 10px 10px 10px)"
 PASS filter: interpolate from none 
 FAIL filter: url function (interpoalte as discrete) assert_equals: The value should be blur(0px) url("#f1") at 499ms expected "blur(0px) url(\"#f1\")" but got "blur(4.989999771118164px) url(\"#f1\")"

Modified: trunk/LayoutTests/platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt (233163 => 233164)


--- trunk/LayoutTests/platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt	2018-06-25 19:23:28 UTC (rev 233163)
+++ trunk/LayoutTests/platform/mac-sierra/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt	2018-06-25 19:24:44 UTC (rev 233164)
@@ -140,7 +140,7 @@
 FAIL filter: percentage or numeric-specifiable functions (number value) assert_equals: The value should be brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3) at 500ms expected "brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3)" but got "brightness(0.30000000000000004) contrast(0.30000000000000004) grayscale(0.30000000000000004) invert(0.30000000000000004) opacity(0.30000000000000004) saturate(0.30000000000000004) sepia(0.30000000000000004)"
 FAIL filter: percentage or numeric-specifiable functions (percentage value) assert_equals: The value should be brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3) at 500ms expected "brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3)" but got "brightness(0.30000000000000004) contrast(0.30000000000000004) grayscale(0.30000000000000004) invert(0.30000000000000004) opacity(0.30000000000000004) saturate(0.30000000000000004) sepia(0.30000000000000004)"
 FAIL filter: interpolate different length of filter-function-list with function which lacuna value is 1 assert_equals: The value should be grayscale(0.5) brightness(0.5) contrast(0.5) opacity(0.5) saturate(0.5) at 500ms expected "grayscale(0.5) brightness(0.5) contrast(0.5) opacity(0.5) saturate(0.5)" but got "grayscale(1) brightness(0) contrast(0) opacity(0) saturate(0)"
-FAIL filter: interpolate different length of filter-function-list with function which lacuna value is 0 assert_equals: The value should be opacity(0.5) grayscale(0.5) invert(0.5) sepia(0.5) blur(5px) at 500ms expected "opacity(0.5) grayscale(0.5) invert(0.5) sepia(0.5) blur(5px)" but got "opacity(0.25) grayscale(0.75) invert(0.75) sepia(0.75) blur(7.5px)"
+PASS filter: interpolate different length of filter-function-list with function which lacuna value is 0 
 FAIL filter: interpolate different length of filter-function-list with drop-shadow function assert_equals: The value should be blur(5px) drop-shadow(rgba(85, 0, 170, 0.6) 5px 5px 5px at 500ms expected "blur(5px) drop-shadow(rgba(85, 0, 170, 0.6) 5px 5px 5px" but got "blur(10px) drop-shadow(rgba(0, 0, 255, 0.8) 10px 10px 10px)"
 PASS filter: interpolate from none 
 FAIL filter: url function (interpoalte as discrete) assert_equals: The value should be blur(0px) url("#f1") at 499ms expected "blur(0px) url(\"#f1\")" but got "blur(4.989999771118164px) url(\"#f1\")"

Modified: trunk/LayoutTests/webanimations/opacity-animation-yields-compositing-expected.txt (233163 => 233164)


--- trunk/LayoutTests/webanimations/opacity-animation-yields-compositing-expected.txt	2018-06-25 19:23:28 UTC (rev 233163)
+++ trunk/LayoutTests/webanimations/opacity-animation-yields-compositing-expected.txt	2018-06-25 19:24:44 UTC (rev 233164)
@@ -9,6 +9,7 @@
         (GraphicsLayer
           (position 8.00 8.00)
           (bounds 100.00 100.00)
+          (opacity 0.50)
           (contentsOpaque 1)
         )
       )

Copied: trunk/LayoutTests/webanimations/opacity-animation-yields-compositing-span-expected.txt (from rev 233163, trunk/LayoutTests/webanimations/opacity-animation-yields-compositing-expected.txt) (0 => 233164)


--- trunk/LayoutTests/webanimations/opacity-animation-yields-compositing-span-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/webanimations/opacity-animation-yields-compositing-span-expected.txt	2018-06-25 19:24:44 UTC (rev 233164)
@@ -0,0 +1,19 @@
+(GraphicsLayer
+  (anchor 0.00 0.00)
+  (bounds 800.00 600.00)
+  (children 1
+    (GraphicsLayer
+      (bounds 800.00 600.00)
+      (contentsOpaque 1)
+      (children 1
+        (GraphicsLayer
+          (position 8.00 8.00)
+          (bounds 25.00 18.00)
+          (opacity 0.50)
+          (drawsContent 1)
+        )
+      )
+    )
+  )
+)
+Foo

Added: trunk/LayoutTests/webanimations/opacity-animation-yields-compositing-span.html (0 => 233164)


--- trunk/LayoutTests/webanimations/opacity-animation-yields-compositing-span.html	                        (rev 0)
+++ trunk/LayoutTests/webanimations/opacity-animation-yields-compositing-span.html	2018-06-25 19:24:44 UTC (rev 233164)
@@ -0,0 +1,16 @@
+<pre id="results"></pre>
+<span id="target">Foo</span>
+<script>
+
+testRunner.waitUntilDone();
+testRunner.dumpAsText();
+
+document.getElementById("target").animate([
+    { opacity: 0.5 },
+    { opacity: 0 }
+], 1000 * 60).ready.then(() => {
+    document.getElementById("results").innerText = internals.layerTreeAsText(document);
+    testRunner.notifyDone();
+});
+
+</script>

Modified: trunk/LayoutTests/webanimations/opacity-animation-yields-compositing.html (233163 => 233164)


--- trunk/LayoutTests/webanimations/opacity-animation-yields-compositing.html	2018-06-25 19:23:28 UTC (rev 233163)
+++ trunk/LayoutTests/webanimations/opacity-animation-yields-compositing.html	2018-06-25 19:24:44 UTC (rev 233164)
@@ -2,12 +2,15 @@
 <div id="target" style="width: 100px; height: 100px; background-color: black;"></div>
 <script>
 
+testRunner.waitUntilDone();
+testRunner.dumpAsText();
+
 document.getElementById("target").animate([
-    { opacity: 1 },
+    { opacity: 0.5 },
     { opacity: 0 }
-], 1000);
+], 1000 * 60).ready.then(() => {
+    document.getElementById("results").innerText = internals.layerTreeAsText(document);
+    testRunner.notifyDone();
+});
 
-testRunner.dumpAsText();
-document.getElementById("results").innerText = internals.layerTreeAsText(document);
-
 </script>

Modified: trunk/Source/WebCore/ChangeLog (233163 => 233164)


--- trunk/Source/WebCore/ChangeLog	2018-06-25 19:23:28 UTC (rev 233163)
+++ trunk/Source/WebCore/ChangeLog	2018-06-25 19:24:44 UTC (rev 233164)
@@ -1,3 +1,19 @@
+2018-06-25  Antoine Quint  <grao...@apple.com>
+
+        REGRESSION: hardware-accelerated animation fails on inline element
+        https://bugs.webkit.org/show_bug.cgi?id=186981
+        <rdar://problem/41418697>
+
+        Reviewed by Dean Jackson.
+
+        Ensure we only queue accelerated actions when we have a renderer so we don't attempt
+        to start an accelerated animation too soon.
+
+        Test: webanimations/opacity-animation-yields-compositing-span.html
+
+        * animation/KeyframeEffectReadOnly.cpp:
+        (WebCore::KeyframeEffectReadOnly::updateAcceleratedAnimationState):
+
 2018-06-25  David Kilzer  <ddkil...@apple.com>
 
         REGRESSION (r233140): v2: Windows build failure due to incomplete DocumentAnimationScheduler type

Modified: trunk/Source/WebCore/animation/KeyframeEffectReadOnly.cpp (233163 => 233164)


--- trunk/Source/WebCore/animation/KeyframeEffectReadOnly.cpp	2018-06-25 19:23:28 UTC (rev 233163)
+++ trunk/Source/WebCore/animation/KeyframeEffectReadOnly.cpp	2018-06-25 19:24:44 UTC (rev 233164)
@@ -1164,6 +1164,9 @@
     if (!m_shouldRunAccelerated)
         return;
 
+    if (!renderer())
+        return;
+
     auto localTime = animation()->currentTime();
 
     // If we don't have a localTime or localTime < 0, we either don't have a start time or we're before the startTime
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to