Title: [283697] trunk/Source
Revision
283697
Author
[email protected]
Date
2021-10-06 19:22:48 -0700 (Wed, 06 Oct 2021)

Log Message

Delete WebCore::DisplayList::SetInlineFillGradient
https://bugs.webkit.org/show_bug.cgi?id=231326

Reviewed by Simon Fraser.

Source/WebCore:

Remove this display list item, because:

-       It should never have been encoded and decoded as POD data in the first place, due to the fact that it
        indirectly contains Variants.

-       Deleting this item does not cause any significant performance impact when using streaming IPC for
        display lists.

* platform/graphics/displaylists/DisplayList.cpp:
(WebCore::DisplayList::DisplayList::append):
* platform/graphics/displaylists/DisplayListItemBuffer.cpp:
(WebCore::DisplayList::ItemHandle::apply):
(WebCore::DisplayList::ItemHandle::destroy):
(WebCore::DisplayList::ItemHandle::safeCopy const):
* platform/graphics/displaylists/DisplayListItemType.cpp:
(WebCore::DisplayList::sizeOfItemInBytes):
(WebCore::DisplayList::isDrawingItem):
(WebCore::DisplayList::isInlineItem):
* platform/graphics/displaylists/DisplayListItemType.h:
* platform/graphics/displaylists/DisplayListItems.cpp:
(WebCore::DisplayList::operator<<):
(WebCore::DisplayList::SetInlineFillGradient::SetInlineFillGradient): Deleted.
(WebCore::DisplayList::SetInlineFillGradient::gradient const): Deleted.
(WebCore::DisplayList::SetInlineFillGradient::apply const): Deleted.
(WebCore::DisplayList::SetInlineFillGradient::isInline): Deleted.
* platform/graphics/displaylists/DisplayListItems.h:
(WebCore::DisplayList::SetInlineFillGradient::isValid const): Deleted.
* platform/graphics/displaylists/DisplayListRecorder.cpp:
(WebCore::DisplayList::containsOnlyInlineStateChanges):
(WebCore::DisplayList::Recorder::appendStateChangeItem):

Source/WebKit:

See WebCore/ChangeLog for more details.

* GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::decodeItem):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (283696 => 283697)


--- trunk/Source/WebCore/ChangeLog	2021-10-07 02:21:13 UTC (rev 283696)
+++ trunk/Source/WebCore/ChangeLog	2021-10-07 02:22:48 UTC (rev 283697)
@@ -1,3 +1,41 @@
+2021-10-06  Wenson Hsieh  <[email protected]>
+
+        Delete WebCore::DisplayList::SetInlineFillGradient
+        https://bugs.webkit.org/show_bug.cgi?id=231326
+
+        Reviewed by Simon Fraser.
+
+        Remove this display list item, because:
+
+        -       It should never have been encoded and decoded as POD data in the first place, due to the fact that it
+                indirectly contains Variants.
+
+        -       Deleting this item does not cause any significant performance impact when using streaming IPC for
+                display lists.
+
+        * platform/graphics/displaylists/DisplayList.cpp:
+        (WebCore::DisplayList::DisplayList::append):
+        * platform/graphics/displaylists/DisplayListItemBuffer.cpp:
+        (WebCore::DisplayList::ItemHandle::apply):
+        (WebCore::DisplayList::ItemHandle::destroy):
+        (WebCore::DisplayList::ItemHandle::safeCopy const):
+        * platform/graphics/displaylists/DisplayListItemType.cpp:
+        (WebCore::DisplayList::sizeOfItemInBytes):
+        (WebCore::DisplayList::isDrawingItem):
+        (WebCore::DisplayList::isInlineItem):
+        * platform/graphics/displaylists/DisplayListItemType.h:
+        * platform/graphics/displaylists/DisplayListItems.cpp:
+        (WebCore::DisplayList::operator<<):
+        (WebCore::DisplayList::SetInlineFillGradient::SetInlineFillGradient): Deleted.
+        (WebCore::DisplayList::SetInlineFillGradient::gradient const): Deleted.
+        (WebCore::DisplayList::SetInlineFillGradient::apply const): Deleted.
+        (WebCore::DisplayList::SetInlineFillGradient::isInline): Deleted.
+        * platform/graphics/displaylists/DisplayListItems.h:
+        (WebCore::DisplayList::SetInlineFillGradient::isValid const): Deleted.
+        * platform/graphics/displaylists/DisplayListRecorder.cpp:
+        (WebCore::DisplayList::containsOnlyInlineStateChanges):
+        (WebCore::DisplayList::Recorder::appendStateChangeItem):
+
 2021-10-06  Jean-Yves Avenard  <[email protected]>
 
         Have SourceBufferPrivateAVJObjC use WorkQueue instead of dispatch_async

