From 404a0cc6db13cf2f7ddfbb63d927b3f20aed9287 Mon Sep 17 00:00:00 2001 From: Etienne Membrives Date: Tue, 16 Dec 2014 13:56:09 +0100 Subject: [PATCH] Update from https://crrev.com/308331 Fix ui/compositor/compositor.(h|cpp) based on http://crrev.com/738983002 Fix sky/engine based on current Blink code R=qsr@chromium.org Review URL: https://codereview.chromium.org/812543002 --- engine/core/rendering/RenderBlock.cpp | 8 ---- engine/platform/graphics/GraphicsContext.cpp | 19 -------- engine/platform/graphics/GraphicsContext.h | 3 -- .../graphics/GraphicsContextCullSaver.h | 46 ------------------- .../graphics/GraphicsContextRecorder.cpp | 11 +++-- engine/platform/graphics/InterceptingCanvas.h | 3 -- engine/platform/graphics/LoggingCanvas.cpp | 30 ++---------- engine/platform/graphics/LoggingCanvas.h | 3 -- engine/platform/graphics/ProfilingCanvas.cpp | 18 -------- engine/platform/graphics/ProfilingCanvas.h | 3 -- engine/platform/graphics/ReplayingCanvas.cpp | 18 -------- engine/platform/graphics/ReplayingCanvas.h | 3 -- 12 files changed, 9 insertions(+), 156 deletions(-) delete mode 100644 engine/platform/graphics/GraphicsContextCullSaver.h diff --git a/engine/core/rendering/RenderBlock.cpp b/engine/core/rendering/RenderBlock.cpp index e4f0aef242d..1c66659ef4c 100644 --- a/engine/core/rendering/RenderBlock.cpp +++ b/engine/core/rendering/RenderBlock.cpp @@ -49,7 +49,6 @@ #include "sky/engine/core/rendering/style/RenderStyle.h" #include "sky/engine/platform/geometry/FloatQuad.h" #include "sky/engine/platform/geometry/TransformState.h" -#include "sky/engine/platform/graphics/GraphicsContextCullSaver.h" #include "sky/engine/platform/graphics/GraphicsContextStateSaver.h" #include "sky/engine/wtf/StdLibExtras.h" #include "sky/engine/wtf/TemporaryChange.h" @@ -597,13 +596,6 @@ void RenderBlock::paint(PaintInfo& paintInfo, const LayoutPoint& paintOffset) bool pushedClip = pushContentsClip(paintInfo, adjustedPaintOffset, contentsClipBehavior); { - GraphicsContextCullSaver cullSaver(*paintInfo.context); - // Cull if we have more than one child and we didn't already clip. - bool shouldCull = document().settings()->containerCullingEnabled() && !pushedClip && !isDocumentElement() - && firstChild() && lastChild() && firstChild() != lastChild(); - if (shouldCull) - cullSaver.cull(overflowBox); - paintObject(paintInfo, adjustedPaintOffset); } if (pushedClip) diff --git a/engine/platform/graphics/GraphicsContext.cpp b/engine/platform/graphics/GraphicsContext.cpp index 8f17728719b..2a7fb351330 100644 --- a/engine/platform/graphics/GraphicsContext.cpp +++ b/engine/platform/graphics/GraphicsContext.cpp @@ -1471,25 +1471,6 @@ void GraphicsContext::clipRRect(const SkRRect& rect, AntiAliasingMode aa, SkRegi m_canvas->clipRRect(rect, op, aa == AntiAliased); } -void GraphicsContext::beginCull(const FloatRect& rect) -{ - if (contextDisabled()) - return; - - realizeCanvasSave(); - m_canvas->pushCull(rect); -} - -void GraphicsContext::endCull() -{ - if (contextDisabled()) - return; - - realizeCanvasSave(); - - m_canvas->popCull(); -} - void GraphicsContext::rotate(float angleInRadians) { if (contextDisabled()) diff --git a/engine/platform/graphics/GraphicsContext.h b/engine/platform/graphics/GraphicsContext.h index 6f59a2f2603..782fa23e84d 100644 --- a/engine/platform/graphics/GraphicsContext.h +++ b/engine/platform/graphics/GraphicsContext.h @@ -325,9 +325,6 @@ public: void beginLayer(float opacity, CompositeOperator, const FloatRect* = 0, ColorFilter = ColorFilterNone, ImageFilter* = 0); void endLayer(); - void beginCull(const FloatRect&); - void endCull(); - // Instead of being dispatched to the active canvas, draw commands following beginRecording() // are stored in a display list that can be replayed at a later time. void beginRecording(const FloatRect& bounds); diff --git a/engine/platform/graphics/GraphicsContextCullSaver.h b/engine/platform/graphics/GraphicsContextCullSaver.h deleted file mode 100644 index 7ea99f4c7ba..00000000000 --- a/engine/platform/graphics/GraphicsContextCullSaver.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef GraphicsContextCullSaver_h -#define GraphicsContextCullSaver_h - -#include "sky/engine/platform/graphics/GraphicsContext.h" - -namespace blink { - -class FloatRect; - -class GraphicsContextCullSaver { - WTF_MAKE_FAST_ALLOCATED; -public: - GraphicsContextCullSaver(GraphicsContext& context) - : m_context(context) - , m_cullApplied(false) - { - } - - GraphicsContextCullSaver(GraphicsContext& context, const FloatRect& rect) - : m_context(context) - , m_cullApplied(true) - { - context.beginCull(rect); - } - - ~GraphicsContextCullSaver() - { - if (m_cullApplied) - m_context.endCull(); - } - - void cull(const FloatRect& rect) - { - ASSERT(!m_cullApplied); - m_context.beginCull(rect); - m_cullApplied = true; - } - -private: - GraphicsContext& m_context; - bool m_cullApplied; -}; - -} // namespace blink - -#endif // GraphicsContextCullSaver_h diff --git a/engine/platform/graphics/GraphicsContextRecorder.cpp b/engine/platform/graphics/GraphicsContextRecorder.cpp index 6b8851b3917..05d82f6f6b5 100644 --- a/engine/platform/graphics/GraphicsContextRecorder.cpp +++ b/engine/platform/graphics/GraphicsContextRecorder.cpp @@ -100,10 +100,9 @@ PassRefPtr GraphicsContextSnapshot::load(const char* da PassOwnPtr > GraphicsContextSnapshot::replay(unsigned fromStep, unsigned toStep, double scale) const { - int width = ceil(scale * m_picture->width()); - int height = ceil(scale * m_picture->height()); + const SkIRect bounds = m_picture->cullRect().roundOut(); SkBitmap bitmap; - bitmap.allocPixels(SkImageInfo::MakeN32Premul(width, height)); + bitmap.allocPixels(SkImageInfo::MakeN32Premul(bounds.width(), bounds.height())); { ReplayingCanvas canvas(bitmap, fromStep, toStep); canvas.scale(scale, scale); @@ -122,8 +121,9 @@ PassOwnPtr GraphicsContextSnapshot::profile(un { OwnPtr timings = adoptPtr(new GraphicsContextSnapshot::Timings()); timings->reserveCapacity(minRepeatCount); + const SkIRect bounds = m_picture->cullRect().roundOut(); SkBitmap bitmap; - bitmap.allocPixels(SkImageInfo::MakeN32Premul(m_picture->width(), m_picture->height())); + bitmap.allocPixels(SkImageInfo::MakeN32Premul(bounds.width(), bounds.height())); OwnPtr canvas = adoptPtr(new ProfilingCanvas(bitmap)); double now = WTF::monotonicallyIncreasingTime(); @@ -144,7 +144,8 @@ PassOwnPtr GraphicsContextSnapshot::profile(un PassRefPtr GraphicsContextSnapshot::snapshotCommandLog() const { - LoggingCanvas canvas(m_picture->width(), m_picture->height()); + const SkIRect bounds = m_picture->cullRect().roundOut(); + LoggingCanvas canvas(bounds.width(), bounds.height()); m_picture->draw(&canvas); return canvas.log(); } diff --git a/engine/platform/graphics/InterceptingCanvas.h b/engine/platform/graphics/InterceptingCanvas.h index a3e9ba55bec..32e50a43574 100644 --- a/engine/platform/graphics/InterceptingCanvas.h +++ b/engine/platform/graphics/InterceptingCanvas.h @@ -48,7 +48,6 @@ public: virtual void drawPath(const SkPath&, const SkPaint&) override = 0; virtual void drawBitmap(const SkBitmap&, SkScalar left, SkScalar top, const SkPaint* = 0) override = 0; virtual void drawBitmapRectToRect(const SkBitmap&, const SkRect* src, const SkRect& dst, const SkPaint*, DrawBitmapRectFlags) override = 0; - virtual void drawBitmapMatrix(const SkBitmap&, const SkMatrix&, const SkPaint* = 0) override = 0; virtual void drawBitmapNine(const SkBitmap&, const SkIRect& center, const SkRect& dst, const SkPaint*) override = 0; virtual void drawSprite(const SkBitmap&, int left, int top, const SkPaint* = 0) override = 0; virtual void drawVertices(VertexMode vmode, int vertexCount, const SkPoint vertices[], const SkPoint texs[], @@ -63,8 +62,6 @@ public: virtual void onDrawPosText(const void* text, size_t byteLength, const SkPoint pos[], const SkPaint&) override = 0; virtual void onDrawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], SkScalar constY, const SkPaint&) override = 0; virtual void onDrawTextOnPath(const void* text, size_t byteLength, const SkPath&, const SkMatrix*, const SkPaint&) override = 0; - virtual void onPushCull(const SkRect& cullRect) override = 0; - virtual void onPopCull() override = 0; virtual void onClipRect(const SkRect&, SkRegion::Op, ClipEdgeStyle) override = 0; virtual void onClipRRect(const SkRRect&, SkRegion::Op, ClipEdgeStyle) override = 0; virtual void onClipPath(const SkPath&, SkRegion::Op, ClipEdgeStyle) override = 0; diff --git a/engine/platform/graphics/LoggingCanvas.cpp b/engine/platform/graphics/LoggingCanvas.cpp index 18adab937c1..8cb941fe45f 100644 --- a/engine/platform/graphics/LoggingCanvas.cpp +++ b/engine/platform/graphics/LoggingCanvas.cpp @@ -160,16 +160,6 @@ void LoggingCanvas::drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* s this->SkCanvas::drawBitmapRectToRect(bitmap, src, dst, paint, flags); } -void LoggingCanvas::drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m, const SkPaint* paint) -{ - AutoLogger logger(this); - RefPtr params = logger.logItemWithParams("drawBitmapMatrix"); - params->setObject("bitmap", objectForSkBitmap(bitmap)); - params->setArray("matrix", arrayForSkMatrix(m)); - params->setObject("paint", objectForSkPaint(*paint)); - this->SkCanvas::drawBitmapMatrix(bitmap, m, paint); -} - void LoggingCanvas::drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst, const SkPaint* paint) { AutoLogger logger(this); @@ -288,21 +278,6 @@ void LoggingCanvas::onDrawTextOnPath(const void* text, size_t byteLength, const this->SkCanvas::onDrawTextOnPath(text, byteLength, path, matrix, paint); } -void LoggingCanvas::onPushCull(const SkRect& cullRect) -{ - AutoLogger logger(this); - RefPtr params = logger.logItemWithParams("pushCull"); - params->setObject("cullRect", objectForSkRect(cullRect)); - this->SkCanvas::onPushCull(cullRect); -} - -void LoggingCanvas::onPopCull() -{ - AutoLogger logger(this); - logger.logItem("popCull"); - this->SkCanvas::onPopCull(); -} - void LoggingCanvas::onClipRect(const SkRect& rect, SkRegion::Op op, ClipEdgeStyle style) { AutoLogger logger(this); @@ -461,9 +436,10 @@ PassRefPtr LoggingCanvas::arrayForSkPoints(size_t count, const SkPoin PassRefPtr LoggingCanvas::objectForSkPicture(const SkPicture& picture) { + const SkIRect bounds = picture.cullRect().roundOut(); RefPtr pictureItem = JSONObject::create(); - pictureItem->setNumber("width", picture.width()); - pictureItem->setNumber("height", picture.height()); + pictureItem->setNumber("width", bounds.width()); + pictureItem->setNumber("height", bounds.height()); return pictureItem.release(); } diff --git a/engine/platform/graphics/LoggingCanvas.h b/engine/platform/graphics/LoggingCanvas.h index 348301554ac..6abb7a324e2 100644 --- a/engine/platform/graphics/LoggingCanvas.h +++ b/engine/platform/graphics/LoggingCanvas.h @@ -49,7 +49,6 @@ public: virtual void drawPath(const SkPath&, const SkPaint&) override; virtual void drawBitmap(const SkBitmap&, SkScalar left, SkScalar top, const SkPaint* = 0) override; virtual void drawBitmapRectToRect(const SkBitmap&, const SkRect* src, const SkRect& dst, const SkPaint*, DrawBitmapRectFlags) override; - virtual void drawBitmapMatrix(const SkBitmap&, const SkMatrix&, const SkPaint* = 0) override; virtual void drawBitmapNine(const SkBitmap&, const SkIRect& center, const SkRect& dst, const SkPaint*) override; virtual void drawSprite(const SkBitmap&, int left, int top, const SkPaint* = 0) override; virtual void drawVertices(VertexMode vmode, int vertexCount, const SkPoint vertices[], const SkPoint texs[], @@ -64,8 +63,6 @@ public: virtual void onDrawPosText(const void* text, size_t byteLength, const SkPoint pos[], const SkPaint&) override; virtual void onDrawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], SkScalar constY, const SkPaint&) override; virtual void onDrawTextOnPath(const void* text, size_t byteLength, const SkPath&, const SkMatrix*, const SkPaint&) override; - virtual void onPushCull(const SkRect& cullRect) override; - virtual void onPopCull() override; virtual void onClipRect(const SkRect&, SkRegion::Op, ClipEdgeStyle) override; virtual void onClipRRect(const SkRRect&, SkRegion::Op, ClipEdgeStyle) override; virtual void onClipPath(const SkPath&, SkRegion::Op, ClipEdgeStyle) override; diff --git a/engine/platform/graphics/ProfilingCanvas.cpp b/engine/platform/graphics/ProfilingCanvas.cpp index 2940339011e..728a5c03ea4 100644 --- a/engine/platform/graphics/ProfilingCanvas.cpp +++ b/engine/platform/graphics/ProfilingCanvas.cpp @@ -118,12 +118,6 @@ void ProfilingCanvas::drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* this->SkCanvas::drawBitmapRectToRect(bitmap, src, dst, paint, flags); } -void ProfilingCanvas::drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m, const SkPaint* paint) -{ - AutoStamper stamper(this); - this->SkCanvas::drawBitmapMatrix(bitmap, m, paint); -} - void ProfilingCanvas::drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst, const SkPaint* paint) { AutoStamper stamper(this); @@ -197,18 +191,6 @@ void ProfilingCanvas::onDrawTextOnPath(const void* text, size_t byteLength, cons this->SkCanvas::onDrawTextOnPath(text, byteLength, path, matrix, paint); } -void ProfilingCanvas::onPushCull(const SkRect& cullRect) -{ - AutoStamper stamper(this); - this->SkCanvas::onPushCull(cullRect); -} - -void ProfilingCanvas::onPopCull() -{ - AutoStamper stamper(this); - this->SkCanvas::onPopCull(); -} - void ProfilingCanvas::onClipRect(const SkRect& rect, SkRegion::Op op, ClipEdgeStyle edgeStyle) { AutoStamper stamper(this); diff --git a/engine/platform/graphics/ProfilingCanvas.h b/engine/platform/graphics/ProfilingCanvas.h index b390ab482b3..4ec11f2be9a 100644 --- a/engine/platform/graphics/ProfilingCanvas.h +++ b/engine/platform/graphics/ProfilingCanvas.h @@ -49,7 +49,6 @@ public: virtual void drawPath(const SkPath&, const SkPaint&) override; virtual void drawBitmap(const SkBitmap&, SkScalar left, SkScalar top, const SkPaint* = 0) override; virtual void drawBitmapRectToRect(const SkBitmap&, const SkRect* src, const SkRect& dst, const SkPaint*, DrawBitmapRectFlags) override; - virtual void drawBitmapMatrix(const SkBitmap&, const SkMatrix&, const SkPaint* = 0) override; virtual void drawBitmapNine(const SkBitmap&, const SkIRect& center, const SkRect& dst, const SkPaint*) override; virtual void drawSprite(const SkBitmap&, int left, int top, const SkPaint* = 0) override; virtual void drawVertices(VertexMode vmode, int vertexCount, const SkPoint vertices[], const SkPoint texs[], @@ -64,8 +63,6 @@ public: virtual void onDrawPosText(const void* text, size_t byteLength, const SkPoint pos[], const SkPaint&) override; virtual void onDrawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], SkScalar constY, const SkPaint&) override; virtual void onDrawTextOnPath(const void* text, size_t byteLength, const SkPath&, const SkMatrix*, const SkPaint&) override; - virtual void onPushCull(const SkRect& cullRect) override; - virtual void onPopCull() override; virtual void onClipRect(const SkRect&, SkRegion::Op, ClipEdgeStyle) override; virtual void onClipRRect(const SkRRect&, SkRegion::Op, ClipEdgeStyle) override; virtual void onClipPath(const SkPath&, SkRegion::Op, ClipEdgeStyle) override; diff --git a/engine/platform/graphics/ReplayingCanvas.cpp b/engine/platform/graphics/ReplayingCanvas.cpp index 3c13a10b6ba..dbb2d195385 100644 --- a/engine/platform/graphics/ReplayingCanvas.cpp +++ b/engine/platform/graphics/ReplayingCanvas.cpp @@ -132,12 +132,6 @@ void ReplayingCanvas::drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* this->SkCanvas::drawBitmapRectToRect(bitmap, src, dst, paint, flags); } -void ReplayingCanvas::drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m, const SkPaint* paint) -{ - AutoReplayer replayer(this); - this->SkCanvas::drawBitmapMatrix(bitmap, m, paint); -} - void ReplayingCanvas::drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst, const SkPaint* paint) { AutoReplayer replayer(this); @@ -211,18 +205,6 @@ void ReplayingCanvas::onDrawTextOnPath(const void* text, size_t byteLength, cons this->SkCanvas::onDrawTextOnPath(text, byteLength, path, matrix, paint); } -void ReplayingCanvas::onPushCull(const SkRect& cullRect) -{ - AutoReplayer replayer(this); - this->SkCanvas::onPushCull(cullRect); -} - -void ReplayingCanvas::onPopCull() -{ - AutoReplayer replayer(this); - this->SkCanvas::onPopCull(); -} - void ReplayingCanvas::onClipRect(const SkRect& rect, SkRegion::Op op, ClipEdgeStyle edgeStyle) { AutoReplayer replayer(this); diff --git a/engine/platform/graphics/ReplayingCanvas.h b/engine/platform/graphics/ReplayingCanvas.h index a8e95415fc0..4939db62ccb 100644 --- a/engine/platform/graphics/ReplayingCanvas.h +++ b/engine/platform/graphics/ReplayingCanvas.h @@ -51,7 +51,6 @@ public: virtual void drawPath(const SkPath&, const SkPaint&) override; virtual void drawBitmap(const SkBitmap&, SkScalar left, SkScalar top, const SkPaint* = 0) override; virtual void drawBitmapRectToRect(const SkBitmap&, const SkRect* src, const SkRect& dst, const SkPaint*, DrawBitmapRectFlags) override; - virtual void drawBitmapMatrix(const SkBitmap&, const SkMatrix&, const SkPaint* = 0) override; virtual void drawBitmapNine(const SkBitmap&, const SkIRect& center, const SkRect& dst, const SkPaint*) override; virtual void drawSprite(const SkBitmap&, int left, int top, const SkPaint* = 0) override; virtual void drawVertices(VertexMode vmode, int vertexCount, const SkPoint vertices[], const SkPoint texs[], @@ -66,8 +65,6 @@ public: virtual void onDrawPosText(const void* text, size_t byteLength, const SkPoint pos[], const SkPaint&) override; virtual void onDrawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], SkScalar constY, const SkPaint&) override; virtual void onDrawTextOnPath(const void* text, size_t byteLength, const SkPath&, const SkMatrix*, const SkPaint&) override; - virtual void onPushCull(const SkRect& cullRect) override; - virtual void onPopCull() override; virtual void onClipRect(const SkRect&, SkRegion::Op, ClipEdgeStyle) override; virtual void onClipRRect(const SkRRect&, SkRegion::Op, ClipEdgeStyle) override; virtual void onClipPath(const SkPath&, SkRegion::Op, ClipEdgeStyle) override;