Changeset 235217 in webkit


Ignore:
Timestamp:
Aug 22, 2018 11:20:14 PM (6 years ago)
Author:
zandobersek@gmail.com
Message:

[CoordGraphics] Remove CoordinatedImageBacking and related functionality
https://bugs.webkit.org/show_bug.cgi?id=188847

Reviewed by Michael Catanzaro.

Remove the CoordinatedImageBacking class and its intertwining use in the
CoordinatedGraphics system.

Source/WebCore:

Remove the now-unused m_coordinatedImageBacking member variable from the
CoordinatedGraphicsLayer class, along with CoordinatedImageBacking::Host
inheritance. Various related helper methods are also removed.

In CoordinatedGraphicsState and CoordinatedGraphicsLayerState classes,
we are able to drop different CoordinatedImageBacking-related state
values that are not used anymore.

  • platform/TextureMapper.cmake:
  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer):
(WebCore::CoordinatedGraphicsLayer::~CoordinatedGraphicsLayer):
(WebCore::CoordinatedGraphicsLayer::setContentsToImage):
(WebCore::CoordinatedGraphicsLayer::purgeBackingStores):
(WebCore::CoordinatedGraphicsLayer::didChangeImageBacking): Deleted.
(WebCore::CoordinatedGraphicsLayer::syncImageBacking): Deleted.
(WebCore::CoordinatedGraphicsLayer::imageBackingVisible): Deleted.
(WebCore::CoordinatedGraphicsLayer::releaseImageBackingIfNeeded): Deleted.

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
  • platform/graphics/texmap/coordinated/CoordinatedGraphicsState.h:

(WebCore::CoordinatedGraphicsLayerState::CoordinatedGraphicsLayerState):

  • platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp: Removed.
  • platform/graphics/texmap/coordinated/CoordinatedImageBacking.h: Removed.

Source/WebKit:

Drop the CoordinatedImageBacking object management from the
CompositingCoordinator class, along with the
CoordinatedImageBacking::Client inheritance. The corresponding image
backing state management on the CoordinatedGraphicsState class can be
removed accordingly.

  • WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:

(WebKit::CompositingCoordinator::flushPendingLayerChanges):
(WebKit::CompositingCoordinator::clearPendingStateChanges):
(WebKit::CompositingCoordinator::purgeBackingStores):
(WebKit::CompositingCoordinator::createImageBackingIfNeeded): Deleted.
(WebKit::CompositingCoordinator::createImageBacking): Deleted.
(WebKit::CompositingCoordinator::updateImageBacking): Deleted.
(WebKit::CompositingCoordinator::clearImageBackingContents): Deleted.
(WebKit::CompositingCoordinator::removeImageBacking): Deleted.
(WebKit::CompositingCoordinator::flushPendingImageBackingChanges): Deleted.

  • WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