Modified: trunk/Source/WebCore/platform/graphics/displaylists/DisplayList.cpp (283696 => 283697)


--- trunk/Source/WebCore/platform/graphics/displaylists/DisplayList.cpp	2021-10-07 02:21:13 UTC (rev 283696)
+++ trunk/Source/WebCore/platform/graphics/displaylists/DisplayList.cpp	2021-10-07 02:22:48 UTC (rev 283697)
@@ -214,8 +214,6 @@
         return append<ConcatenateCTM>(item.get<ConcatenateCTM>());
     case ItemType::SetCTM:
         return append<SetCTM>(item.get<SetCTM>());
-    case ItemType::SetInlineFillGradient:
-        return append<SetInlineFillGradient>(item.get<SetInlineFillGradient>());
     case ItemType::SetInlineFillColor:
         return append<SetInlineFillColor>(item.get<SetInlineFillColor>());
     case ItemType::SetInlineStrokeColor:

Modified: trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.cpp (283696 => 283697)


--- trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.cpp	2021-10-07 02:21:13 UTC (rev 283696)
+++ trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.cpp	2021-10-07 02:22:48 UTC (rev 283697)
@@ -66,9 +66,6 @@
     case ItemType::SetCTM:
         get<SetCTM>().apply(context);
         return;
-    case ItemType::SetInlineFillGradient:
-        get<SetInlineFillGradient>().apply(context);
-        return;
     case ItemType::SetInlineFillColor:
         get<SetInlineFillColor>().apply(context);
         return;
@@ -424,9 +421,6 @@
     case ItemType::SetInlineFillColor:
         static_assert(std::is_trivially_destructible<SetInlineFillColor>::value);
         return;
-    case ItemType::SetInlineFillGradient:
-        static_assert(std::is_trivially_destructible<SetInlineFillGradient>::value);
-        return;
     case ItemType::SetInlineStrokeColor:
         static_assert(std::is_trivially_destructible<SetInlineStrokeColor>::value);
         return;
@@ -616,8 +610,6 @@
         return copyInto<SetCTM>(itemOffset, *this);
     case ItemType::SetInlineFillColor:
         return copyInto<SetInlineFillColor>(itemOffset, *this);
-    case ItemType::SetInlineFillGradient:
-        return copyInto<SetInlineFillGradient>(itemOffset, *this);
     case ItemType::SetInlineStrokeColor:
         return copyInto<SetInlineStrokeColor>(itemOffset, *this);
     case ItemType::SetLineCap:

Modified: trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItemType.cpp (283696 => 283697)


--- trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItemType.cpp	2021-10-07 02:21:13 UTC (rev 283696)
+++ trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItemType.cpp	2021-10-07 02:22:48 UTC (rev 283697)
@@ -48,8 +48,6 @@
         return sizeof(ConcatenateCTM);
     case ItemType::SetCTM:
         return sizeof(SetCTM);
-    case ItemType::SetInlineFillGradient:
-        return sizeof(SetInlineFillGradient);
     case ItemType::SetInlineFillColor:
         return sizeof(SetInlineFillColor);
     case ItemType::SetInlineStrokeColor:
