Title: [271699] trunk/Source
Revision
271699
Author
wei...@apple.com
Date
2021-01-21 10:39:58 -0800 (Thu, 21 Jan 2021)

Log Message

Add experimental support for separated layers
https://bugs.webkit.org/show_bug.cgi?id=220734

Reviewed by Simon Fraser.

Source/WebCore:

Plumb a "separated" bit through the graphics layer infrastructure. Currently unused
but will be used for optimization experimentation.

* platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::GraphicsLayer):
* platform/graphics/GraphicsLayer.h:
(WebCore::GraphicsLayer::separated const):
(WebCore::GraphicsLayer::setSeparated):
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::setSeparated):
(WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers):
(WebCore::GraphicsLayerCA::updateSeparated):
* platform/graphics/ca/GraphicsLayerCA.h:
* platform/graphics/ca/PlatformCALayer.h:
* platform/graphics/ca/cocoa/PlatformCALayerCocoa.h:
* platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
(WebCore::PlatformCALayerCocoa::separated const):
(WebCore::PlatformCALayerCocoa::setSeparated):

Source/WebCore/PAL:

* pal/spi/cocoa/QuartzCoreSPI.h:
Add forward declaration for CALayer's separated property.

Source/WebKit:

Plumb a "separated" bit through the graphics layer infrastructure. Currently unused
but will be used for optimization experimentation.

* Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
(WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToLayer):
* Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
* Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
(WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties):
(WebKit::RemoteLayerTreeTransaction::LayerProperties::encode const):
(WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):
(WebKit::dumpChangedLayers):
* WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:
(WebKit::PlatformCALayerRemote::isSeparated const):
(WebKit::PlatformCALayerRemote::setSeparated):
* WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:

Source/WTF:

* wtf/PlatformHave.h:
Define HAVE_CORE_ANIMATION_SEPARATED_LAYERS for supported configurations.

Modified Paths

Diff

Modified: trunk/Source/WTF/ChangeLog (271698 => 271699)


--- trunk/Source/WTF/ChangeLog	2021-01-21 18:08:54 UTC (rev 271698)
+++ trunk/Source/WTF/ChangeLog	2021-01-21 18:39:58 UTC (rev 271699)
@@ -1,3 +1,13 @@
+2021-01-21  Sam Weinig  <wei...@apple.com>
+
+        Add experimental support for separated layers
+        https://bugs.webkit.org/show_bug.cgi?id=220734
+
+        Reviewed by Simon Fraser.
+
+        * wtf/PlatformHave.h:
+        Define HAVE_CORE_ANIMATION_SEPARATED_LAYERS for supported configurations.
+
 2021-01-21  Aditya Keerthi  <akeer...@apple.com>
 
         [macOS] Titlebar separator doesn't show when WKWebView is scrolled

Modified: trunk/Source/WTF/wtf/PlatformHave.h (271698 => 271699)


--- trunk/Source/WTF/wtf/PlatformHave.h	2021-01-21 18:08:54 UTC (rev 271698)
+++ trunk/Source/WTF/wtf/PlatformHave.h	2021-01-21 18:39:58 UTC (rev 271699)
@@ -830,3 +830,12 @@
 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 110000
 #define HAVE_NSSCROLLVIEW_SEPARATOR_TRACKING_ADAPTER 1
 #endif
+
+#if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 110000) \
+    || ((PLATFORM(IOS) || PLATFORM(MACCATALYST)) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 140000) \
+    || (PLATFORM(WATCHOS) && __WATCH_OS_VERSION_MIN_REQUIRED >= 70000) \
+    || (PLATFORM(APPLETV) && __TV_OS_VERSION_MIN_REQUIRED >= 140000)
+#if !defined(HAVE_CORE_ANIMATION_SEPARATED_LAYERS)
+#define HAVE_CORE_ANIMATION_SEPARATED_LAYERS 1
+#endif
+#endif

Modified: trunk/Source/WebCore/ChangeLog (271698 => 271699)


