Title: [225020] trunk
Revision
225020
Author
[email protected]
Date
2017-11-18 14:06:40 -0800 (Sat, 18 Nov 2017)

Log Message

More FETurbulence cleanup
https://bugs.webkit.org/show_bug.cgi?id=179863

Reviewed by Zalan Bujtas.

Source/WebCore:

Hoist computation of initial StitchData up to be done once per filter,
not once per pixel. Passing initial StitchData by value to calculateTurbulenceValueForPoint()
ensures that each pixel gets the initial state.

Also, adjusted baseFrequencyX and baseFrequencyY can be computed just once at the start,
and passed through via PaintingData.

Change enum TurbulenceType to be an enum class (requiring casts in a couple of places)
and undo the capitalization of the values.

Fix spelling of TURBULANCE -> TURBULENCE in test output.

* platform/graphics/filters/FETurbulence.cpp:
(WebCore::FETurbulence::computeStitching const):
(WebCore::FETurbulence::calculateTurbulenceValueForPoint const):
(WebCore::FETurbulence::fillRegion const):
(WebCore::FETurbulence::fillRegionWorker):
(WebCore::FETurbulence::platformApplySoftware):
(WebCore::operator<<):
* platform/graphics/filters/FETurbulence.h:
(WebCore::FETurbulence::PaintingData::PaintingData):
(WebCore::FETurbulence::StitchData::StitchData): Deleted.
* svg/SVGAnimatedEnumeration.cpp:
(WebCore::enumerationValueForTargetAttribute):
* svg/SVGFETurbulenceElement.cpp:
(WebCore::SVGFETurbulenceElement::SVGFETurbulenceElement):
(WebCore::SVGFETurbulenceElement::parseAttribute):
* svg/SVGFETurbulenceElement.h:
(WebCore::SVGPropertyTraits<TurbulenceType>::highestEnumValue):
(WebCore::SVGPropertyTraits<TurbulenceType>::toString):
(WebCore::SVGPropertyTraits<TurbulenceType>::fromString):

LayoutTests:

Fix spelling of TURBULANCE -> TURBULENCE.

* platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt:
* platform/gtk/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt:
* platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt:
* platform/ios/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt:
* platform/ios/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt:
* platform/ios/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt:
* platform/mac/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt:
* platform/win/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt:
* platform/win/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt:
* platform/win/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt:
* platform/wpe/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt:
* platform/wpe/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt:
* platform/wpe/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt:
* svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt:
* svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt:
* svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (225019 => 225020)


--- trunk/LayoutTests/ChangeLog	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/LayoutTests/ChangeLog	2017-11-18 22:06:40 UTC (rev 225020)
@@ -1,5 +1,33 @@
 2017-11-18  Simon Fraser  <[email protected]>
 
+        More FETurbulence cleanup
+        https://bugs.webkit.org/show_bug.cgi?id=179863
+
+        Reviewed by Zalan Bujtas.
+        
+        Fix spelling of TURBULANCE -> TURBULENCE.
+
+        * platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt:
+        * platform/gtk/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt:
+        * platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt:
+        * platform/ios/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt:
+        * platform/ios/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt:
+        * platform/ios/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt:
+        * platform/win/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt:
+        * platform/win/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt:
+        * platform/win/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt:
+        * platform/wpe/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt:
+        * platform/wpe/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt:
+        * platform/wpe/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt:
+        * svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt:
+        * svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt:
+        * svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt:
+
+2017-11-18  Simon Fraser  <[email protected]>
+
         feTurbulence with stitchTiles is broken
         https://bugs.webkit.org/show_bug.cgi?id=179862
 

Modified: trunk/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt (225019 => 225020)


