From e859a34171f2a36877d95197d118d962078f8aa0 Mon Sep 17 00:00:00 2001 From: John Reck Date: Fri, 27 Apr 2012 08:13:38 -0700 Subject: Rewrite PictureSet with TURBO! This changes how partial invals are done by adding a hybrid mode. What we used to do is generate a SkPicture for the new area. This SkPicture would possibly be larger than the actual inval, depending on various merge rules (more SkPictures == slower to draw a tile) The new code rewrites PictureSet entirely, preserving many of the old rules but cleans up the code and adds the concept of a "PrerenderedInval". This is a partial inval that WebKit has rasterized. By having WebKit produce both a SkPicture and a SkBitmap, we avoid needing to play back the picture and avoid overdrawing. We take this SkBitmap, and simply update the front textures with it. This gives us full partial invals through the entire system without hitting any driver bugs, and with minimal copies. And while the SkPicture may be larger than the inval, the SkBitmap that is rasterized is not - it matches the area webkit has said is dirty. Change-Id: Ieb7ecc9db0d4f679102fda004a43399f9b319ebc --- Source/WebCore/platform/graphics/android/rendering/Tile.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'Source/WebCore/platform/graphics/android/rendering/Tile.h') diff --git a/Source/WebCore/platform/graphics/android/rendering/Tile.h b/Source/WebCore/platform/graphics/android/rendering/Tile.h index c115f1c..9697b61 100644 --- a/Source/WebCore/platform/graphics/android/rendering/Tile.h +++ b/Source/WebCore/platform/graphics/android/rendering/Tile.h @@ -116,6 +116,7 @@ public: void markAsDirty(const SkRegion& dirtyArea); bool isDirty(); + const SkRegion& dirtyArea() { return m_dirtyArea; } virtual bool isRepaintPending(); void setRepaintPending(bool pending); float scale() const { return m_scale; } @@ -133,6 +134,7 @@ public: bool swapTexturesIfNeeded(); void backTextureTransfer(); void backTextureTransferFail(); + void onBlitUpdate(); // TextureOwner implementation virtual bool removeTexture(TileTexture* texture); -- cgit v1.1