Loading libs/hwui/DisplayListRenderer.h +1 −1 Original line number Diff line number Diff line Loading @@ -216,7 +216,7 @@ public: virtual void drawVertices(SkCanvas::VertexMode vertexMode, int vertexCount, const float* verts, const float* tex, const int* colors, const uint16_t* indices, int indexCount, const SkPaint& paint) override { LOG_ALWAYS_FATAL("DisplayListRenderer does not support drawVertices()"); } { /* DisplayListRenderer does not support drawVertices(); ignore */ } // Bitmap-based virtual void drawBitmap(const SkBitmap& bitmap, float left, float top, const SkPaint* paint) override; Loading libs/hwui/SkiaCanvasProxy.cpp +13 −2 Original line number Diff line number Diff line Loading @@ -22,9 +22,10 @@ namespace android { namespace uirenderer { SkiaCanvasProxy::SkiaCanvasProxy(Canvas* canvas) SkiaCanvasProxy::SkiaCanvasProxy(Canvas* canvas, bool filterHwuiCalls) : INHERITED(canvas->width(), canvas->height()) , mCanvas(canvas) {} , mCanvas(canvas) , mFilterHwuiCalls(filterHwuiCalls) {} void SkiaCanvasProxy::onDrawPaint(const SkPaint& paint) { mCanvas->drawPaint(paint); Loading @@ -32,6 +33,10 @@ void SkiaCanvasProxy::onDrawPaint(const SkPaint& paint) { void SkiaCanvasProxy::onDrawPoints(PointMode pointMode, size_t count, const SkPoint pts[], const SkPaint& paint) { if (!pts || count == 0) { return; } // convert the SkPoints into floats SK_COMPILE_ASSERT(sizeof(SkPoint) == sizeof(float)*2, SkPoint_is_no_longer_2_floats); const size_t floatCount = count << 1; Loading Loading @@ -118,6 +123,9 @@ void SkiaCanvasProxy::onDrawSprite(const SkBitmap& bitmap, int left, int top, void SkiaCanvasProxy::onDrawVertices(VertexMode mode, int vertexCount, const SkPoint vertices[], const SkPoint texs[], const SkColor colors[], SkXfermode*, const uint16_t indices[], int indexCount, const SkPaint& paint) { if (mFilterHwuiCalls) { return; } // convert the SkPoints into floats SK_COMPILE_ASSERT(sizeof(SkPoint) == sizeof(float)*2, SkPoint_is_no_longer_2_floats); const int floatCount = vertexCount << 1; Loading Loading @@ -312,6 +320,9 @@ void SkiaCanvasProxy::onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScala void SkiaCanvasProxy::onDrawPatch(const SkPoint cubics[12], const SkColor colors[4], const SkPoint texCoords[4], SkXfermode* xmode, const SkPaint& paint) { if (mFilterHwuiCalls) { return; } SkPatchUtils::VertexData data; SkMatrix matrix; Loading libs/hwui/SkiaCanvasProxy.h +7 −3 Original line number Diff line number Diff line Loading @@ -27,16 +27,19 @@ namespace uirenderer { /** * This class serves as a proxy between Skia's SkCanvas and Android Framework's * Canvas. The class does not maintain any state and will pass through any request * directly to the Canvas provided in the constructor. * Canvas. The class does not maintain any draw-related state and will pass * through most requests directly to the Canvas provided in the constructor. * * Upon construction it is expected that the provided Canvas has already been * prepared for recording and will continue to be in the recording state while * this proxy class is being used. * * If filterHwuiCalls is true, the proxy silently ignores away draw calls that * aren't supported by HWUI. */ class ANDROID_API SkiaCanvasProxy : public SkCanvas { public: SkiaCanvasProxy(Canvas* canvas); SkiaCanvasProxy(Canvas* canvas, bool filterHwuiCalls = false); virtual ~SkiaCanvasProxy() {} protected: Loading Loading @@ -94,6 +97,7 @@ protected: private: Canvas* mCanvas; bool mFilterHwuiCalls; typedef SkCanvas INHERITED; }; Loading Loading
libs/hwui/DisplayListRenderer.h +1 −1 Original line number Diff line number Diff line Loading @@ -216,7 +216,7 @@ public: virtual void drawVertices(SkCanvas::VertexMode vertexMode, int vertexCount, const float* verts, const float* tex, const int* colors, const uint16_t* indices, int indexCount, const SkPaint& paint) override { LOG_ALWAYS_FATAL("DisplayListRenderer does not support drawVertices()"); } { /* DisplayListRenderer does not support drawVertices(); ignore */ } // Bitmap-based virtual void drawBitmap(const SkBitmap& bitmap, float left, float top, const SkPaint* paint) override; Loading
libs/hwui/SkiaCanvasProxy.cpp +13 −2 Original line number Diff line number Diff line Loading @@ -22,9 +22,10 @@ namespace android { namespace uirenderer { SkiaCanvasProxy::SkiaCanvasProxy(Canvas* canvas) SkiaCanvasProxy::SkiaCanvasProxy(Canvas* canvas, bool filterHwuiCalls) : INHERITED(canvas->width(), canvas->height()) , mCanvas(canvas) {} , mCanvas(canvas) , mFilterHwuiCalls(filterHwuiCalls) {} void SkiaCanvasProxy::onDrawPaint(const SkPaint& paint) { mCanvas->drawPaint(paint); Loading @@ -32,6 +33,10 @@ void SkiaCanvasProxy::onDrawPaint(const SkPaint& paint) { void SkiaCanvasProxy::onDrawPoints(PointMode pointMode, size_t count, const SkPoint pts[], const SkPaint& paint) { if (!pts || count == 0) { return; } // convert the SkPoints into floats SK_COMPILE_ASSERT(sizeof(SkPoint) == sizeof(float)*2, SkPoint_is_no_longer_2_floats); const size_t floatCount = count << 1; Loading Loading @@ -118,6 +123,9 @@ void SkiaCanvasProxy::onDrawSprite(const SkBitmap& bitmap, int left, int top, void SkiaCanvasProxy::onDrawVertices(VertexMode mode, int vertexCount, const SkPoint vertices[], const SkPoint texs[], const SkColor colors[], SkXfermode*, const uint16_t indices[], int indexCount, const SkPaint& paint) { if (mFilterHwuiCalls) { return; } // convert the SkPoints into floats SK_COMPILE_ASSERT(sizeof(SkPoint) == sizeof(float)*2, SkPoint_is_no_longer_2_floats); const int floatCount = vertexCount << 1; Loading Loading @@ -312,6 +320,9 @@ void SkiaCanvasProxy::onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScala void SkiaCanvasProxy::onDrawPatch(const SkPoint cubics[12], const SkColor colors[4], const SkPoint texCoords[4], SkXfermode* xmode, const SkPaint& paint) { if (mFilterHwuiCalls) { return; } SkPatchUtils::VertexData data; SkMatrix matrix; Loading
libs/hwui/SkiaCanvasProxy.h +7 −3 Original line number Diff line number Diff line Loading @@ -27,16 +27,19 @@ namespace uirenderer { /** * This class serves as a proxy between Skia's SkCanvas and Android Framework's * Canvas. The class does not maintain any state and will pass through any request * directly to the Canvas provided in the constructor. * Canvas. The class does not maintain any draw-related state and will pass * through most requests directly to the Canvas provided in the constructor. * * Upon construction it is expected that the provided Canvas has already been * prepared for recording and will continue to be in the recording state while * this proxy class is being used. * * If filterHwuiCalls is true, the proxy silently ignores away draw calls that * aren't supported by HWUI. */ class ANDROID_API SkiaCanvasProxy : public SkCanvas { public: SkiaCanvasProxy(Canvas* canvas); SkiaCanvasProxy(Canvas* canvas, bool filterHwuiCalls = false); virtual ~SkiaCanvasProxy() {} protected: Loading Loading @@ -94,6 +97,7 @@ protected: private: Canvas* mCanvas; bool mFilterHwuiCalls; typedef SkCanvas INHERITED; }; Loading