Location:
trunk/Source
Files:
2 deleted
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r235214 r235217  
     12018-08-22  Zan Dobersek  <zdobersek@igalia.com>
     2
     3        [CoordGraphics] Remove CoordinatedImageBacking and related functionality
     4        https://bugs.webkit.org/show_bug.cgi?id=188847
     5
     6        Reviewed by Michael Catanzaro.
     7
     8        Remove the CoordinatedImageBacking class and its intertwining use in the
     9        CoordinatedGraphics system.
     10
     11        Remove the now-unused m_coordinatedImageBacking member variable from the
     12        CoordinatedGraphicsLayer class, along with CoordinatedImageBacking::Host
     13        inheritance. Various related helper methods are also removed.
     14
     15        In CoordinatedGraphicsState and CoordinatedGraphicsLayerState classes,
     16        we are able to drop different CoordinatedImageBacking-related state
     17        values that are not used anymore.
     18
     19        * platform/TextureMapper.cmake:
     20        * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
     21        (WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer):
     22        (WebCore::CoordinatedGraphicsLayer::~CoordinatedGraphicsLayer):
     23        (WebCore::CoordinatedGraphicsLayer::setContentsToImage):
     24        (WebCore::CoordinatedGraphicsLayer::purgeBackingStores):
     25        (WebCore::CoordinatedGraphicsLayer::didChangeImageBacking): Deleted.
     26        (WebCore::CoordinatedGraphicsLayer::syncImageBacking): Deleted.
     27        (WebCore::CoordinatedGraphicsLayer::imageBackingVisible): Deleted.
     28        (WebCore::CoordinatedGraphicsLayer::releaseImageBackingIfNeeded): Deleted.
     29        * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
     30        * platform/graphics/texmap/coordinated/CoordinatedGraphicsState.h:
     31        (WebCore::CoordinatedGraphicsLayerState::CoordinatedGraphicsLayerState):
     32        * platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp: Removed.
     33        * platform/graphics/texmap/coordinated/CoordinatedImageBacking.h: Removed.
     34
    1352018-08-22  Ryosuke Niwa  <rniwa@webkit.org>
    236
  • trunk/Source/WebCore/platform/TextureMapper.cmake

    r234932 r235217  
    3636        platform/graphics/texmap/coordinated/CoordinatedBackingStore.cpp
    3737        platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp
    38         platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp
    3938        platform/graphics/texmap/coordinated/Tile.cpp
    4039        platform/graphics/texmap/coordinated/TiledBackingStore.cpp
  • trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp

    r235165 r235217  
    9494}
    9595
    96 void CoordinatedGraphicsLayer::didChangeImageBacking()
    97 {
    98     m_shouldSyncImageBacking = true;
    99     notifyFlushRequired();
    100 }
    101 
    10296void CoordinatedGraphicsLayer::didUpdateTileBuffers()
    10397{
     
    136130    , m_shouldSyncChildren(true)
    137131    , m_shouldSyncFilters(true)
    138     , m_shouldSyncImageBacking(true)
    139132    , m_shouldSyncAnimations(true)
    140133    , m_movingVisibleRect(false)
     
    163156        m_coordinator->detachLayer(this);
    164157    }
    165     ASSERT(!m_coordinatedImageBacking);
    166158    ASSERT(!m_mainBackingStore);
    167159    ASSERT(!m_nicosia.imageBacking);
     
    545537
    546538    GraphicsLayer::setContentsToImage(image);
    547     didChangeImageBacking();
     539    notifyFlushRequired();
    548540}
    549541
     
    669661    m_layerState.filtersChanged = true;
    670662    m_nicosia.delta.filtersChanged = true;
    671 }
    672 
    673 void CoordinatedGraphicsLayer::syncImageBacking()
    674 {
    675     if (!m_shouldSyncImageBacking)
    676         return;
    677     m_shouldSyncImageBacking = false;
    678 
    679     if (m_compositedNativeImagePtr) {
    680         ASSERT(!shouldHaveBackingStore());
    681         ASSERT(m_compositedImage);
    682 
    683         bool imageInstanceReplaced = m_coordinatedImageBacking && (m_coordinatedImageBacking->id() != CoordinatedImageBacking::getCoordinatedImageBackingID(*m_compositedImage));
    684         if (imageInstanceReplaced)
    685             releaseImageBackingIfNeeded();
    686 
    687         if (!m_coordinatedImageBacking) {
    688             m_coordinatedImageBacking = m_coordinator->createImageBackingIfNeeded(*m_compositedImage);
    689             m_coordinatedImageBacking->addHost(*this);
    690             m_layerState.imageID = m_coordinatedImageBacking->id();
    691         }
    692 
    693         m_coordinatedImageBacking->markDirty();
    694         m_layerState.imageChanged = true;
    695     } else
    696         releaseImageBackingIfNeeded();
    697663}
    698664
     
    990956}
    991957
    992 bool CoordinatedGraphicsLayer::imageBackingVisible()
    993 {
    994     ASSERT(m_coordinatedImageBacking);
    995     return transformedVisibleRect().intersects(IntRect(contentsRect()));
    996 }
    997 
    998 void CoordinatedGraphicsLayer::releaseImageBackingIfNeeded()
    999 {
    1000     if (!m_coordinatedImageBacking)
    1001         return;
    1002 
    1003     ASSERT(m_coordinator);
    1004     m_coordinatedImageBacking->removeHost(*this);
    1005     m_coordinatedImageBacking = nullptr;
    1006     m_layerState.imageID = InvalidCoordinatedImageBackingID;
    1007     m_layerState.imageChanged = true;
    1008 }
    1009 
    1010958void CoordinatedGraphicsLayer::deviceOrPageScaleFactorChanged()
    1011959{
     
    12241172        m_nicosia.backingStore = nullptr;
    12251173    }
    1226 
    1227     releaseImageBackingIfNeeded();
    12281174
    12291175    didChangeLayerState();
  • trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h

    r235165 r235217  
    2525
    2626#include "CoordinatedGraphicsState.h"
    27 #include "CoordinatedImageBacking.h"
    2827#include "FloatPoint3D.h"
    2928#include "GraphicsLayer.h"
     
    5150    virtual bool isFlushingLayerChanges() const = 0;
    5251    virtual FloatRect visibleContentsRect() const = 0;
    53     virtual Ref<CoordinatedImageBacking> createImageBackingIfNeeded(Image&) = 0;
    5452    virtual void detachLayer(CoordinatedGraphicsLayer*) = 0;
    5553    virtual void attachLayer(CoordinatedGraphicsLayer*) = 0;
     
    6058
    6159class WEBCORE_EXPORT CoordinatedGraphicsLayer : public GraphicsLayer
    62     , public TiledBackingStoreClient
    63     , public CoordinatedImageBacking::Host {
     60    , public TiledBackingStoreClient {
    6461public:
    6562    explicit CoordinatedGraphicsLayer(Type, GraphicsLayerClient&);
     
    150147    void didChangeChildren();
    151148    void didChangeFilters();
    152     void didChangeImageBacking();
    153149    void didUpdateTileBuffers();
    154150
     
    158154    void syncChildren();
    159155    void syncFilters();
    160     void syncImageBacking();
    161156    void computeTransformedVisibleRect();
    162157    void updateContentBuffers();
     
    166161    void notifyFlushRequired();
    167162
    168     // CoordinatedImageBacking::Host
    169     bool imageBackingVisible() override;
    170163    bool shouldHaveBackingStore() const;
    171164    bool selfOrAncestorHasActiveTransformAnimation() const;
     
    197190    bool m_shouldSyncChildren: 1;
    198191    bool m_shouldSyncFilters: 1;
    199     bool m_shouldSyncImageBacking: 1;
    200192    bool m_shouldSyncAnimations: 1;
    201193    bool m_movingVisibleRect : 1;
     
    218210    RefPtr<Image> m_compositedImage;
    219211    NativeImagePtr m_compositedNativeImagePtr;
    220     RefPtr<CoordinatedImageBacking> m_coordinatedImageBacking;
    221212
    222213    PlatformLayer* m_platformLayer;
  • trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsState.h

    r234593 r235217  
    5353enum { InvalidCoordinatedLayerID = 0 };
    5454
    55 typedef uint64_t CoordinatedImageBackingID;
    56 enum { InvalidCoordinatedImageBackingID = 0 };
    57 
    5855struct TileUpdateInfo {
    5956    uint32_t tileID;
     
    9289            bool replicaChanged: 1;
    9390            bool maskChanged: 1;
    94             bool imageChanged: 1;
    9591            bool flagsChanged: 1;
    9692            bool animationsChanged: 1;
     
    131127        , replica(InvalidCoordinatedLayerID)
    132128        , mask(InvalidCoordinatedLayerID)
    133         , imageID(InvalidCoordinatedImageBackingID)
    134129#if USE(COORDINATED_GRAPHICS_THREADED)
    135130        , platformLayerProxy(0)
     
    155150    CoordinatedLayerID replica;
    156151    CoordinatedLayerID mask;
    157     CoordinatedImageBackingID imageID;
    158152    DebugVisuals debugVisuals;
    159153    RepaintCount repaintCount;
     
    181175    Vector<std::pair<CoordinatedLayerID, CoordinatedGraphicsLayerState>> layersToUpdate;
    182176    Vector<CoordinatedLayerID> layersToRemove;
    183 
    184     Vector<CoordinatedImageBackingID> imagesToCreate;
    185     Vector<CoordinatedImageBackingID> imagesToRemove;
    186     Vector<std::pair<CoordinatedImageBackingID, RefPtr<Nicosia::Buffer>>> imagesToUpdate;
    187     Vector<CoordinatedImageBackingID> imagesToClear;
    188177};
    189178
  • trunk/Source/WebKit/ChangeLog

    r235216 r235217  
     12018-08-22  Zan Dobersek  <zdobersek@igalia.com>
     2
     3        [CoordGraphics] Remove CoordinatedImageBacking and related functionality
     4        https://bugs.webkit.org/show_bug.cgi?id=188847
     5
     6        Reviewed by Michael Catanzaro.
     7
     8        Remove the CoordinatedImageBacking class and its intertwining use in the
     9        CoordinatedGraphics system.
     10
     11        Drop the CoordinatedImageBacking object management from the
     12        CompositingCoordinator class, along with the
     13        CoordinatedImageBacking::Client inheritance. The corresponding image
     14        backing state management on the CoordinatedGraphicsState class can be
     15        removed accordingly.
     16
     17        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
     18        (WebKit::CompositingCoordinator::flushPendingLayerChanges):
     19        (WebKit::CompositingCoordinator::clearPendingStateChanges):
     20        (WebKit::CompositingCoordinator::purgeBackingStores):
     21        (WebKit::CompositingCoordinator::createImageBackingIfNeeded): Deleted.
     22        (WebKit::CompositingCoordinator::createImageBacking): Deleted.
     23        (WebKit::CompositingCoordinator::updateImageBacking): Deleted.
     24        (WebKit::CompositingCoordinator::clearImageBackingContents): Deleted.
     25        (WebKit::CompositingCoordinator::removeImageBacking): Deleted.
     26        (WebKit::CompositingCoordinator::flushPendingImageBackingChanges): Deleted.
     27        * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
     28
    1292018-08-22  Sihui Liu  <sihui_liu@apple.com>
    230
  • trunk/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp

    r235165 r235217  
    126126    coordinatedLayer.syncPendingStateChangesIncludingSubLayers();
    127127
    128     flushPendingImageBackingChanges();
    129 
    130128    if (m_shouldSyncFrame) {
    131129        didSync = true;
     
    197195    m_state.layersToUpdate.clear();
    198196    m_state.layersToRemove.clear();
    199 
    200     m_state.imagesToCreate.clear();
    201     m_state.imagesToRemove.clear();
    202     m_state.imagesToUpdate.clear();
    203     m_state.imagesToClear.clear();
    204197}
    205198
     
    234227}
    235228
    236 Ref<CoordinatedImageBacking> CompositingCoordinator::createImageBackingIfNeeded(Image& image)
    237 {
    238     CoordinatedImageBackingID imageID = CoordinatedImageBacking::getCoordinatedImageBackingID(image);
    239     auto addResult = m_imageBackings.ensure(imageID, [this, &image] {
    240         return CoordinatedImageBacking::create(*this, image);
    241     });
    242     return *addResult.iterator->value;
    243 }
    244 
    245 void CompositingCoordinator::createImageBacking(CoordinatedImageBackingID imageID)
    246 {
    247     m_state.imagesToCreate.append(imageID);
    248 }
    249 
    250 void CompositingCoordinator::updateImageBacking(CoordinatedImageBackingID imageID, RefPtr<Nicosia::Buffer>&& buffer)
    251 {
    252     m_shouldSyncFrame = true;
    253     m_state.imagesToUpdate.append(std::make_pair(imageID, WTFMove(buffer)));
    254 }
    255 
    256 void CompositingCoordinator::clearImageBackingContents(CoordinatedImageBackingID imageID)
    257 {
    258     m_shouldSyncFrame = true;
    259     m_state.imagesToClear.append(imageID);
    260 }
    261 
    262 void CompositingCoordinator::removeImageBacking(CoordinatedImageBackingID imageID)
    263 {
    264     if (m_isPurging)
    265         return;
    266 
    267     ASSERT(m_imageBackings.contains(imageID));
    268     m_imageBackings.remove(imageID);
    269 
    270     m_state.imagesToRemove.append(imageID);
    271 
    272     size_t imageIDPosition = m_state.imagesToClear.find(imageID);
    273     if (imageIDPosition != notFound)
    274         m_state.imagesToClear.remove(imageIDPosition);
    275 }
    276 
    277 void CompositingCoordinator::flushPendingImageBackingChanges()
    278 {
    279     for (auto& imageBacking : m_imageBackings.values())
    280         imageBacking->update();
    281 }
    282 
    283229void CompositingCoordinator::notifyFlushRequired(const GraphicsLayer*)
    284230{
     
    375321    for (auto& registeredLayer : m_registeredLayers.values())
    376322        registeredLayer->purgeBackingStores();
    377 
    378     m_imageBackings.clear();
    379323}
    380324
  • trunk/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h

    r234593 r235217  
    3232#include <WebCore/CoordinatedGraphicsLayer.h>
    3333#include <WebCore/CoordinatedGraphicsState.h>
    34 #include <WebCore/CoordinatedImageBacking.h>
    3534#include <WebCore/FloatPoint.h>
    3635#include <WebCore/GraphicsLayerClient.h>
     
    5352class CompositingCoordinator final : public WebCore::GraphicsLayerClient
    5453    , public WebCore::CoordinatedGraphicsLayerClient
    55     , public WebCore::CoordinatedImageBacking::Client
    5654    , public WebCore::GraphicsLayerFactory {
    5755    WTF_MAKE_NONCOPYABLE(CompositingCoordinator);
     
    9694    float pageScaleFactor() const override;
    9795
    98     // CoordinatedImageBacking::Client
    99     void createImageBacking(WebCore::CoordinatedImageBackingID) override;
    100     void updateImageBacking(WebCore::CoordinatedImageBackingID, RefPtr<Nicosia::Buffer>&&) override;
    101     void clearImageBackingContents(WebCore::CoordinatedImageBackingID) override;
    102     void removeImageBacking(WebCore::CoordinatedImageBackingID) override;
    103 
    10496    // CoordinatedGraphicsLayerClient
    10597    bool isFlushingLayerChanges() const override { return m_isFlushingLayerChanges; }
    10698    WebCore::FloatRect visibleContentsRect() const override;
    107     Ref<WebCore::CoordinatedImageBacking> createImageBackingIfNeeded(WebCore::Image&) override;
    10899    void detachLayer(WebCore::CoordinatedGraphicsLayer*) override;
    109100    void attachLayer(WebCore::CoordinatedGraphicsLayer*) override;
     
    115106
    116107    void initializeRootCompositingLayerIfNeeded();
    117     void flushPendingImageBackingChanges();
    118108    void clearPendingStateChanges();
    119109
     
    136126
    137127    HashMap<WebCore::CoordinatedLayerID, WebCore::CoordinatedGraphicsLayer*> m_registeredLayers;
    138     HashMap<WebCore::CoordinatedImageBackingID, RefPtr<WebCore::CoordinatedImageBacking>> m_imageBackings;
    139128
    140129    std::unique_ptr<Nicosia::PaintingEngine> m_paintingEngine;
Note: See TracChangeset for help on using the changeset viewer.