@@ -210,7 +208,6 @@
     case ItemType::Scale:
     case ItemType::SetCTM:
     case ItemType::SetInlineFillColor:
-    case ItemType::SetInlineFillGradient:
     case ItemType::SetInlineStrokeColor:
     case ItemType::SetLineCap:
     case ItemType::SetLineDash:
@@ -357,7 +354,6 @@
     case ItemType::Scale:
     case ItemType::SetCTM:
     case ItemType::SetInlineFillColor:
-    case ItemType::SetInlineFillGradient:
     case ItemType::SetInlineStrokeColor:
     case ItemType::SetLineCap:
     case ItemType::SetLineJoin:

Modified: trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItemType.h (283696 => 283697)


--- trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItemType.h	2021-10-07 02:21:13 UTC (rev 283696)
+++ trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItemType.h	2021-10-07 02:22:48 UTC (rev 283697)
@@ -36,7 +36,6 @@
     Scale,
     ConcatenateCTM,
     SetCTM,
-    SetInlineFillGradient,
     SetInlineFillColor,
     SetInlineStrokeColor,
     SetStrokeThickness,

Modified: trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp (283696 => 283697)


--- trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp	2021-10-07 02:21:13 UTC (rev 283696)
+++ trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp	2021-10-07 02:22:48 UTC (rev 283697)
@@ -114,83 +114,6 @@
     return ts;
 }
 
-SetInlineFillGradient::SetInlineFillGradient(const Gradient& gradient, const AffineTransform& gradientSpaceTransform)
-    : m_data(gradient.data())
-    , m_gradientSpaceTransform(gradientSpaceTransform)
-    , m_spreadMethod(gradient.spreadMethod())
-    , m_colorStopCount(static_cast<uint8_t>(gradient.stops().size()))
-{
-    RELEASE_ASSERT(m_colorStopCount <= maxColorStopCount);
-    for (uint8_t i = 0; i < m_colorStopCount; ++i) {
-        m_offsets[i] = gradient.stops()[i].offset;
-        m_colors[i] = *gradient.stops()[i].color.tryGetAsSRGBABytes();
-    }
-}
-
-SetInlineFillGradient::SetInlineFillGradient(float offsets[maxColorStopCount], SRGBA<uint8_t> colors[maxColorStopCount], const Gradient::Data& data, const AffineTransform& gradientSpaceTransform, GradientSpreadMethod spreadMethod, uint8_t colorStopCount)
-    : m_data(data)
-    , m_gradientSpaceTransform(gradientSpaceTransform)
-    , m_spreadMethod(spreadMethod)
-    , m_colorStopCount(colorStopCount)
-{
-    RELEASE_ASSERT(m_colorStopCount <= maxColorStopCount);
-    for (uint8_t i = 0; i < m_colorStopCount; ++i) {
-        m_offsets[i] = offsets[i];
-        m_colors[i] = colors[i];
-    }
-}
-
-SetInlineFillGradient::SetInlineFillGradient(const SetInlineFillGradient& other)
-{
-    if (WTF::holds_alternative<Gradient::RadialData>(other.m_data) || WTF::holds_alternative<Gradient::LinearData>(other.m_data) || WTF::holds_alternative<Gradient::ConicData>(other.m_data)) {
-        m_data = other.m_data;
-        m_gradientSpaceTransform = other.m_gradientSpaceTransform;
-        m_spreadMethod = other.m_spreadMethod;
-        m_colorStopCount = other.m_colorStopCount;
-        if (m_colorStopCount > maxColorStopCount)
-            m_colorStopCount = 0;
-        for (uint8_t i = 0; i < m_colorStopCount; ++i) {
-            m_offsets[i] = other.m_offsets[i];
-            m_colors[i] = other.m_colors[i];
-        }
-    } else
-        m_isValid = false;
-}
-
-Ref<Gradient> SetInlineFillGradient::gradient() const
-{
-    auto gradient = Gradient::create(Gradient::Data(m_data));
-    for (uint8_t i = 0; i < m_colorStopCount; ++i)
-        gradient->addColorStop({ m_offsets[i], Color(m_colors[i]) });
-    gradient->setSpreadMethod(m_spreadMethod);
-    return gradient;
-}
-
-void SetInlineFillGradient::apply(GraphicsContext& context) const
-{
-    if (m_colorStopCount <= maxColorStopCount)
-        context.setFillGradient(gradient(), m_gradientSpaceTransform);
-}
-
-bool SetInlineFillGradient::isInline(const Gradient& gradient)
-{
-    if (gradient.stops().size() > SetInlineFillGradient::maxColorStopCount)
-        return false;
-
-    for (auto& colorStop : gradient.stops()) {
-        if (!colorStop.color.tryGetAsSRGBABytes())
-            return false;
-    }
-
-    return true;
-}
-
-static TextStream& operator<<(TextStream& ts, const SetInlineFillGradient&)
-{
-    // FIXME: Dump gradient data.
-    return ts;
-}
-
 void SetInlineFillColor::apply(GraphicsContext& context) const
 {
     context.setFillColor(color());
@@ -1133,7 +1056,6 @@
     case ItemType::Scale: ts << "scale"; break;
     case ItemType::SetCTM: ts << "set-ctm"; break;
     case ItemType::ConcatenateCTM: ts << "concatentate-ctm"; break;
-    case ItemType::SetInlineFillGradient: ts << "set-inline-fill-gradient"; break;
     case ItemType::SetInlineFillColor: ts << "set-inline-fill-color"; break;
     case ItemType::SetInlineStrokeColor: ts << "set-inline-stroke-color"; break;
     case ItemType::SetStrokeThickness: ts << "set-stroke-thickness"; break;
@@ -1225,9 +1147,6 @@
     case ItemType::ConcatenateCTM:
         ts << item.get<ConcatenateCTM>();
         break;
-    case ItemType::SetInlineFillGradient:
-        ts << item.get<SetInlineFillGradient>();
-        break;
     case ItemType::SetInlineFillColor:
         ts << item.get<SetInlineFillColor>();
         break;

Modified: trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItems.h (283696 => 283697)


--- trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItems.h	2021-10-07 02:21:13 UTC (rev 283696)
+++ trunk/Source/WebCore/platform/graphics/displaylists/DisplayListItems.h	2021-10-07 02:22:48 UTC (rev 283697)
@@ -182,33 +182,6 @@
     AffineTransform m_transform;
 };
 
