Title: [270096] releases/WebKitGTK/webkit-2.30
Revision
270096
Author
carlo...@webkit.org
Date
2020-11-20 02:39:57 -0800 (Fri, 20 Nov 2020)

Log Message

Merge r269588 - [TextureMapper] The top and left sides of drop-shadow are clipped
https://bugs.webkit.org/show_bug.cgi?id=218647

Reviewed by Don Olmstead.

Source/WebCore:

TextureMapperLayer::computeOverlapRegions incorrectly calculated
the local bounding rect for top and left of outsets.

The drop-shadow was incorrectly blended with the content.

Test: compositing/filters/drop-shadow.html

* platform/graphics/texmap/TextureMapperLayer.cpp:
(WebCore::TextureMapperLayer::computeOverlapRegions): Stopped
using std::max for the left and top of outsets. Stopped taking the
unite with unfilteredTargetRect because outsets are always
positive.
* platform/graphics/texmap/TextureMapperShaderProgram.cpp:
Fixed sourceOver().

LayoutTests:

* compositing/filters/drop-shadow-expected.html: Added.
* compositing/filters/drop-shadow.html: Added.

Modified Paths

Added Paths

Diff

Modified: releases/WebKitGTK/webkit-2.30/LayoutTests/ChangeLog (270095 => 270096)


--- releases/WebKitGTK/webkit-2.30/LayoutTests/ChangeLog	2020-11-20 10:39:38 UTC (rev 270095)
+++ releases/WebKitGTK/webkit-2.30/LayoutTests/ChangeLog	2020-11-20 10:39:57 UTC (rev 270096)
@@ -1,3 +1,13 @@
+2020-11-09  Fujii Hironori  <hironori.fu...@sony.com>
+
+        [TextureMapper] The top and left sides of drop-shadow are clipped
+        https://bugs.webkit.org/show_bug.cgi?id=218647
+
+        Reviewed by Don Olmstead.
+
+        * compositing/filters/drop-shadow-expected.html: Added.
+        * compositing/filters/drop-shadow.html: Added.
+
 2020-11-08  Fujii Hironori  <hironori.fu...@sony.com>
 
         TextureMapperLayer::computeOverlapRegions: Accumulate nested replica transform matrices recursively

Added: releases/WebKitGTK/webkit-2.30/LayoutTests/compositing/filters/drop-shadow-expected.html (0 => 270096)


--- releases/WebKitGTK/webkit-2.30/LayoutTests/compositing/filters/drop-shadow-expected.html	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.30/LayoutTests/compositing/filters/drop-shadow-expected.html	2020-11-20 10:39:57 UTC (rev 270096)
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <style>
+            #x {
+                transform: translate(100px, 100px);
+            }
+            div div {
+                position: absolute;
+                width: 100px;
+                height: 100px;
+                background: green;
+            }
+            .a {
+                transform: translate(-60px, -60px);
+                filter: drop-shadow(-20px -20px 0px blue);
+            }
+            .b {
+                transform: translate(-60px, 60px);
+                filter: drop-shadow(-20px 20px 0px blue);
+            }
+            .c {
+                transform: translate(60px, -60px);
+                filter: drop-shadow(20px -20px 0px blue);
+            }
+            .d {
+                transform: translate(60px, 60px);
+                filter: drop-shadow(20px 20px 0px blue);
+            }
+        </style>
+    </head>
+    <body>
+        <div id=x>
+            <div class=a></div>
+            <div class=b></div>
+            <div class=c></div>
+            <div class=d></div>
+        </div>
+    </body>
+</html>

Added: releases/WebKitGTK/webkit-2.30/LayoutTests/compositing/filters/drop-shadow.html (0 => 270096)