--- trunk/Source/WebCore/ChangeLog	2021-01-21 18:08:54 UTC (rev 271698)
+++ trunk/Source/WebCore/ChangeLog	2021-01-21 18:39:58 UTC (rev 271699)
@@ -1,3 +1,29 @@
+2021-01-21  Sam Weinig  <wei...@apple.com>
+
+        Add experimental support for separated layers
+        https://bugs.webkit.org/show_bug.cgi?id=220734
+
+        Reviewed by Simon Fraser.
+
+        Plumb a "separated" bit through the graphics layer infrastructure. Currently unused 
+        but will be used for optimization experimentation.
+
+        * platform/graphics/GraphicsLayer.cpp:
+        (WebCore::GraphicsLayer::GraphicsLayer):
+        * platform/graphics/GraphicsLayer.h:
+        (WebCore::GraphicsLayer::separated const):
+        (WebCore::GraphicsLayer::setSeparated):
+        * platform/graphics/ca/GraphicsLayerCA.cpp:
+        (WebCore::GraphicsLayerCA::setSeparated):
+        (WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers):
+        (WebCore::GraphicsLayerCA::updateSeparated):
+        * platform/graphics/ca/GraphicsLayerCA.h:
+        * platform/graphics/ca/PlatformCALayer.h:
+        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.h:
+        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
+        (WebCore::PlatformCALayerCocoa::separated const):
+        (WebCore::PlatformCALayerCocoa::setSeparated):
+
 2021-01-21  Youenn Fablet  <you...@apple.com>
 
         Allow MediaStream and non MediaStream backed videos to play together

Modified: trunk/Source/WebCore/PAL/ChangeLog (271698 => 271699)


--- trunk/Source/WebCore/PAL/ChangeLog	2021-01-21 18:08:54 UTC (rev 271698)
+++ trunk/Source/WebCore/PAL/ChangeLog	2021-01-21 18:39:58 UTC (rev 271699)
@@ -1,3 +1,13 @@
+2021-01-21  Sam Weinig  <wei...@apple.com>
+
+        Add experimental support for separated layers
+        https://bugs.webkit.org/show_bug.cgi?id=220734
+
+        Reviewed by Simon Fraser.
+
+        * pal/spi/cocoa/QuartzCoreSPI.h:
+        Add forward declaration for CALayer's separated property.
+
 2021-01-19  Chris Dumez  <cdu...@apple.com>
 
         [GPUProcess] Claim ownership of IOSurface backing for ImageBufferBackends in the WebProcess

Modified: trunk/Source/WebCore/PAL/pal/spi/cocoa/QuartzCoreSPI.h (271698 => 271699)


--- trunk/Source/WebCore/PAL/pal/spi/cocoa/QuartzCoreSPI.h	2021-01-21 18:08:54 UTC (rev 271698)
+++ trunk/Source/WebCore/PAL/pal/spi/cocoa/QuartzCoreSPI.h	2021-01-21 18:39:58 UTC (rev 271699)
@@ -104,6 +104,9 @@
 @property BOOL needsLayoutOnGeometryChange;
 @property BOOL shadowPathIsBounds;
 @property BOOL continuousCorners;
+#if HAVE(CORE_ANIMATION_SEPARATED_LAYERS)
+@property (getter=isSeparated) BOOL separated;
+#endif
 @end
 
 #if ENABLE(FILTERS_LEVEL_2)

Modified: trunk/Source/WebCore/platform/graphics/GraphicsLayer.cpp (271698 => 271699)


--- trunk/Source/WebCore/platform/graphics/GraphicsLayer.cpp	2021-01-21 18:08:54 UTC (rev 271698)
+++ trunk/Source/WebCore/platform/graphics/GraphicsLayer.cpp	2021-01-21 18:39:58 UTC (rev 271699)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2009-2021 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -150,6 +150,9 @@
     , m_isTrackingDisplayListReplay(false)
     , m_userInteractionEnabled(true)
     , m_canDetachBackingStore(true)