--- trunk/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt	2017-11-18 22:06:40 UTC (rev 225020)
@@ -6,11 +6,11 @@
       RenderSVGContainer {g} at (25,25) size 400x274
         RenderSVGHiddenContainer {defs} at (0,0) size 0x0
           RenderSVGResourceFilter {filter} [id="Turb1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feTurbulence type="TURBULANCE" baseFrequency="0.05, 0.05" seed="0.00" numOctaves="2" stitchTiles="0"]
+            [feTurbulence type="TURBULENCE" baseFrequency="0.05, 0.05" seed="0.00" numOctaves="2" stitchTiles="0"]
           RenderSVGResourceFilter {filter} [id="Turb2"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feTurbulence type="TURBULANCE" baseFrequency="0.10, 0.10" seed="0.00" numOctaves="2" stitchTiles="0"]
+            [feTurbulence type="TURBULENCE" baseFrequency="0.10, 0.10" seed="0.00" numOctaves="2" stitchTiles="0"]
           RenderSVGResourceFilter {filter} [id="Turb3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feTurbulence type="TURBULANCE" baseFrequency="0.05, 0.05" seed="0.00" numOctaves="8" stitchTiles="0"]
+            [feTurbulence type="TURBULENCE" baseFrequency="0.05, 0.05" seed="0.00" numOctaves="8" stitchTiles="0"]
           RenderSVGResourceFilter {filter} [id="Turb4"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
             [feTurbulence type="NOISE" baseFrequency="0.10, 0.10" seed="0.00" numOctaves="4" stitchTiles="0"]
           RenderSVGResourceFilter {filter} [id="Turb5"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]

Modified: trunk/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt (225019 => 225020)


--- trunk/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt	2017-11-18 22:06:40 UTC (rev 225020)
@@ -6,27 +6,27 @@
     RenderSVGContainer {g} at (59,28) size 362x268
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
         RenderSVGResourceFilter {filter} [id="turbneg1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-0.20" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-0.20" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg2"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-0.50" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-0.50" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-0.80" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-0.80" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbzero"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="0.00" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="0.00" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbpos1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="0.20" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="0.20" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbpos2"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="0.50" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="0.50" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbpos3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="1.50" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="1.50" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg4"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-1.00" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-1.00" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg5"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-1.50" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-1.50" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg6"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-2.00" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-2.00" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg7"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-2.60" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-2.60" numOctaves="1" stitchTiles="0"]
       RenderSVGText {text} at (142,28) size 196x25 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 196x24
           chunk 1 (middle anchor) text run 1 at (142.00,48.00) startOffset 0 endOffset 17 width 196.00: "feTurbulence seed"

Modified: trunk/LayoutTests/platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt (225019 => 225020)


--- trunk/LayoutTests/platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/LayoutTests/platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt	2017-11-18 22:06:40 UTC (rev 225020)
@@ -66,7 +66,7 @@
         RenderSVGResourceMarker {marker} [id="marker"] [markerUnits=strokeWidth] [ref at (0,0)] [angle=60.00]
         RenderSVGViewportContainer {svg} at (0,0) size 0x0
         RenderSVGResourceFilter {filter} [id=""] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="4.00, 5.00" seed="0.00" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="4.00, 5.00" seed="0.00" numOctaves="1" stitchTiles="0"]
     RenderSVGContainer {g} at (10,314) size 231x33
       RenderSVGText {text} at (10,314) size 231x33 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 231x32

Modified: trunk/LayoutTests/platform/ios/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt (225019 => 225020)


--- trunk/LayoutTests/platform/ios/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/LayoutTests/platform/ios/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt	2017-11-18 22:06:40 UTC (rev 225020)
@@ -6,11 +6,11 @@
       RenderSVGContainer {g} at (21,25) size 408x274
         RenderSVGHiddenContainer {defs} at (0,0) size 0x0
           RenderSVGResourceFilter {filter} [id="Turb1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feTurbulence type="TURBULANCE" baseFrequency="0.05, 0.05" seed="0.00" numOctaves="2" stitchTiles="0"]
+            [feTurbulence type="TURBULENCE" baseFrequency="0.05, 0.05" seed="0.00" numOctaves="2" stitchTiles="0"]
           RenderSVGResourceFilter {filter} [id="Turb2"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feTurbulence type="TURBULANCE" baseFrequency="0.10, 0.10" seed="0.00" numOctaves="2" stitchTiles="0"]
+            [feTurbulence type="TURBULENCE" baseFrequency="0.10, 0.10" seed="0.00" numOctaves="2" stitchTiles="0"]
           RenderSVGResourceFilter {filter} [id="Turb3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feTurbulence type="TURBULANCE" baseFrequency="0.05, 0.05" seed="0.00" numOctaves="8" stitchTiles="0"]
+            [feTurbulence type="TURBULENCE" baseFrequency="0.05, 0.05" seed="0.00" numOctaves="8" stitchTiles="0"]
           RenderSVGResourceFilter {filter} [id="Turb4"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
             [feTurbulence type="NOISE" baseFrequency="0.10, 0.10" seed="0.00" numOctaves="4" stitchTiles="0"]
           RenderSVGResourceFilter {filter} [id="Turb5"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]

Modified: trunk/LayoutTests/platform/ios/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt (225019 => 225020)


--- trunk/LayoutTests/platform/ios/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/LayoutTests/platform/ios/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt	2017-11-18 22:06:40 UTC (rev 225020)
@@ -6,27 +6,27 @@
     RenderSVGContainer {g} at (59,28) size 362x268
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
         RenderSVGResourceFilter {filter} [id="turbneg1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-0.20" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-0.20" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg2"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-0.50" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-0.50" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-0.80" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-0.80" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbzero"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="0.00" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="0.00" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbpos1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="0.20" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="0.20" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbpos2"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="0.50" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="0.50" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbpos3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="1.50" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="1.50" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg4"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-1.00" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-1.00" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg5"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-1.50" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-1.50" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg6"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-2.00" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-2.00" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg7"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-2.60" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-2.60" numOctaves="1" stitchTiles="0"]
       RenderSVGText {text} at (140,28) size 200x25 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 199x25
           chunk 1 (middle anchor) text run 1 at (140.62,48.00) startOffset 0 endOffset 17 width 198.77: "feTurbulence seed"

Modified: trunk/LayoutTests/platform/ios/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt (225019 => 225020)


--- trunk/LayoutTests/platform/ios/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/LayoutTests/platform/ios/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt	2017-11-18 22:06:40 UTC (rev 225020)
@@ -66,7 +66,7 @@
         RenderSVGResourceMarker {marker} [id="marker"] [markerUnits=strokeWidth] [ref at (0,0)] [angle=60.00]
         RenderSVGViewportContainer {svg} at (0,0) size 0x0
         RenderSVGResourceFilter {filter} [id=""] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="4.00, 5.00" seed="0.00" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="4.00, 5.00" seed="0.00" numOctaves="1" stitchTiles="0"]
     RenderSVGContainer {g} at (10,314) size 230x33
       RenderSVGText {text} at (10,314) size 230x33 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 230x33

Modified: trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt (225019 => 225020)


--- trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt	2017-11-18 22:06:40 UTC (rev 225020)
@@ -6,11 +6,11 @@
       RenderSVGContainer {g} at (21,25) size 408x274
         RenderSVGHiddenContainer {defs} at (0,0) size 0x0
           RenderSVGResourceFilter {filter} [id="Turb1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feTurbulence type="TURBULANCE" baseFrequency="0.05, 0.05" seed="0.00" numOctaves="2" stitchTiles="0"]
+            [feTurbulence type="TURBULENCE" baseFrequency="0.05, 0.05" seed="0.00" numOctaves="2" stitchTiles="0"]
           RenderSVGResourceFilter {filter} [id="Turb2"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feTurbulence type="TURBULANCE" baseFrequency="0.10, 0.10" seed="0.00" numOctaves="2" stitchTiles="0"]
+            [feTurbulence type="TURBULENCE" baseFrequency="0.10, 0.10" seed="0.00" numOctaves="2" stitchTiles="0"]
           RenderSVGResourceFilter {filter} [id="Turb3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feTurbulence type="TURBULANCE" baseFrequency="0.05, 0.05" seed="0.00" numOctaves="8" stitchTiles="0"]
+            [feTurbulence type="TURBULENCE" baseFrequency="0.05, 0.05" seed="0.00" numOctaves="8" stitchTiles="0"]
           RenderSVGResourceFilter {filter} [id="Turb4"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
             [feTurbulence type="NOISE" baseFrequency="0.10, 0.10" seed="0.00" numOctaves="4" stitchTiles="0"]
           RenderSVGResourceFilter {filter} [id="Turb5"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]

Modified: trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt (225019 => 225020)


--- trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt	2017-11-18 22:06:40 UTC (rev 225020)
@@ -6,27 +6,27 @@
     RenderSVGContainer {g} at (59,28) size 362x268
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
         RenderSVGResourceFilter {filter} [id="turbneg1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-0.20" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-0.20" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg2"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-0.50" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-0.50" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-0.80" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-0.80" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbzero"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="0.00" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="0.00" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbpos1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="0.20" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="0.20" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbpos2"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="0.50" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="0.50" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbpos3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="1.50" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="1.50" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg4"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-1.00" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-1.00" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg5"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-1.50" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-1.50" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg6"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-2.00" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-2.00" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg7"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-2.60" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-2.60" numOctaves="1" stitchTiles="0"]
       RenderSVGText {text} at (140,28) size 200x25 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 199x25
           chunk 1 (middle anchor) text run 1 at (140.62,48.00) startOffset 0 endOffset 17 width 198.77: "feTurbulence seed"

Modified: trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt (225019 => 225020)


--- trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/LayoutTests/platform/mac/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt	2017-11-18 22:06:40 UTC (rev 225020)
@@ -66,7 +66,7 @@
         RenderSVGResourceMarker {marker} [id="marker"] [markerUnits=strokeWidth] [ref at (0,0)] [angle=60.00]
         RenderSVGViewportContainer {svg} at (0,0) size 0x0
         RenderSVGResourceFilter {filter} [id=""] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="4.00, 5.00" seed="0.00" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="4.00, 5.00" seed="0.00" numOctaves="1" stitchTiles="0"]
     RenderSVGContainer {g} at (10,314) size 230x33
       RenderSVGText {text} at (10,314) size 230x33 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 230x33

Modified: trunk/LayoutTests/platform/win/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt (225019 => 225020)


--- trunk/LayoutTests/platform/win/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/LayoutTests/platform/win/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt	2017-11-18 22:06:40 UTC (rev 225020)
@@ -6,11 +6,11 @@
       RenderSVGContainer {g} at (23,25) size 404x274
         RenderSVGHiddenContainer {defs} at (0,0) size 0x0
           RenderSVGResourceFilter {filter} [id="Turb1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feTurbulence type="TURBULANCE" baseFrequency="0.05, 0.05" seed="0.00" numOctaves="2" stitchTiles="0"]
+            [feTurbulence type="TURBULENCE" baseFrequency="0.05, 0.05" seed="0.00" numOctaves="2" stitchTiles="0"]
           RenderSVGResourceFilter {filter} [id="Turb2"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feTurbulence type="TURBULANCE" baseFrequency="0.10, 0.10" seed="0.00" numOctaves="2" stitchTiles="0"]
+            [feTurbulence type="TURBULENCE" baseFrequency="0.10, 0.10" seed="0.00" numOctaves="2" stitchTiles="0"]
           RenderSVGResourceFilter {filter} [id="Turb3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feTurbulence type="TURBULANCE" baseFrequency="0.05, 0.05" seed="0.00" numOctaves="8" stitchTiles="0"]
+            [feTurbulence type="TURBULENCE" baseFrequency="0.05, 0.05" seed="0.00" numOctaves="8" stitchTiles="0"]
           RenderSVGResourceFilter {filter} [id="Turb4"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
             [feTurbulence type="NOISE" baseFrequency="0.10, 0.10" seed="0.00" numOctaves="4" stitchTiles="0"]
           RenderSVGResourceFilter {filter} [id="Turb5"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]

Modified: trunk/LayoutTests/platform/win/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt (225019 => 225020)


--- trunk/LayoutTests/platform/win/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/LayoutTests/platform/win/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt	2017-11-18 22:06:40 UTC (rev 225020)
@@ -6,27 +6,27 @@
     RenderSVGContainer {g} at (59,28) size 362x268
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
         RenderSVGResourceFilter {filter} [id="turbneg1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-0.20" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-0.20" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg2"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-0.50" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-0.50" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-0.80" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-0.80" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbzero"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="0.00" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="0.00" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbpos1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="0.20" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="0.20" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbpos2"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="0.50" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="0.50" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbpos3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="1.50" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="1.50" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg4"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-1.00" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-1.00" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg5"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-1.50" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-1.50" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg6"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-2.00" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-2.00" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg7"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-2.60" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-2.60" numOctaves="1" stitchTiles="0"]
       RenderSVGText {text} at (142,28) size 196x25 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 196x24
           chunk 1 (middle anchor) text run 1 at (142.00,48.00) startOffset 0 endOffset 17 width 196.00: "feTurbulence seed"

Modified: trunk/LayoutTests/platform/win/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt (225019 => 225020)


--- trunk/LayoutTests/platform/win/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/LayoutTests/platform/win/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt	2017-11-18 22:06:40 UTC (rev 225020)
@@ -66,7 +66,7 @@
         RenderSVGResourceMarker {marker} [id="marker"] [markerUnits=strokeWidth] [ref at (0,0)] [angle=60.00]
         RenderSVGViewportContainer {svg} at (0,0) size 0x0
         RenderSVGResourceFilter {filter} [id=""] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="4.00, 5.00" seed="0.00" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="4.00, 5.00" seed="0.00" numOctaves="1" stitchTiles="0"]
     RenderSVGContainer {g} at (10,314) size 231x33
       RenderSVGText {text} at (10,314) size 231x33 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 231x32

Modified: trunk/LayoutTests/platform/wpe/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt (225019 => 225020)


--- trunk/LayoutTests/platform/wpe/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/LayoutTests/platform/wpe/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt	2017-11-18 22:06:40 UTC (rev 225020)
@@ -6,11 +6,11 @@
       RenderSVGContainer {g} at (41,41) size 668x457
         RenderSVGHiddenContainer {defs} at (0,0) size 0x0
           RenderSVGResourceFilter {filter} [id="Turb1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feTurbulence type="TURBULANCE" baseFrequency="0.05, 0.05" seed="0.00" numOctaves="2" stitchTiles="0"]
+            [feTurbulence type="TURBULENCE" baseFrequency="0.05, 0.05" seed="0.00" numOctaves="2" stitchTiles="0"]
           RenderSVGResourceFilter {filter} [id="Turb2"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feTurbulence type="TURBULANCE" baseFrequency="0.10, 0.10" seed="0.00" numOctaves="2" stitchTiles="0"]
+            [feTurbulence type="TURBULENCE" baseFrequency="0.10, 0.10" seed="0.00" numOctaves="2" stitchTiles="0"]
           RenderSVGResourceFilter {filter} [id="Turb3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feTurbulence type="TURBULANCE" baseFrequency="0.05, 0.05" seed="0.00" numOctaves="8" stitchTiles="0"]
+            [feTurbulence type="TURBULENCE" baseFrequency="0.05, 0.05" seed="0.00" numOctaves="8" stitchTiles="0"]
           RenderSVGResourceFilter {filter} [id="Turb4"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
             [feTurbulence type="NOISE" baseFrequency="0.10, 0.10" seed="0.00" numOctaves="4" stitchTiles="0"]
           RenderSVGResourceFilter {filter} [id="Turb5"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]

Modified: trunk/LayoutTests/platform/wpe/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt (225019 => 225020)


--- trunk/LayoutTests/platform/wpe/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/LayoutTests/platform/wpe/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt	2017-11-18 22:06:40 UTC (rev 225020)
@@ -6,27 +6,27 @@
     RenderSVGContainer {g} at (99,47) size 602x446
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
         RenderSVGResourceFilter {filter} [id="turbneg1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-0.20" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-0.20" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg2"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-0.50" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-0.50" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-0.80" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-0.80" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbzero"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="0.00" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="0.00" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbpos1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="0.20" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="0.20" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbpos2"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="0.50" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="0.50" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbpos3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="1.50" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="1.50" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg4"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-1.00" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-1.00" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg5"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-1.50" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-1.50" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg6"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-2.00" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-2.00" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg7"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-2.60" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-2.60" numOctaves="1" stitchTiles="0"]
       RenderSVGText {text} at (141,28) size 198x25 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 197x24
           chunk 1 (middle anchor) text run 1 at (141.60,48.00) startOffset 0 endOffset 17 width 196.80: "feTurbulence seed"

Modified: trunk/LayoutTests/platform/wpe/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt (225019 => 225020)


--- trunk/LayoutTests/platform/wpe/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/LayoutTests/platform/wpe/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt	2017-11-18 22:06:40 UTC (rev 225020)
@@ -66,7 +66,7 @@
         RenderSVGResourceMarker {marker} [id="marker"] [markerUnits=strokeWidth] [ref at (0,0)] [angle=60.00]
         RenderSVGViewportContainer {svg} at (0,0) size 0x0
         RenderSVGResourceFilter {filter} [id=""] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="4.00, 5.00" seed="0.00" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="4.00, 5.00" seed="0.00" numOctaves="1" stitchTiles="0"]
     RenderSVGContainer {g} at (16,524) size 380x54
       RenderSVGText {text} at (10,314) size 228x33 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 228x32

Modified: trunk/LayoutTests/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt (225019 => 225020)


--- trunk/LayoutTests/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/LayoutTests/svg/W3C-SVG-1.1/filters-turb-01-f-expected.txt	2017-11-18 22:06:40 UTC (rev 225020)
@@ -6,11 +6,11 @@
       RenderSVGContainer {g} at (25,25) size 400x273
         RenderSVGHiddenContainer {defs} at (0,0) size 0x0
           RenderSVGResourceFilter {filter} [id="Turb1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feTurbulence type="TURBULANCE" baseFrequency="0.05, 0.05" seed="0.00" numOctaves="2" stitchTiles="0"]
+            [feTurbulence type="TURBULENCE" baseFrequency="0.05, 0.05" seed="0.00" numOctaves="2" stitchTiles="0"]
           RenderSVGResourceFilter {filter} [id="Turb2"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feTurbulence type="TURBULANCE" baseFrequency="0.10, 0.10" seed="0.00" numOctaves="2" stitchTiles="0"]
+            [feTurbulence type="TURBULENCE" baseFrequency="0.10, 0.10" seed="0.00" numOctaves="2" stitchTiles="0"]
           RenderSVGResourceFilter {filter} [id="Turb3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feTurbulence type="TURBULANCE" baseFrequency="0.05, 0.05" seed="0.00" numOctaves="8" stitchTiles="0"]
+            [feTurbulence type="TURBULENCE" baseFrequency="0.05, 0.05" seed="0.00" numOctaves="8" stitchTiles="0"]
           RenderSVGResourceFilter {filter} [id="Turb4"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
             [feTurbulence type="NOISE" baseFrequency="0.10, 0.10" seed="0.00" numOctaves="4" stitchTiles="0"]
           RenderSVGResourceFilter {filter} [id="Turb5"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]

Modified: trunk/LayoutTests/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt (225019 => 225020)


--- trunk/LayoutTests/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/LayoutTests/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt	2017-11-18 22:06:40 UTC (rev 225020)
@@ -6,27 +6,27 @@
     RenderSVGContainer {g} at (59,28) size 362x268
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
         RenderSVGResourceFilter {filter} [id="turbneg1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-0.20" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-0.20" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg2"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-0.50" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-0.50" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-0.80" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-0.80" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbzero"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="0.00" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="0.00" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbpos1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="0.20" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="0.20" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbpos2"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="0.50" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="0.50" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbpos3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="1.50" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="1.50" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg4"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-1.00" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-1.00" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg5"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-1.50" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-1.50" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg6"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-2.00" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-2.00" numOctaves="1" stitchTiles="0"]
         RenderSVGResourceFilter {filter} [id="turbneg7"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-2.60" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="0.01, 0.01" seed="-2.60" numOctaves="1" stitchTiles="0"]
       RenderSVGText {text} at (141,28) size 198x25 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 197x24
           chunk 1 (middle anchor) text run 1 at (141.89,48.00) startOffset 0 endOffset 1 width 6.67: "f"

Modified: trunk/LayoutTests/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt (225019 => 225020)


--- trunk/LayoutTests/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/LayoutTests/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt	2017-11-18 22:06:40 UTC (rev 225020)
@@ -136,7 +136,7 @@
         RenderSVGResourceMarker {marker} [id="marker"] [markerUnits=strokeWidth] [ref at (0,0)] [angle=60.00]
         RenderSVGViewportContainer {svg} at (0,0) size 0x0
         RenderSVGResourceFilter {filter} [id=""] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-          [feTurbulence type="TURBULANCE" baseFrequency="4.00, 5.00" seed="0.00" numOctaves="1" stitchTiles="0"]
+          [feTurbulence type="TURBULENCE" baseFrequency="4.00, 5.00" seed="0.00" numOctaves="1" stitchTiles="0"]
     RenderSVGContainer {g} at (10,314) size 227x33
       RenderSVGText {text} at (10,314) size 227x33 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 227x32

Modified: trunk/Source/WebCore/ChangeLog (225019 => 225020)


--- trunk/Source/WebCore/ChangeLog	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/Source/WebCore/ChangeLog	2017-11-18 22:06:40 UTC (rev 225020)
@@ -1,5 +1,44 @@
 2017-11-18  Simon Fraser  <[email protected]>
 
+        More FETurbulence cleanup
+        https://bugs.webkit.org/show_bug.cgi?id=179863
+
+        Reviewed by Zalan Bujtas.
+        
+        Hoist computation of initial StitchData up to be done once per filter,
+        not once per pixel. Passing initial StitchData by value to calculateTurbulenceValueForPoint()
+        ensures that each pixel gets the initial state.
+        
+        Also, adjusted baseFrequencyX and baseFrequencyY can be computed just once at the start,
+        and passed through via PaintingData.
+        
+        Change enum TurbulenceType to be an enum class (requiring casts in a couple of places)
+        and undo the capitalization of the values.
+
+        Fix spelling of TURBULANCE -> TURBULENCE in test output.
+
+        * platform/graphics/filters/FETurbulence.cpp:
+        (WebCore::FETurbulence::computeStitching const):
+        (WebCore::FETurbulence::calculateTurbulenceValueForPoint const):
+        (WebCore::FETurbulence::fillRegion const):
+        (WebCore::FETurbulence::fillRegionWorker):
+        (WebCore::FETurbulence::platformApplySoftware):
+        (WebCore::operator<<):
+        * platform/graphics/filters/FETurbulence.h:
+        (WebCore::FETurbulence::PaintingData::PaintingData):
+        (WebCore::FETurbulence::StitchData::StitchData): Deleted.
+        * svg/SVGAnimatedEnumeration.cpp:
+        (WebCore::enumerationValueForTargetAttribute):
+        * svg/SVGFETurbulenceElement.cpp:
+        (WebCore::SVGFETurbulenceElement::SVGFETurbulenceElement):
+        (WebCore::SVGFETurbulenceElement::parseAttribute):
+        * svg/SVGFETurbulenceElement.h:
+        (WebCore::SVGPropertyTraits<TurbulenceType>::highestEnumValue):
+        (WebCore::SVGPropertyTraits<TurbulenceType>::toString):
+        (WebCore::SVGPropertyTraits<TurbulenceType>::fromString):
+
+2017-11-18  Simon Fraser  <[email protected]>
+
         feTurbulence with stitchTiles is broken
         https://bugs.webkit.org/show_bug.cgi?id=179862
 

Modified: trunk/Source/WebCore/platform/graphics/filters/FETurbulence.cpp (225019 => 225020)


--- trunk/Source/WebCore/platform/graphics/filters/FETurbulence.cpp	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/Source/WebCore/platform/graphics/filters/FETurbulence.cpp	2017-11-18 22:06:40 UTC (rev 225020)
@@ -32,6 +32,7 @@
 #include <runtime/Uint8ClampedArray.h>
 #include <wtf/MathExtras.h>
 #include <wtf/ParallelJobs.h>
+#include <wtf/TimingScope.h>
 
 namespace WebCore {
 
@@ -179,6 +180,44 @@
     }
 }
 
+FETurbulence::StitchData FETurbulence::computeStitching(IntSize tileSize, float& baseFrequencyX, float& baseFrequencyY) const
+{
+    if (!m_stitchTiles)
+        return { };
+
+    float tileWidth = tileSize.width();
+    float tileHeight = tileSize.height();
+    ASSERT(tileWidth > 0 && tileHeight > 0);
+
+    // When stitching tiled turbulence, the frequencies must be adjusted
+    // so that the tile borders will be continuous.
+    if (baseFrequencyX) {
+        float lowFrequency = floorf(tileWidth * baseFrequencyX) / tileWidth;
+        float highFrequency = ceilf(tileWidth * baseFrequencyX) / tileWidth;
+        // BaseFrequency should be non-negative according to the standard.
+        if (baseFrequencyX / lowFrequency < highFrequency / baseFrequencyX)
+            baseFrequencyX = lowFrequency;
+        else
+            baseFrequencyX = highFrequency;
+    }
+    if (baseFrequencyY) {
+        float lowFrequency = floorf(tileHeight * baseFrequencyY) / tileHeight;
+        float highFrequency = ceilf(tileHeight * baseFrequencyY) / tileHeight;
+        if (baseFrequencyY / lowFrequency < highFrequency / baseFrequencyY)
+            baseFrequencyY = lowFrequency;
+        else
+            baseFrequencyY = highFrequency;
+    }
+
+    StitchData stitchData;
+    stitchData.width = roundf(tileWidth * baseFrequencyX);
+    stitchData.wrapX = s_perlinNoise + stitchData.width;
+    stitchData.height = roundf(tileHeight * baseFrequencyY);
+    stitchData.wrapY = s_perlinNoise + stitchData.height;
+
+    return stitchData;
+}
+
 // This is taken 1:1 from SVG spec: http://www.w3.org/TR/SVG11/filters.html#feTurbulenceElement.
 FloatComponents FETurbulence::noise2D(const PaintingData& paintingData, const StitchData& stitchData, const FloatPoint& noiseVector) const
 {
@@ -284,48 +323,13 @@
     };
 }
 
-ColorComponents FETurbulence::calculateTurbulenceValueForPoint(const PaintingData& paintingData, StitchData& stitchData, const FloatPoint& point) const
+ColorComponents FETurbulence::calculateTurbulenceValueForPoint(const PaintingData& paintingData, StitchData stitchData, const FloatPoint& point) const
 {
-    float tileWidth = paintingData.filterSize.width();
-    float tileHeight = paintingData.filterSize.height();
-    ASSERT(tileWidth > 0 && tileHeight > 0);
-    
-    float baseFrequencyX = m_baseFrequencyX;
-    float baseFrequencyY = m_baseFrequencyY;
-
-    // Adjust the base frequencies if necessary for stitching.
-    if (m_stitchTiles) {
-        // When stitching tiled turbulence, the frequencies must be adjusted
-        // so that the tile borders will be continuous.
-        if (baseFrequencyX) {
-            float lowFrequency = floorf(tileWidth * baseFrequencyX) / tileWidth;
-            float highFrequency = ceilf(tileWidth * baseFrequencyX) / tileWidth;
-            // BaseFrequency should be non-negative according to the standard.
-            if (baseFrequencyX / lowFrequency < highFrequency / baseFrequencyX)
-                baseFrequencyX = lowFrequency;
-            else
-                baseFrequencyX = highFrequency;
-        }
-        if (baseFrequencyY) {
-            float lowFrequency = floorf(tileHeight * baseFrequencyY) / tileHeight;
-            float highFrequency = ceilf(tileHeight * baseFrequencyY) / tileHeight;
-            if (baseFrequencyY / lowFrequency < highFrequency / baseFrequencyY)
-                baseFrequencyY = lowFrequency;
-            else
-                baseFrequencyY = highFrequency;
-        }
-        // Set up TurbulenceInitial stitch values.
-        stitchData.width = roundf(tileWidth * baseFrequencyX);
-        stitchData.wrapX = s_perlinNoise + stitchData.width;
-        stitchData.height = roundf(tileHeight * baseFrequencyY);
-        stitchData.wrapY = s_perlinNoise + stitchData.height;
-    }
-
     FloatComponents turbulenceFunctionResult;
-    FloatPoint noiseVector(point.x() * baseFrequencyX, point.y() * baseFrequencyY);
+    FloatPoint noiseVector(point.x() * paintingData.baseFrequencyX, point.y() * paintingData.baseFrequencyY);
     float ratio = 1;
     for (int octave = 0; octave < m_numOctaves; ++octave) {
-        if (m_type == FETURBULENCE_TYPE_FRACTALNOISE)
+        if (m_type == TurbulenceType::FractalNoise)
             turbulenceFunctionResult += noise2D(paintingData, stitchData, noiseVector) / ratio;
         else
             turbulenceFunctionResult += noise2D(paintingData, stitchData, noiseVector).abs() / ratio;
@@ -335,7 +339,7 @@
         ratio *= 2;
 
         if (m_stitchTiles) {
-            // Update stitch values. Subtracting s_perlinNoiseoise before the multiplication and
+            // Update stitch values. Subtracting s_perlinNoise before the multiplication and
             // adding it afterward simplifies to subtracting it once.
             stitchData.width *= 2;
             stitchData.wrapX = 2 * stitchData.wrapX - s_perlinNoise;
@@ -346,18 +350,17 @@
 
     // The value of turbulenceFunctionResult comes from ((turbulenceFunctionResult * 255) + 255) / 2 by fractalNoise
     // and (turbulenceFunctionResult * 255) by turbulence.
-    if (m_type == FETURBULENCE_TYPE_FRACTALNOISE)
+    if (m_type == TurbulenceType::FractalNoise)
         turbulenceFunctionResult = turbulenceFunctionResult * 0.5f + 0.5f;
 
     return turbulenceFunctionResult;
 }
 
-void FETurbulence::fillRegion(Uint8ClampedArray* pixelArray, const PaintingData& paintingData, int startY, int endY) const
+void FETurbulence::fillRegion(Uint8ClampedArray* pixelArray, const PaintingData& paintingData, StitchData stitchData, int startY, int endY) const
 {
     IntRect filterRegion = absolutePaintRect();
     FloatPoint point(0, filterRegion.y() + startY);
     int indexOfPixelChannel = startY * (filterRegion.width() << 2);
-    StitchData stitchData;
     AffineTransform inverseTransfrom = filter().absoluteTransform().inverse().value_or(AffineTransform());
 
     for (int y = startY; y < endY; ++y) {
@@ -377,7 +380,7 @@
 
 void FETurbulence::fillRegionWorker(FillRegionParameters* parameters)
 {
-    parameters->filter->fillRegion(parameters->pixelArray, *parameters->paintingData, parameters->startY, parameters->endY);
+    parameters->filter->fillRegion(parameters->pixelArray, *parameters->paintingData, parameters->stitchData, parameters->startY, parameters->endY);
 }
 
 void FETurbulence::platformApplySoftware()
@@ -391,7 +394,15 @@
         return;
     }
 
-    PaintingData paintingData(m_seed, roundedIntSize(filterPrimitiveSubregion().size()));
+    TimingScope scope("FETurbulence::platformApplySoftware", 100);
+
+    IntSize tileSize = roundedIntSize(filterPrimitiveSubregion().size());
+
+    float baseFrequencyX = m_baseFrequencyX;
+    float baseFrequencyY = m_baseFrequencyY;
+    StitchData stitchData = computeStitching(tileSize, baseFrequencyX, baseFrequencyY);
+
+    PaintingData paintingData(m_seed, tileSize, baseFrequencyX, baseFrequencyY);
     initPaint(paintingData);
 
     int optimalThreadNumber = (absolutePaintRect().width() * absolutePaintRect().height()) / s_minimalRectDimension;
@@ -413,6 +424,7 @@
                 params.filter = this;
                 params.pixelArray = pixelArray;
                 params.paintingData = &paintingData;
+                params.stitchData = stitchData;
                 params.startY = startY;
                 startY += i < jobsWithExtra ? stepY + 1 : stepY;
                 params.endY = startY;
@@ -425,7 +437,7 @@
     }
 
     // Fallback to single threaded mode if there is no room for a new thread or the paint area is too small.
-    fillRegion(pixelArray, paintingData, 0, absolutePaintRect().height());
+    fillRegion(pixelArray, paintingData, stitchData, 0, absolutePaintRect().height());
 }
 
 void FETurbulence::dump()
@@ -435,13 +447,13 @@
 static TextStream& operator<<(TextStream& ts, const TurbulenceType& type)
 {
     switch (type) {
-    case FETURBULENCE_TYPE_UNKNOWN:
+    case TurbulenceType::Unknown:
         ts << "UNKNOWN";
         break;
-    case FETURBULENCE_TYPE_TURBULENCE:
-        ts << "TURBULANCE";
+    case TurbulenceType::Turbulence:
+        ts << "TURBULENCE";
         break;
-    case FETURBULENCE_TYPE_FRACTALNOISE:
+    case TurbulenceType::FractalNoise:
         ts << "NOISE";
         break;
     }

Modified: trunk/Source/WebCore/platform/graphics/filters/FETurbulence.h (225019 => 225020)


--- trunk/Source/WebCore/platform/graphics/filters/FETurbulence.h	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/Source/WebCore/platform/graphics/filters/FETurbulence.h	2017-11-18 22:06:40 UTC (rev 225020)
@@ -30,10 +30,10 @@
 
 namespace WebCore {
 
-enum TurbulenceType {
-    FETURBULENCE_TYPE_UNKNOWN = 0,
-    FETURBULENCE_TYPE_FRACTALNOISE = 1,
-    FETURBULENCE_TYPE_TURBULENCE = 2
+enum class TurbulenceType {
+    Unknown,
+    FractalNoise,
+    Turbulence
 };
 
 class FETurbulence : public FilterEffect {
@@ -74,9 +74,11 @@
     static const int s_minimalRectDimension = (100 * 100); // Empirical data limit for parallel jobs.
 
     struct PaintingData {
-        PaintingData(long paintingSeed, const IntSize& paintingSize)
+        PaintingData(long paintingSeed, const IntSize& paintingSize, float baseFrequencyX, float baseFrequencyY)
             : seed(paintingSeed)
             , filterSize(paintingSize)
+            , baseFrequencyX(baseFrequencyX)
+            , baseFrequencyY(baseFrequencyY)
         {
         }
 
@@ -84,23 +86,19 @@
         int latticeSelector[2 * s_blockSize + 2];
         float gradient[4][2 * s_blockSize + 2][2];
         IntSize filterSize;
+        float baseFrequencyX;
+        float baseFrequencyY;
 
         inline long random();
     };
 
     struct StitchData {
-        StitchData()
-            : width(0)
-            , wrapX(0)
-            , height(0)
-            , wrapY(0)
-        {
-        }
+        StitchData() = default;
 
-        int width; // How much to subtract to wrap for stitching.
-        int wrapX; // Minimum value to wrap.
-        int height;
-        int wrapY;
+        int width { 0 }; // How much to subtract to wrap for stitching.
+        int wrapX { 0 }; // Minimum value to wrap.
+        int height { 0 };
+        int wrapY { 0 };
     };
 
     template<typename Type>
@@ -110,6 +108,7 @@
         FETurbulence* filter;
         Uint8ClampedArray* pixelArray;
         PaintingData* paintingData;
+        StitchData stitchData;
         int startY;
         int endY;
     };
@@ -119,9 +118,10 @@
     FETurbulence(Filter&, TurbulenceType, float, float, int, float, bool);
 
     void initPaint(PaintingData&);
+    StitchData computeStitching(IntSize tileSize, float& baseFrequencyX, float& baseFrequencyY) const;
     FloatComponents noise2D(const PaintingData&, const StitchData&, const FloatPoint&) const;
-    ColorComponents calculateTurbulenceValueForPoint(const PaintingData&, StitchData&, const FloatPoint&) const;
-    void fillRegion(Uint8ClampedArray*, const PaintingData&, int startY, int endY) const;
+    ColorComponents calculateTurbulenceValueForPoint(const PaintingData&, StitchData, const FloatPoint&) const;
+    void fillRegion(Uint8ClampedArray*, const PaintingData&, StitchData, int startY, int endY) const;
 
     TurbulenceType m_type;
     float m_baseFrequencyX;

Modified: trunk/Source/WebCore/svg/SVGAnimatedEnumeration.cpp (225019 => 225020)


--- trunk/Source/WebCore/svg/SVGAnimatedEnumeration.cpp	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/Source/WebCore/svg/SVGAnimatedEnumeration.cpp	2017-11-18 22:06:40 UTC (rev 225020)
@@ -76,7 +76,7 @@
         if (targetElement->hasTagName(SVGNames::feColorMatrixTag))
             return SVGPropertyTraits<ColorMatrixType>::fromString(value);
         if (targetElement->hasTagName(SVGNames::feTurbulenceTag))
-            return SVGPropertyTraits<TurbulenceType>::fromString(value);
+            return static_cast<unsigned>(SVGPropertyTraits<TurbulenceType>::fromString(value));
 
         ASSERT(targetElement->hasTagName(SVGNames::feFuncATag)
                || targetElement->hasTagName(SVGNames::feFuncBTag)

Modified: trunk/Source/WebCore/svg/SVGFETurbulenceElement.cpp (225019 => 225020)


--- trunk/Source/WebCore/svg/SVGFETurbulenceElement.cpp	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/Source/WebCore/svg/SVGFETurbulenceElement.cpp	2017-11-18 22:06:40 UTC (rev 225020)
@@ -48,7 +48,7 @@
     : SVGFilterPrimitiveStandardAttributes(tagName, document)
     , m_numOctaves(1)
     , m_stitchTiles(SVG_STITCHTYPE_NOSTITCH)
-    , m_type(FETURBULENCE_TYPE_TURBULENCE)
+    , m_type(TurbulenceType::Turbulence)
 {
     ASSERT(hasTagName(SVGNames::feTurbulenceTag));
     registerAnimatedPropertiesForSVGFETurbulenceElement();
@@ -75,7 +75,7 @@
 {
     if (name == SVGNames::typeAttr) {
         TurbulenceType propertyValue = SVGPropertyTraits<TurbulenceType>::fromString(value);
-        if (propertyValue > 0)
+        if (propertyValue != TurbulenceType::Unknown)
             setTypeBaseValue(propertyValue);
         return;
     }

Modified: trunk/Source/WebCore/svg/SVGFETurbulenceElement.h (225019 => 225020)


--- trunk/Source/WebCore/svg/SVGFETurbulenceElement.h	2017-11-18 21:59:03 UTC (rev 225019)
+++ trunk/Source/WebCore/svg/SVGFETurbulenceElement.h	2017-11-18 22:06:40 UTC (rev 225020)
@@ -65,16 +65,16 @@
 
 template<>
 struct SVGPropertyTraits<TurbulenceType> {
-    static unsigned highestEnumValue() { return FETURBULENCE_TYPE_TURBULENCE; }
+    static unsigned highestEnumValue() { return static_cast<unsigned>(TurbulenceType::Turbulence); }
 
     static String toString(TurbulenceType type)
     {
         switch (type) {
-        case FETURBULENCE_TYPE_UNKNOWN:
+        case TurbulenceType::Unknown:
             return emptyString();
-        case FETURBULENCE_TYPE_FRACTALNOISE:
+        case TurbulenceType::FractalNoise:
             return ASCIILiteral("fractalNoise");
-        case FETURBULENCE_TYPE_TURBULENCE:
+        case TurbulenceType::Turbulence:
             return ASCIILiteral("turbulence");
         }
 
@@ -85,10 +85,10 @@
     static TurbulenceType fromString(const String& value)
     {
         if (value == "fractalNoise")
-            return FETURBULENCE_TYPE_FRACTALNOISE;
+            return TurbulenceType::FractalNoise;
         if (value == "turbulence")
-            return FETURBULENCE_TYPE_TURBULENCE;
-        return FETURBULENCE_TYPE_UNKNOWN;
+            return TurbulenceType::Turbulence;
+        return TurbulenceType::Unknown;
     }
 };
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to