-class SetInlineFillGradient {
-public:
-    static constexpr ItemType itemType = ItemType::SetInlineFillGradient;
-    static constexpr bool isInlineItem = true;
-    static constexpr bool isDrawingItem = false;
-    static constexpr uint8_t maxColorStopCount = 4;
-
-    SetInlineFillGradient(const Gradient&, const AffineTransform& gradientSpaceTransform);
-    WEBCORE_EXPORT SetInlineFillGradient(float offsets[maxColorStopCount], SRGBA<uint8_t> colors[maxColorStopCount], const Gradient::Data&, const AffineTransform& gradientSpaceTransform, GradientSpreadMethod, uint8_t colorStopCount);
-    SetInlineFillGradient(const SetInlineFillGradient&);
-    bool isValid() const { return m_isValid; }
-
-    static bool isInline(const Gradient&);
-    Ref<Gradient> gradient() const;
-
-    void apply(GraphicsContext&) const;
-
-private:
-    float m_offsets[maxColorStopCount];
-    SRGBA<uint8_t> m_colors[maxColorStopCount];
-    Gradient::Data m_data;
-    AffineTransform m_gradientSpaceTransform;
-    GradientSpreadMethod m_spreadMethod { GradientSpreadMethod::Pad };
-    uint8_t m_colorStopCount { 0 };
-    bool m_isValid { true };
-};
-
 class SetInlineFillColor {
 public:
     static constexpr ItemType itemType = ItemType::SetInlineFillColor;
@@ -2499,7 +2472,6 @@
     , Scale
     , SetCTM
     , SetInlineFillColor
-    , SetInlineFillGradient
     , SetInlineStrokeColor
     , SetLineCap
     , SetLineDash
@@ -2553,7 +2525,6 @@
     WebCore::DisplayList::ItemType::Scale,
     WebCore::DisplayList::ItemType::SetCTM,
     WebCore::DisplayList::ItemType::ConcatenateCTM,
-    WebCore::DisplayList::ItemType::SetInlineFillGradient,
     WebCore::DisplayList::ItemType::SetInlineFillColor,
     WebCore::DisplayList::ItemType::SetInlineStrokeColor,
     WebCore::DisplayList::ItemType::SetStrokeThickness,

Modified: trunk/Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp (283696 => 283697)


--- trunk/Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp	2021-10-07 02:21:13 UTC (rev 283696)
+++ trunk/Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp	2021-10-07 02:22:48 UTC (rev 283697)
@@ -82,7 +82,6 @@
         GraphicsContextState::StrokeThicknessChange,
         GraphicsContextState::StrokeColorChange,
         GraphicsContextState::FillColorChange,
-        GraphicsContextState::FillGradientChange,
     };
 
     if (changeFlags != (changeFlags & inlineStateChangeFlags))