+#if HAVE(CORE_ANIMATION_SEPARATED_LAYERS)
+    , m_separated(false)
+#endif
 {
 #ifndef NDEBUG
     client().verifyNotPainting();

Modified: trunk/Source/WebCore/platform/graphics/GraphicsLayer.h (271698 => 271699)


--- trunk/Source/WebCore/platform/graphics/GraphicsLayer.h	2021-01-21 18:08:54 UTC (rev 271698)
+++ trunk/Source/WebCore/platform/graphics/GraphicsLayer.h	2021-01-21 18:39:58 UTC (rev 271699)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009-2017 Apple Inc. All rights reserved.
+ * Copyright (C) 2009-2021 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -393,6 +393,11 @@
     bool usesDisplayListDrawing() const { return m_usesDisplayListDrawing; }
     virtual void setUsesDisplayListDrawing(bool b) { m_usesDisplayListDrawing = b; }
 
+#if HAVE(CORE_ANIMATION_SEPARATED_LAYERS)
+    bool isSeparated() const { return m_separated; }
+    virtual void setSeparated(bool b) { m_separated = b; }
+#endif
+
     bool needsBackdrop() const { return !m_backdropFilters.isEmpty(); }
 
     // The color used to paint the layer background. Pass an invalid color to remove it.
@@ -721,6 +726,9 @@
     bool m_isTrackingDisplayListReplay : 1;
     bool m_userInteractionEnabled : 1;
     bool m_canDetachBackingStore : 1;
+#if HAVE(CORE_ANIMATION_SEPARATED_LAYERS)
+    bool m_separated : 1;
+#endif
 
     int m_repaintCount { 0 };
 

Modified: trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp (271698 => 271699)


--- trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp	2021-01-21 18:08:54 UTC (rev 271698)
+++ trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp	2021-01-21 18:39:58 UTC (rev 271699)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010-2017 Apple Inc. All rights reserved.
+ * Copyright (C) 2010-2021 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -774,6 +774,17 @@
     GraphicsLayer::setUsesDisplayListDrawing(usesDisplayListDrawing);
 }
 
