Remove DisplayList.h dependency from Canvas.h
Canvas is included in a lot of places, reduce include
dependencies
Test: make
Change-Id: Iab513de8d4bc3eb18220307acc124859dbf44030
diff --git a/libs/hwui/tests/common/TestListViewSceneBase.cpp b/libs/hwui/tests/common/TestListViewSceneBase.cpp
index fd33133..43df4a0 100644
--- a/libs/hwui/tests/common/TestListViewSceneBase.cpp
+++ b/libs/hwui/tests/common/TestListViewSceneBase.cpp
@@ -70,7 +70,7 @@
// draw it to parent DisplayList
canvas->drawRenderNode(mListItems[ci].get());
}
- mListView->setStagingDisplayList(canvas->finishRecording());
+ canvas->finishRecording(mListView.get());
}
} // namespace test
diff --git a/libs/hwui/tests/common/TestUtils.h b/libs/hwui/tests/common/TestUtils.h
index ba6e8ee..cf8fc82 100644
--- a/libs/hwui/tests/common/TestUtils.h
+++ b/libs/hwui/tests/common/TestUtils.h
@@ -159,14 +159,6 @@
renderthread::RenderThread& renderThread, uint32_t width, uint32_t height,
const SkMatrix& transform);
- template <class CanvasType>
- static std::unique_ptr<DisplayList> createDisplayList(
- int width, int height, std::function<void(CanvasType& canvas)> canvasCallback) {
- CanvasType canvas(width, height);
- canvasCallback(canvas);
- return std::unique_ptr<DisplayList>(canvas.finishRecording());
- }
-
static sp<RenderNode> createNode(
int left, int top, int right, int bottom,
std::function<void(RenderProperties& props, Canvas& canvas)> setup) {
@@ -177,7 +169,7 @@
std::unique_ptr<Canvas> canvas(
Canvas::create_recording_canvas(props.getWidth(), props.getHeight()));
setup(props, *canvas.get());
- node->setStagingDisplayList(canvas->finishRecording());
+ canvas->finishRecording(node.get());
}
node->setPropertyFieldsDirty(0xFFFFFFFF);
return node;
@@ -203,7 +195,7 @@
std::unique_ptr<Canvas> canvas(Canvas::create_recording_canvas(
node.stagingProperties().getWidth(), node.stagingProperties().getHeight(), &node));
contentCallback(*canvas.get());
- node.setStagingDisplayList(canvas->finishRecording());
+ canvas->finishRecording(&node);
}
static sp<RenderNode> createSkiaNode(
@@ -226,7 +218,7 @@
new skiapipeline::SkiaRecordingCanvas(nullptr, props.getWidth(),
props.getHeight()));
setup(props, *canvas.get());
- node->setStagingDisplayList(canvas->finishRecording());
+ canvas->finishRecording(node.get());
}
node->setPropertyFieldsDirty(0xFFFFFFFF);
TestUtils::syncHierarchyPropertiesAndDisplayList(node);
diff --git a/libs/hwui/tests/common/scenes/GlyphStressAnimation.cpp b/libs/hwui/tests/common/scenes/GlyphStressAnimation.cpp
index 0795d13..4271d2f 100644
--- a/libs/hwui/tests/common/scenes/GlyphStressAnimation.cpp
+++ b/libs/hwui/tests/common/scenes/GlyphStressAnimation.cpp
@@ -55,6 +55,6 @@
TestUtils::drawUtf8ToCanvas(canvas.get(), text, paint, 0, 100 * (i + 2));
}
- container->setStagingDisplayList(canvas->finishRecording());
+ canvas->finishRecording(container.get());
}
};
diff --git a/libs/hwui/tests/common/scenes/TvApp.cpp b/libs/hwui/tests/common/scenes/TvApp.cpp
index 1b0a07a..c6219c48 100644
--- a/libs/hwui/tests/common/scenes/TvApp.cpp
+++ b/libs/hwui/tests/common/scenes/TvApp.cpp
@@ -210,7 +210,7 @@
overlay->stagingProperties().getHeight(),
overlay.get()));
canvas->drawColor((curFrame % 150) << 24, SkBlendMode::kSrcOver);
- overlay->setStagingDisplayList(canvas->finishRecording());
+ canvas->finishRecording(overlay.get());
cardcanvas->drawRenderNode(overlay.get());
} else {
// re-recording image node's canvas, animating ColorFilter
@@ -223,11 +223,11 @@
paint.setColorFilter(filter);
sk_sp<Bitmap> bitmap = mCachedBitmaps[ci];
canvas->drawBitmap(*bitmap, 0, 0, &paint);
- image->setStagingDisplayList(canvas->finishRecording());
+ canvas->finishRecording(image.get());
cardcanvas->drawRenderNode(image.get());
}
- card->setStagingDisplayList(cardcanvas->finishRecording());
+ cardcanvas->finishRecording(card.get());
}
};
diff --git a/libs/hwui/tests/microbench/DisplayListCanvasBench.cpp b/libs/hwui/tests/microbench/DisplayListCanvasBench.cpp
index ade1ddd..9cd1075 100644
--- a/libs/hwui/tests/microbench/DisplayListCanvasBench.cpp
+++ b/libs/hwui/tests/microbench/DisplayListCanvasBench.cpp
@@ -24,27 +24,28 @@
using namespace android;
using namespace android::uirenderer;
+using namespace android::uirenderer::skiapipeline;
-void BM_DisplayList_alloc(benchmark::State& benchState) {
+void BM_SkiaDisplayList_alloc(benchmark::State& benchState) {
while (benchState.KeepRunning()) {
auto displayList = new skiapipeline::SkiaDisplayList();
benchmark::DoNotOptimize(displayList);
delete displayList;
}
}
-BENCHMARK(BM_DisplayList_alloc);
+BENCHMARK(BM_SkiaDisplayList_alloc);
-void BM_DisplayList_alloc_theoretical(benchmark::State& benchState) {
+void BM_SkiaDisplayList_alloc_theoretical(benchmark::State& benchState) {
while (benchState.KeepRunning()) {
auto displayList = new char[sizeof(skiapipeline::SkiaDisplayList)];
benchmark::DoNotOptimize(displayList);
delete[] displayList;
}
}
-BENCHMARK(BM_DisplayList_alloc_theoretical);
+BENCHMARK(BM_SkiaDisplayList_alloc_theoretical);
-void BM_DisplayListCanvas_record_empty(benchmark::State& benchState) {
- std::unique_ptr<Canvas> canvas(Canvas::create_recording_canvas(100, 100));
+void BM_SkiaDisplayListCanvas_record_empty(benchmark::State& benchState) {
+ auto canvas = std::make_unique<SkiaRecordingCanvas>(nullptr, 100, 100);
static_cast<void>(canvas->finishRecording());
while (benchState.KeepRunning()) {
@@ -53,10 +54,10 @@
static_cast<void>(canvas->finishRecording());
}
}
-BENCHMARK(BM_DisplayListCanvas_record_empty);
+BENCHMARK(BM_SkiaDisplayListCanvas_record_empty);
-void BM_DisplayListCanvas_record_saverestore(benchmark::State& benchState) {
- std::unique_ptr<Canvas> canvas(Canvas::create_recording_canvas(100, 100));
+void BM_SkiaDisplayListCanvas_record_saverestore(benchmark::State& benchState) {
+ auto canvas = std::make_unique<SkiaRecordingCanvas>(nullptr, 100, 100);
static_cast<void>(canvas->finishRecording());
while (benchState.KeepRunning()) {
@@ -69,10 +70,10 @@
static_cast<void>(canvas->finishRecording());
}
}
-BENCHMARK(BM_DisplayListCanvas_record_saverestore);
+BENCHMARK(BM_SkiaDisplayListCanvas_record_saverestore);
-void BM_DisplayListCanvas_record_translate(benchmark::State& benchState) {
- std::unique_ptr<Canvas> canvas(Canvas::create_recording_canvas(100, 100));
+void BM_SkiaDisplayListCanvas_record_translate(benchmark::State& benchState) {
+ auto canvas = std::make_unique<SkiaRecordingCanvas>(nullptr, 100, 100);
static_cast<void>(canvas->finishRecording());
while (benchState.KeepRunning()) {
@@ -82,7 +83,7 @@
static_cast<void>(canvas->finishRecording());
}
}
-BENCHMARK(BM_DisplayListCanvas_record_translate);
+BENCHMARK(BM_SkiaDisplayListCanvas_record_translate);
/**
* Simulate a simple view drawing a background, overlapped by an image.
@@ -90,8 +91,8 @@
* Note that the recording commands are intentionally not perfectly efficient, as the
* View system frequently produces unneeded save/restores.
*/
-void BM_DisplayListCanvas_record_simpleBitmapView(benchmark::State& benchState) {
- std::unique_ptr<Canvas> canvas(Canvas::create_recording_canvas(100, 100));
+void BM_SkiaDisplayListCanvas_record_simpleBitmapView(benchmark::State& benchState) {
+ auto canvas = std::make_unique<SkiaRecordingCanvas>(nullptr, 100, 100);
static_cast<void>(canvas->finishRecording());
Paint rectPaint;
@@ -114,14 +115,14 @@
static_cast<void>(canvas->finishRecording());
}
}
-BENCHMARK(BM_DisplayListCanvas_record_simpleBitmapView);
+BENCHMARK(BM_SkiaDisplayListCanvas_record_simpleBitmapView);
-void BM_DisplayListCanvas_basicViewGroupDraw(benchmark::State& benchState) {
+void BM_SkiaDisplayListCanvas_basicViewGroupDraw(benchmark::State& benchState) {
sp<RenderNode> child = TestUtils::createNode(50, 50, 100, 100, [](auto& props, auto& canvas) {
canvas.drawColor(0xFFFFFFFF, SkBlendMode::kSrcOver);
});
- std::unique_ptr<Canvas> canvas(Canvas::create_recording_canvas(100, 100));
+ auto canvas = std::make_unique<SkiaRecordingCanvas>(nullptr, 100, 100);
static_cast<void>(canvas->finishRecording());
while (benchState.KeepRunning()) {
@@ -146,4 +147,4 @@
static_cast<void>(canvas->finishRecording());
}
}
-BENCHMARK(BM_DisplayListCanvas_basicViewGroupDraw)->Arg(1)->Arg(5)->Arg(10);
+BENCHMARK(BM_SkiaDisplayListCanvas_basicViewGroupDraw)->Arg(1)->Arg(5)->Arg(10);
diff --git a/libs/hwui/tests/microbench/RenderNodeBench.cpp b/libs/hwui/tests/microbench/RenderNodeBench.cpp
index dd3f737..6aed251 100644
--- a/libs/hwui/tests/microbench/RenderNodeBench.cpp
+++ b/libs/hwui/tests/microbench/RenderNodeBench.cpp
@@ -35,25 +35,12 @@
void BM_RenderNode_recordSimple(benchmark::State& state) {
sp<RenderNode> node = new RenderNode();
std::unique_ptr<Canvas> canvas(Canvas::create_recording_canvas(100, 100));
- static_cast<void>(canvas->finishRecording());
+ canvas->finishRecording(node.get());
while (state.KeepRunning()) {
canvas->resetRecording(100, 100, node.get());
canvas->drawColor(0x00000000, SkBlendMode::kSrcOver);
- node->setStagingDisplayList(canvas->finishRecording());
+ canvas->finishRecording(node.get());
}
}
BENCHMARK(BM_RenderNode_recordSimple);
-
-void BM_RenderNode_recordSimpleWithReuse(benchmark::State& state) {
- sp<RenderNode> node = new RenderNode();
- std::unique_ptr<Canvas> canvas(Canvas::create_recording_canvas(100, 100));
- static_cast<void>(canvas->finishRecording());
-
- while (state.KeepRunning()) {
- canvas->resetRecording(100, 100, node.get());
- canvas->drawColor(0x00000000, SkBlendMode::kSrcOver);
- canvas->finishRecording().clear(node.get());
- }
-}
-BENCHMARK(BM_RenderNode_recordSimpleWithReuse);
\ No newline at end of file
diff --git a/libs/hwui/tests/unit/SkiaDisplayListTests.cpp b/libs/hwui/tests/unit/SkiaDisplayListTests.cpp
index 801a294..3d5aca4 100644
--- a/libs/hwui/tests/unit/SkiaDisplayListTests.cpp
+++ b/libs/hwui/tests/unit/SkiaDisplayListTests.cpp
@@ -38,13 +38,12 @@
}
TEST(SkiaDisplayList, reset) {
- DisplayList displayList;
+ std::unique_ptr<SkiaDisplayList> skiaDL;
{
SkiaRecordingCanvas canvas{nullptr, 1, 1};
canvas.drawColor(0, SkBlendMode::kSrc);
- displayList = canvas.finishRecording();
+ skiaDL = canvas.finishRecording();
}
- SkiaDisplayList* skiaDL = displayList.asSkiaDl();
SkCanvas dummyCanvas;
RenderNodeDrawable drawable(nullptr, &dummyCanvas);