@@ -94,10 +93,6 @@
     if (changeFlags.contains(GraphicsContextState::FillColorChange) && !changes.m_state.fillColor.tryGetAsSRGBABytes())
         return false;
 
-    if (changeFlags.contains(GraphicsContextState::FillGradientChange)
-        && (!changes.m_state.fillGradient || !SetInlineFillGradient::isInline(*changes.m_state.fillGradient)))
-        return false;
-
     return true;
 }
 
@@ -127,9 +122,6 @@
 
     if (changeFlags.contains(GraphicsContextState::FillColorChange))
         append<SetInlineFillColor>(*changes.m_state.fillColor.tryGetAsSRGBABytes());
-
-    if (changeFlags.contains(GraphicsContextState::FillGradientChange))
-        append<SetInlineFillGradient>(*changes.m_state.fillGradient, changes.m_state.fillGradientSpaceTransform);
 }
 
 bool Recorder::canAppendItemOfType(ItemType type) const

Modified: trunk/Source/WebKit/ChangeLog (283696 => 283697)


--- trunk/Source/WebKit/ChangeLog	2021-10-07 02:21:13 UTC (rev 283696)
+++ trunk/Source/WebKit/ChangeLog	2021-10-07 02:22:48 UTC (rev 283697)
@@ -1,5 +1,17 @@
 2021-10-06  Wenson Hsieh  <[email protected]>
 
+        Delete WebCore::DisplayList::SetInlineFillGradient
+        https://bugs.webkit.org/show_bug.cgi?id=231326
+
+        Reviewed by Simon Fraser.
+
+        See WebCore/ChangeLog for more details.
+
+        * GPUProcess/graphics/RemoteRenderingBackend.cpp:
+        (WebKit::RemoteRenderingBackend::decodeItem):
+
+2021-10-06  Wenson Hsieh  <[email protected]>
+
         Add a configurable wake up message hysteresis to IPC::StreamClientConnection
         https://bugs.webkit.org/show_bug.cgi?id=231304
 

Modified: trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp (283696 => 283697)


--- trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp	2021-10-07 02:21:13 UTC (rev 283696)
+++ trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp	2021-10-07 02:22:48 UTC (rev 283697)
@@ -647,7 +647,6 @@
     case DisplayList::ItemType::Scale:
     case DisplayList::ItemType::SetCTM:
     case DisplayList::ItemType::SetInlineFillColor:
-    case DisplayList::ItemType::SetInlineFillGradient:
     case DisplayList::ItemType::SetInlineStrokeColor:
     case DisplayList::ItemType::SetLineCap:
     case DisplayList::ItemType::SetLineJoin:
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to