+#if HAVE(CORE_ANIMATION_SEPARATED_LAYERS)
+void GraphicsLayerCA::setSeparated(bool separated)
+{
+    if (separated == m_separated)
+        return;
+
+    GraphicsLayer::setSeparated(separated);
+    noteLayerPropertyChanged(SeparatedChanged);
+}
+#endif
+
 void GraphicsLayerCA::setBackgroundColor(const Color& color)
 {
     if (m_backgroundColor == color)
@@ -1908,6 +1919,11 @@
     if (m_uncommittedChanges & CustomAppearanceChanged)
         updateCustomAppearance();
 
+#if HAVE(CORE_ANIMATION_SEPARATED_LAYERS)
+    if (m_uncommittedChanges & SeparatedChanged)
+        updateSeparated();
+#endif
+
     if (m_uncommittedChanges & ChildrenChanged) {
         updateSublayerList();
         // Sublayers may set this flag again, so clear it to avoid always updating sublayers in commitLayerChangesAfterSublayers().
@@ -2349,6 +2365,13 @@
     m_layer->setShapeWindRule(m_shapeLayerWindRule);
 }
 
+#if HAVE(CORE_ANIMATION_SEPARATED_LAYERS)
+void GraphicsLayerCA::updateSeparated()
+{
+    m_layer->setSeparated(m_separated);
+}
+#endif
+
 bool GraphicsLayerCA::updateStructuralLayer()
 {
     return ensureStructuralLayer(structuralLayerPurpose());

Modified: trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h (271698 => 271699)


--- trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h	2021-01-21 18:08:54 UTC (rev 271698)
+++ trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h	2021-01-21 18:39:58 UTC (rev 271699)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
+ * Copyright (C) 2010-2021 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -95,6 +95,9 @@
     WEBCORE_EXPORT void setAcceleratesDrawing(bool) override;
     WEBCORE_EXPORT void setUsesDisplayListDrawing(bool) override;
     WEBCORE_EXPORT void setUserInteractionEnabled(bool) override;
+#if HAVE(CORE_ANIMATION_SEPARATED_LAYERS)
+    WEBCORE_EXPORT void setSeparated(bool) override;
+#endif
 
     WEBCORE_EXPORT void setBackgroundColor(const Color&) override;
 
@@ -441,6 +444,10 @@
     void updateShape();
     void updateWindRule();
 
+#if HAVE(CORE_ANIMATION_SEPARATED_LAYERS)
+    void updateSeparated();
+#endif
+
     enum StructuralLayerPurpose {
         NoStructuralLayer = 0,
         StructuralLayerForPreserves3D,
@@ -547,6 +554,9 @@
 #if ENABLE(SCROLLING_THREAD)
         ScrollingNodeChanged                    = 1LLU << 41,
 #endif
+#if HAVE(CORE_ANIMATION_SEPARATED_LAYERS)
+        SeparatedChanged                        = 1LLU << 42,
+#endif
     };
     typedef uint64_t LayerChangeFlags;
     void addUncommittedChanges(LayerChangeFlags);

Modified: trunk/Source/WebCore/platform/graphics/ca/PlatformCALayer.h (271698 => 271699)


--- trunk/Source/WebCore/platform/graphics/ca/PlatformCALayer.h	2021-01-21 18:08:54 UTC (rev 271698)
+++ trunk/Source/WebCore/platform/graphics/ca/PlatformCALayer.h	2021-01-21 18:39:58 UTC (rev 271699)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010, 2014 Apple Inc. All rights reserved.
+ * Copyright (C) 2010-2021 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -246,6 +246,11 @@
     virtual GraphicsLayer::CustomAppearance customAppearance() const = 0;
     virtual void updateCustomAppearance(GraphicsLayer::CustomAppearance) = 0;
 
+#if HAVE(CORE_ANIMATION_SEPARATED_LAYERS)
+    virtual bool isSeparated() const = 0;
+    virtual void setSeparated(bool) = 0;
+#endif
+
     virtual TiledBacking* tiledBacking() = 0;
 
     virtual void drawTextAtPoint(CGContextRef, CGFloat x, CGFloat y, CGSize scale, CGFloat fontSize, const char* text, size_t length, CGFloat strokeWidthAsPercentageOfFontSize = 0, Color strokeColor = Color()) const;

Modified: trunk/Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.h (271698 => 271699)


--- trunk/Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.h	2021-01-21 18:08:54 UTC (rev 271698)
+++ trunk/Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.h	2021-01-21 18:39:58 UTC (rev 271699)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010, 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2010-2021 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -176,6 +176,11 @@
     void setScrollingNodeID(ScrollingNodeID nodeID) override { m_scrollingNodeID = nodeID; }
 #endif
 
+#if HAVE(CORE_ANIMATION_SEPARATED_LAYERS)
+    bool isSeparated() const override;
+    void setSeparated(bool) override;
+#endif
+
     TiledBacking* tiledBacking() override;
 
     Ref<PlatformCALayer> clone(PlatformCALayerClient* owner) const override;

Modified: trunk/Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm (271698 => 271699)


--- trunk/Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm	2021-01-21 18:08:54 UTC (rev 271698)
+++ trunk/Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm	2021-01-21 18:39:58 UTC (rev 271699)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010-2017 Apple Inc. All rights reserved.
+ * Copyright (C) 2010-2021 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -1037,6 +1037,20 @@
     m_eventRegion = eventRegion;
 }
 
+#if HAVE(CORE_ANIMATION_SEPARATED_LAYERS)
+bool PlatformCALayerCocoa::isSeparated() const
+{
+    return m_layer.get().isSeparated;
+}
+
+void PlatformCALayerCocoa::setSeparated(bool value)
+{
+    BEGIN_BLOCK_OBJC_EXCEPTIONS
+    [m_layer setSeparated:value];
+    END_BLOCK_OBJC_EXCEPTIONS
+}
+#endif
+
 static NSString *layerContentsFormat(bool acceleratesDrawing, bool wantsDeepColor, bool supportsSubpixelAntialiasedFonts)
 {
 #if HAVE(IOSURFACE_RGB10)

Modified: trunk/Source/WebKit/ChangeLog (271698 => 271699)


--- trunk/Source/WebKit/ChangeLog	2021-01-21 18:08:54 UTC (rev 271698)
+++ trunk/Source/WebKit/ChangeLog	2021-01-21 18:39:58 UTC (rev 271699)
@@ -1,5 +1,28 @@
 2021-01-21  Sam Weinig  <wei...@apple.com>
 
+        Add experimental support for separated layers
+        https://bugs.webkit.org/show_bug.cgi?id=220734
+
+        Reviewed by Simon Fraser.
+
+        Plumb a "separated" bit through the graphics layer infrastructure. Currently unused 
+        but will be used for optimization experimentation.
+
+        * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
+        (WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToLayer):
+        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
+        * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
+        (WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties):
+        (WebKit::RemoteLayerTreeTransaction::LayerProperties::encode const):
+        (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):
+        (WebKit::dumpChangedLayers):
+        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:
+        (WebKit::PlatformCALayerRemote::isSeparated const):
+        (WebKit::PlatformCALayerRemote::setSeparated):
+        * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:
+
+2021-01-21  Sam Weinig  <wei...@apple.com>
+
         Rework color clamping logic to be more consistent and clear
         https://bugs.webkit.org/show_bug.cgi?id=220716
 

Modified: trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm (271698 => 271699)


--- trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm	2021-01-21 18:08:54 UTC (rev 271698)
+++ trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm	2021-01-21 18:39:58 UTC (rev 271699)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2013-2021 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -267,6 +267,11 @@
 
     if (properties.changedProperties & RemoteLayerTreeTransaction::CustomAppearanceChanged)
         updateCustomAppearance(layer, properties.customAppearance);
+
+#if HAVE(CORE_ANIMATION_SEPARATED_LAYERS)
+    if (properties.changedProperties & RemoteLayerTreeTransaction::SeparatedChanged)
+        layer.separated = properties.isSeparated;
+#endif
 }
 
 void RemoteLayerTreePropertyApplier::applyProperties(RemoteLayerTreeNode& node, RemoteLayerTreeHost* layerTreeHost, const RemoteLayerTreeTransaction::LayerProperties& properties, const RelatedLayerMap& relatedLayers, RemoteLayerBackingStore::LayerContentsType layerContentsType)

Modified: trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h (271698 => 271699)


--- trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h	2021-01-21 18:08:54 UTC (rev 271698)
+++ trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h	2021-01-21 18:39:58 UTC (rev 271699)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012-2020 Apple Inc. All rights reserved.
+ * Copyright (C) 2012-2021 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -93,6 +93,9 @@
         CustomAppearanceChanged         = 1LLU << 36,
         UserInteractionEnabledChanged   = 1LLU << 37,
         EventRegionChanged              = 1LLU << 38,
+#if HAVE(CORE_ANIMATION_SEPARATED_LAYERS)
+        SeparatedChanged                = 1LLU << 39,
+#endif
     };
 
     struct LayerCreationProperties {
@@ -173,6 +176,9 @@
         bool contentsHidden;
         bool userInteractionEnabled;
         WebCore::EventRegion eventRegion;
+#if HAVE(CORE_ANIMATION_SEPARATED_LAYERS)
+        bool isSeparated;
+#endif
     };
 
     explicit RemoteLayerTreeTransaction();
