diff options
Diffstat (limited to 'Source/WebKit2/UIProcess/CoordinatedGraphics')
6 files changed, 48 insertions, 33 deletions
diff --git a/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp b/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp index 84f6ebd2f..77fdc0a26 100644 --- a/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp +++ b/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp @@ -80,15 +80,15 @@ void CoordinatedBackingStore::updateTile(int id, const IntRect& sourceRect, cons { HashMap<int, CoordinatedBackingStoreTile>::iterator it = m_tiles.find(id); ASSERT(it != m_tiles.end()); - it->second.incrementRepaintCount(); - it->second.setBackBuffer(targetRect, sourceRect, backBuffer, offset); + it->value.incrementRepaintCount(); + it->value.setBackBuffer(targetRect, sourceRect, backBuffer, offset); } PassRefPtr<BitmapTexture> CoordinatedBackingStore::texture() const { HashMap<int, CoordinatedBackingStoreTile>::const_iterator end = m_tiles.end(); for (HashMap<int, CoordinatedBackingStoreTile>::const_iterator it = m_tiles.begin(); it != end; ++it) { - RefPtr<BitmapTexture> texture = it->second.texture(); + RefPtr<BitmapTexture> texture = it->value.texture(); if (texture) return texture; } @@ -112,7 +112,7 @@ void CoordinatedBackingStore::paintToTextureMapper(TextureMapper* textureMapper, HashMap<int, CoordinatedBackingStoreTile>::iterator end = m_tiles.end(); FloatRect coveredRect; for (HashMap<int, CoordinatedBackingStoreTile>::iterator it = m_tiles.begin(); it != end; ++it) { - CoordinatedBackingStoreTile& tile = it->second; + CoordinatedBackingStoreTile& tile = it->value; if (!tile.texture()) continue; @@ -156,7 +156,7 @@ void CoordinatedBackingStore::commitTileOperations(TextureMapper* textureMapper) HashMap<int, CoordinatedBackingStoreTile>::iterator tilesEnd = m_tiles.end(); for (HashMap<int, CoordinatedBackingStoreTile>::iterator it = m_tiles.begin(); it != tilesEnd; ++it) - it->second.swapBuffers(textureMapper); + it->value.swapBuffers(textureMapper); } } // namespace WebKit diff --git a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp index e6f582f22..1953afb61 100644 --- a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp +++ b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp @@ -66,14 +66,14 @@ void LayerTreeCoordinatorProxy::updateTileForLayer(int layerID, int tileID, cons { RefPtr<ShareableSurface> surface; #if USE(GRAPHICS_SURFACE) - uint64_t token = updateInfo.surfaceHandle.graphicsSurfaceToken(); - if (token) { - HashMap<uint64_t, RefPtr<ShareableSurface> >::iterator it = m_surfaces.find(token); + GraphicsSurfaceToken token = updateInfo.surfaceHandle.graphicsSurfaceToken(); + if (token.isValid()) { + HashMap<GraphicsSurfaceToken::BufferHandle, RefPtr<ShareableSurface> >::iterator it = m_surfaces.find(token.frontBufferHandle); if (it == m_surfaces.end()) { surface = ShareableSurface::create(updateInfo.surfaceHandle); - m_surfaces.add(token, surface); + m_surfaces.add(token.frontBufferHandle, surface); } else - surface = it->second; + surface = it->value; } else surface = ShareableSurface::create(updateInfo.surfaceHandle); #else @@ -116,10 +116,16 @@ void LayerTreeCoordinatorProxy::setCompositingLayerFilters(WebLayerID id, const } #endif -void LayerTreeCoordinatorProxy::didRenderFrame() +void LayerTreeCoordinatorProxy::didRenderFrame(const WebCore::IntSize& contentsSize, const WebCore::IntRect& coveredRect) { dispatchUpdate(bind(&LayerTreeRenderer::flushLayerChanges, m_renderer.get())); updateViewport(); +#if PLATFORM(QT) + m_drawingAreaProxy->page()->didRenderFrame(contentsSize, coveredRect); +#else + UNUSED_PARAM(contentsSize); + UNUSED_PARAM(coveredRect); +#endif } void LayerTreeCoordinatorProxy::createDirectlyCompositedImage(int64_t key, const WebKit::ShareableBitmap::Handle& handle) @@ -174,10 +180,12 @@ void LayerTreeCoordinatorProxy::didChangeScrollPosition(const IntPoint& position dispatchUpdate(bind(&LayerTreeRenderer::didChangeScrollPosition, m_renderer.get(), position)); } -void LayerTreeCoordinatorProxy::syncCanvas(uint32_t id, const IntSize& canvasSize, uint64_t graphicsSurfaceToken, uint32_t frontBuffer) +#if USE(GRAPHICS_SURFACE) +void LayerTreeCoordinatorProxy::syncCanvas(uint32_t id, const IntSize& canvasSize, const GraphicsSurfaceToken& token, uint32_t frontBuffer) { - dispatchUpdate(bind(&LayerTreeRenderer::syncCanvas, m_renderer.get(), id, canvasSize, graphicsSurfaceToken, frontBuffer)); + dispatchUpdate(bind(&LayerTreeRenderer::syncCanvas, m_renderer.get(), id, canvasSize, token, frontBuffer)); } +#endif void LayerTreeCoordinatorProxy::purgeBackingStores() { diff --git a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h index 65a9f5e99..b1ef401a4 100644 --- a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h +++ b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h @@ -29,6 +29,7 @@ #include "WebLayerTreeInfo.h" #include <WebCore/GraphicsContext.h> #include <WebCore/GraphicsLayer.h> +#include <WebCore/GraphicsSurfaceToken.h> #include <WebCore/IntRect.h> #include <WebCore/IntSize.h> #include <WebCore/RunLoop.h> @@ -63,7 +64,7 @@ public: void purgeGLResources(); void setContentsSize(const WebCore::FloatSize&); void setVisibleContentsRect(const WebCore::FloatRect&, float scale, const WebCore::FloatPoint& trajectoryVector); - void didRenderFrame(); + void didRenderFrame(const WebCore::IntSize& contentsSize, const WebCore::IntRect& coveredRect); void createTileForLayer(int layerID, int tileID, const WebCore::IntRect&, const SurfaceUpdateInfo&); void updateTileForLayer(int layerID, int tileID, const WebCore::IntRect&, const SurfaceUpdateInfo&); void removeTileForLayer(int layerID, int tileID); @@ -73,7 +74,9 @@ public: void updateViewport(); void renderNextFrame(); void didChangeScrollPosition(const WebCore::IntPoint& position); - void syncCanvas(uint32_t id, const WebCore::IntSize& canvasSize, uint64_t graphicsSurfaceToken, uint32_t frontBuffer); +#if USE(GRAPHICS_SURFACE) + void syncCanvas(uint32_t id, const WebCore::IntSize& canvasSize, const WebCore::GraphicsSurfaceToken&, uint32_t frontBuffer); +#endif void purgeBackingStores(); LayerTreeRenderer* layerTreeRenderer() const { return m_renderer.get(); } void setLayerAnimatedOpacity(uint32_t, float); @@ -88,7 +91,7 @@ protected: float m_lastSentScale; WebCore::FloatPoint m_lastSentTrajectoryVector; #if USE(GRAPHICS_SURFACE) - HashMap<uint64_t, RefPtr<ShareableSurface> > m_surfaces; + HashMap<WebCore::GraphicsSurfaceToken::BufferHandle, RefPtr<ShareableSurface> > m_surfaces; #endif }; diff --git a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.messages.in b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.messages.in index 23869233c..b73960021 100644 --- a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.messages.in +++ b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.messages.in @@ -31,9 +31,11 @@ messages -> LayerTreeCoordinatorProxy { RemoveTileForLayer(uint32_t layerID, int tileID) CreateDirectlyCompositedImage(int64_t key, WebKit::ShareableBitmap::Handle handle) DestroyDirectlyCompositedImage(int64_t key) - DidRenderFrame() + DidRenderFrame(WebCore::IntSize contentsSize, WebCore::IntRect coveredRect) DidChangeScrollPosition(WebCore::IntPoint position) - SyncCanvas(uint32_t id, WebCore::IntSize canvasSize, uint64_t graphicsSurfaceToken, uint32_t frontBuffer) +#if USE(GRAPHICS_SURFACE) + SyncCanvas(uint32_t id, WebCore::IntSize canvasSize, WebCore::GraphicsSurfaceToken token, uint32_t frontBuffer) +#endif SetLayerAnimatedOpacity(uint32_t id, float opacity) SetLayerAnimatedTransform(uint32_t id, WebCore::TransformationMatrix transform) } diff --git a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp index b94c66b9d..f053a57a6 100644 --- a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp +++ b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp @@ -126,7 +126,7 @@ void LayerTreeRenderer::paintToCurrentGLContext(const TransformationMatrix& matr if (currentRootLayer->opacity() != opacity || currentRootLayer->transform() != matrix) { currentRootLayer->setOpacity(opacity); currentRootLayer->setTransform(matrix); - currentRootLayer->syncCompositingStateForThisLayerOnly(); + currentRootLayer->flushCompositingStateForThisLayerOnly(); } layer->paint(); @@ -183,7 +183,7 @@ void LayerTreeRenderer::adjustPositionForFixedLayers() LayerMap::iterator end = m_fixedLayers.end(); for (LayerMap::iterator it = m_fixedLayers.begin(); it != end; ++it) - toTextureMapperLayer(it->second)->setScrollPositionDeltaIfNeeded(delta); + toTextureMapperLayer(it->value)->setScrollPositionDeltaIfNeeded(delta); } void LayerTreeRenderer::didChangeScrollPosition(const IntPoint& position) @@ -191,12 +191,12 @@ void LayerTreeRenderer::didChangeScrollPosition(const IntPoint& position) m_pendingRenderedContentsScrollPosition = position; } -void LayerTreeRenderer::syncCanvas(WebLayerID id, const WebCore::IntSize& canvasSize, uint64_t graphicsSurfaceToken, uint32_t frontBuffer) +#if USE(GRAPHICS_SURFACE) +void LayerTreeRenderer::syncCanvas(WebLayerID id, const WebCore::IntSize& canvasSize, const GraphicsSurfaceToken& token, uint32_t frontBuffer) { if (canvasSize.isEmpty() || !m_textureMapper) return; -#if USE(GRAPHICS_SURFACE) ensureLayer(id); GraphicsLayer* layer = layerByID(id); @@ -206,18 +206,18 @@ void LayerTreeRenderer::syncCanvas(WebLayerID id, const WebCore::IntSize& canvas canvasBackingStore = TextureMapperSurfaceBackingStore::create(); m_surfaceBackingStores.set(id, canvasBackingStore); } else - canvasBackingStore = it->second; + canvasBackingStore = it->value; - canvasBackingStore->setGraphicsSurface(graphicsSurfaceToken, canvasSize, frontBuffer); + canvasBackingStore->setGraphicsSurface(token, canvasSize, frontBuffer); layer->setContentsToMedia(canvasBackingStore.get()); -#endif } +#endif void LayerTreeRenderer::setLayerChildren(WebLayerID id, const Vector<WebLayerID>& childIDs) { ensureLayer(id); LayerMap::iterator it = m_layers.find(id); - GraphicsLayer* layer = it->second; + GraphicsLayer* layer = it->value; Vector<GraphicsLayer*> children; for (size_t i = 0; i < childIDs.size(); ++i) { @@ -239,7 +239,7 @@ void LayerTreeRenderer::setLayerFilters(WebLayerID id, const FilterOperations& f LayerMap::iterator it = m_layers.find(id); ASSERT(it != m_layers.end()); - GraphicsLayer* layer = it->second; + GraphicsLayer* layer = it->value; layer->setFilters(filters); } #endif @@ -250,7 +250,7 @@ void LayerTreeRenderer::setLayerState(WebLayerID id, const WebLayerInfo& layerIn LayerMap::iterator it = m_layers.find(id); ASSERT(it != m_layers.end()); - GraphicsLayer* layer = it->second; + GraphicsLayer* layer = it->value; layer->setReplicatedByLayer(layerByID(layerInfo.replica)); layer->setMaskLayer(layerByID(layerInfo.mask)); @@ -377,7 +377,7 @@ void LayerTreeRenderer::assignImageToLayer(GraphicsLayer* layer, int64_t imageID HashMap<int64_t, RefPtr<TextureMapperBackingStore> >::iterator it = m_directlyCompositedImages.find(imageID); ASSERT(it != m_directlyCompositedImages.end()); - layer->setContentsToMedia(it->second.get()); + layer->setContentsToMedia(it->value.get()); } void LayerTreeRenderer::commitTileOperations() @@ -393,7 +393,7 @@ void LayerTreeRenderer::flushLayerChanges() { m_renderedContentsScrollPosition = m_pendingRenderedContentsScrollPosition; - m_rootLayer->syncCompositingState(FloatRect()); + m_rootLayer->flushCompositingState(FloatRect()); commitTileOperations(); // The pending tiles state is on its way for the screen, tell the web process to render the next one. diff --git a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h index 4e45678e6..0a6ae3b88 100644 --- a/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h +++ b/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h @@ -22,13 +22,13 @@ #if USE(COORDINATED_GRAPHICS) #include "BackingStore.h" -#include "GraphicsSurface.h" #include "ShareableSurface.h" #include "TextureMapper.h" #include "TextureMapperBackingStore.h" #include "WebLayerTreeInfo.h" #include <WebCore/GraphicsContext.h> #include <WebCore/GraphicsLayer.h> +#include <WebCore/GraphicsSurface.h> #include <WebCore/IntRect.h> #include <WebCore/IntSize.h> #include <WebCore/RunLoop.h> @@ -68,7 +68,9 @@ public: void setContentsSize(const WebCore::FloatSize&); void setVisibleContentsRect(const WebCore::FloatRect&); void didChangeScrollPosition(const WebCore::IntPoint& position); - void syncCanvas(uint32_t id, const WebCore::IntSize& canvasSize, uint64_t graphicsSurfaceToken, uint32_t frontBuffer); +#if USE(GRAPHICS_SURFACE) + void syncCanvas(uint32_t id, const WebCore::IntSize& canvasSize, const WebCore::GraphicsSurfaceToken&, uint32_t frontBuffer); +#endif void detach(); void appendUpdate(const Function<void()>&); @@ -100,7 +102,7 @@ private: // Reimplementations from WebCore::GraphicsLayerClient. virtual void notifyAnimationStarted(const WebCore::GraphicsLayer*, double) { } - virtual void notifySyncRequired(const WebCore::GraphicsLayer*) { } + virtual void notifyFlushRequired(const WebCore::GraphicsLayer*) { } virtual bool showDebugBorders(const WebCore::GraphicsLayer*) const { return false; } virtual bool showRepaintCounter(const WebCore::GraphicsLayer*) const { return false; } void paintContents(const WebCore::GraphicsLayer*, WebCore::GraphicsContext&, WebCore::GraphicsLayerPaintingPhase, const WebCore::IntRect&) { } |