--- releases/WebKitGTK/webkit-2.30/LayoutTests/compositing/filters/drop-shadow.html	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.30/LayoutTests/compositing/filters/drop-shadow.html	2020-11-20 10:39:57 UTC (rev 270096)
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <style>
+            #x {
+                transform: translate(100px, 100px);
+            }
+            div div {
+                position: absolute;
+                width: 100px;
+                height: 100px;
+                background: green;
+                will-change: transform;
+            }
+            .a {
+                transform: translate(-60px, -60px);
+                filter: drop-shadow(-20px -20px 0px blue);
+            }
+            .b {
+                transform: translate(-60px, 60px);
+                filter: drop-shadow(-20px 20px 0px blue);
+            }
+            .c {
+                transform: translate(60px, -60px);
+                filter: drop-shadow(20px -20px 0px blue);
+            }
+            .d {
+                transform: translate(60px, 60px);
+                filter: drop-shadow(20px 20px 0px blue);
+            }
+        </style>
+    </head>
+    <body>
+        <div id=x>
+            <div class=a></div>
+            <div class=b></div>
+            <div class=c></div>
+            <div class=d></div>
+        </div>
+    </body>
+</html>

Modified: releases/WebKitGTK/webkit-2.30/Source/WebCore/ChangeLog (270095 => 270096)


--- releases/WebKitGTK/webkit-2.30/Source/WebCore/ChangeLog	2020-11-20 10:39:38 UTC (rev 270095)
+++ releases/WebKitGTK/webkit-2.30/Source/WebCore/ChangeLog	2020-11-20 10:39:57 UTC (rev 270096)
@@ -1,3 +1,25 @@
+2020-11-09  Fujii Hironori  <hironori.fu...@sony.com>
+
+        [TextureMapper] The top and left sides of drop-shadow are clipped
+        https://bugs.webkit.org/show_bug.cgi?id=218647
+
+        Reviewed by Don Olmstead.
+
+        TextureMapperLayer::computeOverlapRegions incorrectly calculated
+        the local bounding rect for top and left of outsets.
+
+        The drop-shadow was incorrectly blended with the content.
+
+        Test: compositing/filters/drop-shadow.html
+
+        * platform/graphics/texmap/TextureMapperLayer.cpp:
+        (WebCore::TextureMapperLayer::computeOverlapRegions): Stopped
+        using std::max for the left and top of outsets. Stopped taking the
+        unite with unfilteredTargetRect because outsets are always
+        positive.
+        * platform/graphics/texmap/TextureMapperShaderProgram.cpp:
+        Fixed sourceOver().
+
 2020-11-08  Fujii Hironori  <hironori.fu...@sony.com>
 
         TextureMapperLayer::computeOverlapRegions: Accumulate nested replica transform matrices recursively

Modified: releases/WebKitGTK/webkit-2.30/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp (270095 => 270096)


--- releases/WebKitGTK/webkit-2.30/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp	2020-11-20 10:39:38 UTC (rev 270095)
+++ releases/WebKitGTK/webkit-2.30/Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp	2020-11-20 10:39:57 UTC (rev 270096)
@@ -332,10 +332,8 @@
 
     if (m_currentFilters.hasOutsets()) {
         auto outsets = m_currentFilters.outsets();
-        IntRect unfilteredTargetRect(localBoundingRect);
-        localBoundingRect.move(std::max(0, -outsets.left()), std::max(0, -outsets.top()));
+        localBoundingRect.move(-outsets.left(), -outsets.top());
         localBoundingRect.expand(outsets.left() + outsets.right(), outsets.top() + outsets.bottom());
-        localBoundingRect.unite(unfilteredTargetRect);
     }
 
     TransformationMatrix transform(accumulatedReplicaTransform);

Modified: releases/WebKitGTK/webkit-2.30/Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.cpp (270095 => 270096)


--- releases/WebKitGTK/webkit-2.30/Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.cpp	2020-11-20 10:39:38 UTC (rev 270095)
+++ releases/WebKitGTK/webkit-2.30/Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.cpp	2020-11-20 10:39:57 UTC (rev 270096)
@@ -393,7 +393,7 @@
             color *= total;
         }
 
-        vec4 sourceOver(vec4 src, vec4 dst) { return src + dst * (1. - dst.a); }
+        vec4 sourceOver(vec4 src, vec4 dst) { return src + dst * (1. - src.a); }
 
         void applyContentTexture(inout vec4 color, vec2 texCoord)
         {
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to