@@ -367,6 +373,9 @@
         WebKit::RemoteLayerTreeTransaction::LayerChange::CustomAppearanceChanged,
         WebKit::RemoteLayerTreeTransaction::LayerChange::UserInteractionEnabledChanged,
         WebKit::RemoteLayerTreeTransaction::LayerChange::EventRegionChanged
+#if HAVE(CORE_ANIMATION_SEPARATED_LAYERS)
+        , WebKit::RemoteLayerTreeTransaction::LayerChange::SeparatedChanged
+#endif
     >;
 };
 

Modified: trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm (271698 => 271699)


--- trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm	2021-01-21 18:08:54 UTC (rev 271698)
+++ trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm	2021-01-21 18:39:58 UTC (rev 271699)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012-2018 Apple Inc. All rights reserved.
+ * Copyright (C) 2012-2021 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -103,6 +103,9 @@
     , opaque(false)
     , contentsHidden(false)
     , userInteractionEnabled(true)
+#if HAVE(CORE_ANIMATION_SEPARATED_LAYERS)
+    , isSeparated(false)
+#endif
 {
 }
 
@@ -142,6 +145,9 @@
     , contentsHidden(other.contentsHidden)
     , userInteractionEnabled(other.userInteractionEnabled)
     , eventRegion(other.eventRegion)
