Changeset 235217 in webkit
- Timestamp:
- Aug 22, 2018 11:20:14 PM (6 years ago)
- Location:
- trunk/Source
- Files:
-
- 2 deleted
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r235214 r235217 1 2018-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 1 35 2018-08-22 Ryosuke Niwa <rniwa@webkit.org> 2 36 -
trunk/Source/WebCore/platform/TextureMapper.cmake
r234932 r235217 36 36 platform/graphics/texmap/coordinated/CoordinatedBackingStore.cpp 37 37 platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp 38 platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp39 38 platform/graphics/texmap/coordinated/Tile.cpp 40 39 platform/graphics/texmap/coordinated/TiledBackingStore.cpp -
trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp
r235165 r235217 94 94 } 95 95 96 void CoordinatedGraphicsLayer::didChangeImageBacking()97 {98 m_shouldSyncImageBacking = true;99 notifyFlushRequired();100 }101 102 96 void CoordinatedGraphicsLayer::didUpdateTileBuffers() 103 97 { … … 136 130 , m_shouldSyncChildren(true) 137 131 , m_shouldSyncFilters(true) 138 , m_shouldSyncImageBacking(true)139 132 , m_shouldSyncAnimations(true) 140 133 , m_movingVisibleRect(false) … … 163 156 m_coordinator->detachLayer(this); 164 157 } 165 ASSERT(!m_coordinatedImageBacking);166 158 ASSERT(!m_mainBackingStore); 167 159 ASSERT(!m_nicosia.imageBacking); … … 545 537 546 538 GraphicsLayer::setContentsToImage(image); 547 didChangeImageBacking();539 notifyFlushRequired(); 548 540 } 549 541 … … 669 661 m_layerState.filtersChanged = true; 670 662 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 } else696 releaseImageBackingIfNeeded();697 663 } 698 664 … … 990 956 } 991 957 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 1010 958 void CoordinatedGraphicsLayer::deviceOrPageScaleFactorChanged() 1011 959 { … … 1224 1172 m_nicosia.backingStore = nullptr; 1225 1173 } 1226 1227 releaseImageBackingIfNeeded();1228 1174 1229 1175 didChangeLayerState(); -
trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h
r235165 r235217 25 25 26 26 #include "CoordinatedGraphicsState.h" 27 #include "CoordinatedImageBacking.h"28 27 #include "FloatPoint3D.h" 29 28 #include "GraphicsLayer.h" … … 51 50 virtual bool isFlushingLayerChanges() const = 0; 52 51 virtual FloatRect visibleContentsRect() const = 0; 53 virtual Ref<CoordinatedImageBacking> createImageBackingIfNeeded(Image&) = 0;54 52 virtual void detachLayer(CoordinatedGraphicsLayer*) = 0; 55 53 virtual void attachLayer(CoordinatedGraphicsLayer*) = 0; … … 60 58 61 59 class WEBCORE_EXPORT CoordinatedGraphicsLayer : public GraphicsLayer 62 , public TiledBackingStoreClient 63 , public CoordinatedImageBacking::Host { 60 , public TiledBackingStoreClient { 64 61 public: 65 62 explicit CoordinatedGraphicsLayer(Type, GraphicsLayerClient&); … … 150 147 void didChangeChildren(); 151 148 void didChangeFilters(); 152 void didChangeImageBacking();153 149 void didUpdateTileBuffers(); 154 150 … … 158 154 void syncChildren(); 159 155 void syncFilters(); 160 void syncImageBacking();161 156 void computeTransformedVisibleRect(); 162 157 void updateContentBuffers(); … … 166 161 void notifyFlushRequired(); 167 162 168 // CoordinatedImageBacking::Host169 bool imageBackingVisible() override;170 163 bool shouldHaveBackingStore() const; 171 164 bool selfOrAncestorHasActiveTransformAnimation() const; … … 197 190 bool m_shouldSyncChildren: 1; 198 191 bool m_shouldSyncFilters: 1; 199 bool m_shouldSyncImageBacking: 1;200 192 bool m_shouldSyncAnimations: 1; 201 193 bool m_movingVisibleRect : 1; … … 218 210 RefPtr<Image> m_compositedImage; 219 211 NativeImagePtr m_compositedNativeImagePtr; 220 RefPtr<CoordinatedImageBacking> m_coordinatedImageBacking;221 212 222 213 PlatformLayer* m_platformLayer; -
trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsState.h
r234593 r235217 53 53 enum { InvalidCoordinatedLayerID = 0 }; 54 54 55 typedef uint64_t CoordinatedImageBackingID;56 enum { InvalidCoordinatedImageBackingID = 0 };57 58 55 struct TileUpdateInfo { 59 56 uint32_t tileID; … … 92 89 bool replicaChanged: 1; 93 90 bool maskChanged: 1; 94 bool imageChanged: 1;95 91 bool flagsChanged: 1; 96 92 bool animationsChanged: 1; … … 131 127 , replica(InvalidCoordinatedLayerID) 132 128 , mask(InvalidCoordinatedLayerID) 133 , imageID(InvalidCoordinatedImageBackingID)134 129 #if USE(COORDINATED_GRAPHICS_THREADED) 135 130 , platformLayerProxy(0) … … 155 150 CoordinatedLayerID replica; 156 151 CoordinatedLayerID mask; 157 CoordinatedImageBackingID imageID;158 152 DebugVisuals debugVisuals; 159 153 RepaintCount repaintCount; … … 181 175 Vector<std::pair<CoordinatedLayerID, CoordinatedGraphicsLayerState>> layersToUpdate; 182 176 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;188 177 }; 189 178 -
trunk/Source/WebKit/ChangeLog
r235216 r235217 1 2018-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 1 29 2018-08-22 Sihui Liu <sihui_liu@apple.com> 2 30 -
trunk/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp
r235165 r235217 126 126 coordinatedLayer.syncPendingStateChangesIncludingSubLayers(); 127 127 128 flushPendingImageBackingChanges();129 130 128 if (m_shouldSyncFrame) { 131 129 didSync = true; … … 197 195 m_state.layersToUpdate.clear(); 198 196 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();204 197 } 205 198 … … 234 227 } 235 228 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 283 229 void CompositingCoordinator::notifyFlushRequired(const GraphicsLayer*) 284 230 { … … 375 321 for (auto& registeredLayer : m_registeredLayers.values()) 376 322 registeredLayer->purgeBackingStores(); 377 378 m_imageBackings.clear();379 323 } 380 324 -
trunk/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h
r234593 r235217 32 32 #include <WebCore/CoordinatedGraphicsLayer.h> 33 33 #include <WebCore/CoordinatedGraphicsState.h> 34 #include <WebCore/CoordinatedImageBacking.h>35 34 #include <WebCore/FloatPoint.h> 36 35 #include <WebCore/GraphicsLayerClient.h> … … 53 52 class CompositingCoordinator final : public WebCore::GraphicsLayerClient 54 53 , public WebCore::CoordinatedGraphicsLayerClient 55 , public WebCore::CoordinatedImageBacking::Client56 54 , public WebCore::GraphicsLayerFactory { 57 55 WTF_MAKE_NONCOPYABLE(CompositingCoordinator); … … 96 94 float pageScaleFactor() const override; 97 95 98 // CoordinatedImageBacking::Client99 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 104 96 // CoordinatedGraphicsLayerClient 105 97 bool isFlushingLayerChanges() const override { return m_isFlushingLayerChanges; } 106 98 WebCore::FloatRect visibleContentsRect() const override; 107 Ref<WebCore::CoordinatedImageBacking> createImageBackingIfNeeded(WebCore::Image&) override;108 99 void detachLayer(WebCore::CoordinatedGraphicsLayer*) override; 109 100 void attachLayer(WebCore::CoordinatedGraphicsLayer*) override; … … 115 106 116 107 void initializeRootCompositingLayerIfNeeded(); 117 void flushPendingImageBackingChanges();118 108 void clearPendingStateChanges(); 119 109 … … 136 126 137 127 HashMap<WebCore::CoordinatedLayerID, WebCore::CoordinatedGraphicsLayer*> m_registeredLayers; 138 HashMap<WebCore::CoordinatedImageBackingID, RefPtr<WebCore::CoordinatedImageBacking>> m_imageBackings;139 128 140 129 std::unique_ptr<Nicosia::PaintingEngine> m_paintingEngine;
Note: See TracChangeset
for help on using the changeset viewer.