Loading libs/hwui/pipeline/skia/SkiaRecordingCanvas.cpp +6 −12 Original line number Diff line number Diff line Loading @@ -32,7 +32,6 @@ namespace skiapipeline { void SkiaRecordingCanvas::initDisplayList(uirenderer::RenderNode* renderNode, int width, int height) { mBarrierPending = false; mCurrentBarrier = nullptr; SkASSERT(mDisplayList.get() == nullptr); Loading Loading @@ -76,8 +75,6 @@ void SkiaRecordingCanvas::drawCircle(uirenderer::CanvasPropertyPrimitive* x, } void SkiaRecordingCanvas::insertReorderBarrier(bool enableReorder) { mBarrierPending = enableReorder; if (nullptr != mCurrentBarrier) { // finish off the existing chunk SkDrawable* drawable = Loading @@ -86,6 +83,12 @@ void SkiaRecordingCanvas::insertReorderBarrier(bool enableReorder) { mCurrentBarrier = nullptr; drawDrawable(drawable); } if (enableReorder) { mCurrentBarrier = (StartReorderBarrierDrawable*) mDisplayList->allocateDrawable<StartReorderBarrierDrawable>( mDisplayList.get()); drawDrawable(mCurrentBarrier); } } void SkiaRecordingCanvas::drawLayer(uirenderer::DeferredLayerUpdater* layerUpdater) { Loading @@ -97,15 +100,6 @@ void SkiaRecordingCanvas::drawLayer(uirenderer::DeferredLayerUpdater* layerUpdat } void SkiaRecordingCanvas::drawRenderNode(uirenderer::RenderNode* renderNode) { // lazily create the chunk if needed if (mBarrierPending) { mCurrentBarrier = (StartReorderBarrierDrawable*) mDisplayList->allocateDrawable<StartReorderBarrierDrawable>( mDisplayList.get()); drawDrawable(mCurrentBarrier); mBarrierPending = false; } // record the child node mDisplayList->mChildNodes.emplace_back(renderNode, asSkCanvas(), true, mCurrentBarrier); auto& renderNodeDrawable = mDisplayList->mChildNodes.back(); Loading libs/hwui/pipeline/skia/SkiaRecordingCanvas.h +0 −1 Original line number Diff line number Diff line Loading @@ -76,7 +76,6 @@ class SkiaRecordingCanvas : public SkiaCanvas { private: SkLiteRecorder mRecorder; std::unique_ptr<SkiaDisplayList> mDisplayList; bool mBarrierPending; StartReorderBarrierDrawable* mCurrentBarrier; /** Loading libs/hwui/tests/unit/FrameBuilderTests.cpp +9 −1 Original line number Diff line number Diff line Loading @@ -1542,6 +1542,14 @@ RENDERTHREAD_TEST(FrameBuilder, zReorder) { canvas.insertReorderBarrier(false); drawOrderedRect(&canvas, 8); drawOrderedNode(&canvas, 9, -10.0f); // in reorder=false at this point, so played inorder canvas.insertReorderBarrier(true); //reorder a node ahead of drawrect op drawOrderedRect(&canvas, 11); drawOrderedNode(&canvas, 10, -1.0f); canvas.insertReorderBarrier(false); canvas.insertReorderBarrier(true); //test with two empty reorder sections canvas.insertReorderBarrier(true); canvas.insertReorderBarrier(false); drawOrderedRect(&canvas, 12); }); FrameBuilder frameBuilder(SkRect::MakeWH(100, 100), 100, 100, sLightGeometry, Caches::getInstance()); Loading @@ -1549,7 +1557,7 @@ RENDERTHREAD_TEST(FrameBuilder, zReorder) { ZReorderTestRenderer renderer; frameBuilder.replayBakedOps<TestDispatcher>(renderer); EXPECT_EQ(10, renderer.getIndex()); EXPECT_EQ(13, renderer.getIndex()); }; RENDERTHREAD_TEST(FrameBuilder, projectionReorder) { Loading libs/hwui/tests/unit/RenderNodeDrawableTests.cpp +9 −1 Original line number Diff line number Diff line Loading @@ -114,13 +114,21 @@ TEST(RenderNodeDrawable, zReorder) { canvas.insertReorderBarrier(false); drawOrderedRect(&canvas, 8); drawOrderedNode(&canvas, 9, -10.0f); // in reorder=false at this point, so played inorder canvas.insertReorderBarrier(true); //reorder a node ahead of drawrect op drawOrderedRect(&canvas, 11); drawOrderedNode(&canvas, 10, -1.0f); canvas.insertReorderBarrier(false); canvas.insertReorderBarrier(true); //test with two empty reorder sections canvas.insertReorderBarrier(true); canvas.insertReorderBarrier(false); drawOrderedRect(&canvas, 12); }); //create a canvas not backed by any device/pixels, but with dimensions to avoid quick rejection ZReorderCanvas canvas(100, 100); RenderNodeDrawable drawable(parent.get(), &canvas, false); canvas.drawDrawable(&drawable); EXPECT_EQ(10, canvas.getIndex()); EXPECT_EQ(13, canvas.getIndex()); } TEST(RenderNodeDrawable, composeOnLayer) Loading Loading
libs/hwui/pipeline/skia/SkiaRecordingCanvas.cpp +6 −12 Original line number Diff line number Diff line Loading @@ -32,7 +32,6 @@ namespace skiapipeline { void SkiaRecordingCanvas::initDisplayList(uirenderer::RenderNode* renderNode, int width, int height) { mBarrierPending = false; mCurrentBarrier = nullptr; SkASSERT(mDisplayList.get() == nullptr); Loading Loading @@ -76,8 +75,6 @@ void SkiaRecordingCanvas::drawCircle(uirenderer::CanvasPropertyPrimitive* x, } void SkiaRecordingCanvas::insertReorderBarrier(bool enableReorder) { mBarrierPending = enableReorder; if (nullptr != mCurrentBarrier) { // finish off the existing chunk SkDrawable* drawable = Loading @@ -86,6 +83,12 @@ void SkiaRecordingCanvas::insertReorderBarrier(bool enableReorder) { mCurrentBarrier = nullptr; drawDrawable(drawable); } if (enableReorder) { mCurrentBarrier = (StartReorderBarrierDrawable*) mDisplayList->allocateDrawable<StartReorderBarrierDrawable>( mDisplayList.get()); drawDrawable(mCurrentBarrier); } } void SkiaRecordingCanvas::drawLayer(uirenderer::DeferredLayerUpdater* layerUpdater) { Loading @@ -97,15 +100,6 @@ void SkiaRecordingCanvas::drawLayer(uirenderer::DeferredLayerUpdater* layerUpdat } void SkiaRecordingCanvas::drawRenderNode(uirenderer::RenderNode* renderNode) { // lazily create the chunk if needed if (mBarrierPending) { mCurrentBarrier = (StartReorderBarrierDrawable*) mDisplayList->allocateDrawable<StartReorderBarrierDrawable>( mDisplayList.get()); drawDrawable(mCurrentBarrier); mBarrierPending = false; } // record the child node mDisplayList->mChildNodes.emplace_back(renderNode, asSkCanvas(), true, mCurrentBarrier); auto& renderNodeDrawable = mDisplayList->mChildNodes.back(); Loading
libs/hwui/pipeline/skia/SkiaRecordingCanvas.h +0 −1 Original line number Diff line number Diff line Loading @@ -76,7 +76,6 @@ class SkiaRecordingCanvas : public SkiaCanvas { private: SkLiteRecorder mRecorder; std::unique_ptr<SkiaDisplayList> mDisplayList; bool mBarrierPending; StartReorderBarrierDrawable* mCurrentBarrier; /** Loading
libs/hwui/tests/unit/FrameBuilderTests.cpp +9 −1 Original line number Diff line number Diff line Loading @@ -1542,6 +1542,14 @@ RENDERTHREAD_TEST(FrameBuilder, zReorder) { canvas.insertReorderBarrier(false); drawOrderedRect(&canvas, 8); drawOrderedNode(&canvas, 9, -10.0f); // in reorder=false at this point, so played inorder canvas.insertReorderBarrier(true); //reorder a node ahead of drawrect op drawOrderedRect(&canvas, 11); drawOrderedNode(&canvas, 10, -1.0f); canvas.insertReorderBarrier(false); canvas.insertReorderBarrier(true); //test with two empty reorder sections canvas.insertReorderBarrier(true); canvas.insertReorderBarrier(false); drawOrderedRect(&canvas, 12); }); FrameBuilder frameBuilder(SkRect::MakeWH(100, 100), 100, 100, sLightGeometry, Caches::getInstance()); Loading @@ -1549,7 +1557,7 @@ RENDERTHREAD_TEST(FrameBuilder, zReorder) { ZReorderTestRenderer renderer; frameBuilder.replayBakedOps<TestDispatcher>(renderer); EXPECT_EQ(10, renderer.getIndex()); EXPECT_EQ(13, renderer.getIndex()); }; RENDERTHREAD_TEST(FrameBuilder, projectionReorder) { Loading
libs/hwui/tests/unit/RenderNodeDrawableTests.cpp +9 −1 Original line number Diff line number Diff line Loading @@ -114,13 +114,21 @@ TEST(RenderNodeDrawable, zReorder) { canvas.insertReorderBarrier(false); drawOrderedRect(&canvas, 8); drawOrderedNode(&canvas, 9, -10.0f); // in reorder=false at this point, so played inorder canvas.insertReorderBarrier(true); //reorder a node ahead of drawrect op drawOrderedRect(&canvas, 11); drawOrderedNode(&canvas, 10, -1.0f); canvas.insertReorderBarrier(false); canvas.insertReorderBarrier(true); //test with two empty reorder sections canvas.insertReorderBarrier(true); canvas.insertReorderBarrier(false); drawOrderedRect(&canvas, 12); }); //create a canvas not backed by any device/pixels, but with dimensions to avoid quick rejection ZReorderCanvas canvas(100, 100); RenderNodeDrawable drawable(parent.get(), &canvas, false); canvas.drawDrawable(&drawable); EXPECT_EQ(10, canvas.getIndex()); EXPECT_EQ(13, canvas.getIndex()); } TEST(RenderNodeDrawable, composeOnLayer) Loading