+#if HAVE(CORE_ANIMATION_SEPARATED_LAYERS)
+    , isSeparated(other.isSeparated)
+#endif
 {
     // FIXME: LayerProperties should reference backing store by ID, so that two layers can have the same backing store (for clones).
     // FIXME: LayerProperties shouldn't be copyable; PlatformCALayerRemote::clone should copy the relevant properties.
@@ -279,6 +285,11 @@
 
     if (changedProperties & EventRegionChanged)
         encoder << eventRegion;
+
+#if HAVE(CORE_ANIMATION_SEPARATED_LAYERS)
+    if (changedProperties & SeparatedChanged)
+        encoder << isSeparated;
+#endif
 }
 
 bool RemoteLayerTreeTransaction::LayerProperties::decode(IPC::Decoder& decoder, LayerProperties& result)
@@ -510,6 +521,13 @@
         result.eventRegion = WTFMove(*eventRegion);
     }
 
+#if HAVE(CORE_ANIMATION_SEPARATED_LAYERS)
+    if (result.changedProperties & SeparatedChanged) {
+        if (!decoder.decode(result.isSeparated))
+            return false;
+    }
+#endif
+
     return true;
 }
 
@@ -883,6 +901,11 @@
 
         if (layerProperties.changedProperties & RemoteLayerTreeTransaction::UserInteractionEnabledChanged)
             ts.dumpProperty("userInteractionEnabled", layerProperties.userInteractionEnabled);
+
+#if HAVE(CORE_ANIMATION_SEPARATED_LAYERS)
+        if (layerProperties.changedProperties & RemoteLayerTreeTransaction::SeparatedChanged)
+            ts.dumpProperty("isSeparated", layerProperties.isSeparated);
+#endif
     }
 }
 

Modified: trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp (271698 => 271699)


--- trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp	2021-01-21 18:08:54 UTC (rev 271698)
+++ trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp	2021-01-21 18:39:58 UTC (rev 271699)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2013-2021 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -868,6 +868,22 @@
     m_properties.notePropertiesChanged(RemoteLayerTreeTransaction::EventRegionChanged);
 }
 
+#if HAVE(CORE_ANIMATION_SEPARATED_LAYERS)
+bool PlatformCALayerRemote::isSeparated() const
+{
+    return m_properties.isSeparated;
+}
+
+void PlatformCALayerRemote::setSeparated(bool value)
+{
+    if (m_properties.isSeparated == value)
+        return;
+
+    m_properties.isSeparated = value;
+    m_properties.notePropertiesChanged(RemoteLayerTreeTransaction::SeparatedChanged);
+}
+#endif
+
 Ref<PlatformCALayer> PlatformCALayerRemote::createCompatibleLayer(PlatformCALayer::LayerType layerType, PlatformCALayerClient* client) const
 {
     return PlatformCALayerRemote::create(layerType, client, *m_context);

Modified: trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h (271698 => 271699)


--- trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h	2021-01-21 18:08:54 UTC (rev 271698)
+++ trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h	2021-01-21 18:39:58 UTC (rev 271699)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2013-2021 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -175,6 +175,11 @@
 
     void setEventRegion(const WebCore::EventRegion&) override;
 
+#if HAVE(CORE_ANIMATION_SEPARATED_LAYERS)
+    bool isSeparated() const override;
+    void setSeparated(bool) override;
+#endif
+
     WebCore::TiledBacking* tiledBacking() override { return nullptr; }
 
     Ref<WebCore::PlatformCALayer> clone(WebCore::PlatformCALayerClient* owner) const override;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to