| // Copyright 2013 The Flutter Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef FLUTTER_DISPLAY_LIST_BENCHMARKING_DL_BENCHMARKS_H_ | |
| #define FLUTTER_DISPLAY_LIST_BENCHMARKING_DL_BENCHMARKS_H_ | |
| #include "flutter/display_list/dl_canvas.h" | |
| #include "flutter/display_list/dl_sampling_options.h" | |
| #include "flutter/display_list/dl_vertices.h" | |
| #include "flutter/display_list/testing/dl_test_surface_provider.h" | |
| #include "third_party/benchmark/include/benchmark/benchmark.h" | |
| #include "third_party/skia/include/core/SkCanvas.h" | |
| #include "third_party/skia/include/core/SkPath.h" | |
| #include "third_party/skia/include/core/SkRRect.h" | |
| #include "third_party/skia/include/core/SkSurface.h" | |
| #include "third_party/skia/include/core/SkVertices.h" | |
| namespace flutter { | |
| namespace testing { | |
| enum BenchmarkAttributes { | |
| kEmpty = 0, | |
| kStrokedStyle = 1 << 0, | |
| kFilledStyle = 1 << 1, | |
| kHairlineStroke = 1 << 2, | |
| kAntiAliasing = 1 << 3 | |
| }; | |
| DlPaint GetPaintForRun(unsigned attributes); | |
| using BackendType = DlSurfaceProvider::BackendType; | |
| // Benchmarks | |
| void BM_DrawLine(benchmark::State& state, | |
| BackendType backend_type, | |
| unsigned attributes); | |
| void BM_DrawRect(benchmark::State& state, | |
| BackendType backend_type, | |
| unsigned attributes); | |
| void BM_DrawCircle(benchmark::State& state, | |
| BackendType backend_type, | |
| unsigned attributes); | |
| void BM_DrawOval(benchmark::State& state, | |
| BackendType backend_type, | |
| unsigned attributes); | |
| void BM_DrawArc(benchmark::State& state, | |
| BackendType backend_type, | |
| unsigned attributes); | |
| void BM_DrawRRect(benchmark::State& state, | |
| BackendType backend_type, | |
| unsigned attributes, | |
| SkRRect::Type type); | |
| void BM_DrawDRRect(benchmark::State& state, | |
| BackendType backend_type, | |
| unsigned attributes, | |
| SkRRect::Type type); | |
| void BM_DrawPath(benchmark::State& state, | |
| BackendType backend_type, | |
| unsigned attributes, | |
| SkPath::Verb type); | |
| void BM_DrawPoints(benchmark::State& state, | |
| BackendType backend_type, | |
| unsigned attributes, | |
| DlCanvas::PointMode mode); | |
| void BM_DrawVertices(benchmark::State& state, | |
| BackendType backend_type, | |
| unsigned attributes, | |
| DlVertexMode mode); | |
| void BM_DrawImage(benchmark::State& state, | |
| BackendType backend_type, | |
| unsigned attributes, | |
| DlImageSampling options, | |
| bool upload_bitmap); | |
| void BM_DrawImageRect(benchmark::State& state, | |
| BackendType backend_type, | |
| unsigned attributes, | |
| DlImageSampling options, | |
| DlCanvas::SrcRectConstraint constraint, | |
| bool upload_bitmap); | |
| void BM_DrawImageNine(benchmark::State& state, | |
| BackendType backend_type, | |
| unsigned attributes, | |
| const DlFilterMode filter, | |
| bool upload_bitmap); | |
| void BM_DrawTextBlob(benchmark::State& state, | |
| BackendType backend_type, | |
| unsigned attributes); | |
| void BM_DrawShadow(benchmark::State& state, | |
| BackendType backend_type, | |
| unsigned attributes, | |
| bool transparent_occluder, | |
| SkPath::Verb type); | |
| void BM_SaveLayer(benchmark::State& state, | |
| BackendType backend_type, | |
| unsigned attributes, | |
| size_t save_depth); | |
| // clang-format off | |
| // DrawLine | |
| #define DRAW_LINE_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| BENCHMARK_CAPTURE(BM_DrawLine, BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(16, 2048) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); | |
| // DrawRect | |
| #define DRAW_RECT_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| BENCHMARK_CAPTURE(BM_DrawRect, BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(16, 2048) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); | |
| // DrawOval | |
| #define DRAW_OVAL_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| BENCHMARK_CAPTURE(BM_DrawOval, BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(16, 2048) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); | |
| // DrawCircle | |
| #define DRAW_CIRCLE_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| BENCHMARK_CAPTURE(BM_DrawCircle, BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(16, 2048) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); | |
| // DrawArc | |
| #define DRAW_ARC_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| BENCHMARK_CAPTURE(BM_DrawArc, BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(128, 2048) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); | |
| // DrawPath | |
| #define DRAW_PATH_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| BENCHMARK_CAPTURE(BM_DrawPath, \ | |
| Lines/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| SkPath::Verb::kLine_Verb) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(8, 512) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond) \ | |
| ->Complexity(); \ | |
| \ | |
| BENCHMARK_CAPTURE(BM_DrawPath, \ | |
| Quads/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| SkPath::Verb::kQuad_Verb) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(8, 512) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond) \ | |
| ->Complexity(); \ | |
| \ | |
| BENCHMARK_CAPTURE(BM_DrawPath, \ | |
| Conics/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| SkPath::Verb::kConic_Verb) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(8, 512) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond) \ | |
| ->Complexity(); \ | |
| \ | |
| BENCHMARK_CAPTURE(BM_DrawPath, \ | |
| Cubics/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| SkPath::Verb::kCubic_Verb) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(8, 512) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond) \ | |
| ->Complexity(); | |
| // DrawPoints | |
| #define DRAW_POINTS_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| BENCHMARK_CAPTURE(BM_DrawPoints, Points/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| DlCanvas::PointMode::kPoints) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(1024, 32768) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); \ | |
| \ | |
| BENCHMARK_CAPTURE(BM_DrawPoints, Lines/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| DlCanvas::PointMode::kLines) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(1024, 32768) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); \ | |
| \ | |
| BENCHMARK_CAPTURE(BM_DrawPoints, Polygon/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| DlCanvas::PointMode::kPolygon) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(1024, 32768) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); | |
| // DrawVertices | |
| #define DRAW_VERTICES_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| BENCHMARK_CAPTURE(BM_DrawVertices, \ | |
| TriangleStrip/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| DlVertexMode::kTriangleStrip) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(16, 2048) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond) \ | |
| ->Complexity(); \ | |
| \ | |
| BENCHMARK_CAPTURE(BM_DrawVertices, \ | |
| TriangleFan/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| DlVertexMode::kTriangleFan) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(16, 2048) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond) \ | |
| ->Complexity(); \ | |
| \ | |
| BENCHMARK_CAPTURE(BM_DrawVertices, \ | |
| Triangles/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| DlVertexMode::kTriangles) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(16, 2048) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond) \ | |
| ->Complexity(); | |
| // DrawRRect | |
| #define DRAW_RRECT_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| BENCHMARK_CAPTURE(BM_DrawRRect, Symmetric/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| SkRRect::Type::kSimple_Type) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(16, 256) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); \ | |
| \ | |
| BENCHMARK_CAPTURE(BM_DrawRRect, NinePatch/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| SkRRect::Type::kNinePatch_Type) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(16, 256) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); \ | |
| \ | |
| BENCHMARK_CAPTURE(BM_DrawRRect, Complex/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| SkRRect::Type::kComplex_Type) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(16, 256) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); | |
| // DrawDRRect | |
| #define DRAW_DRRECT_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| BENCHMARK_CAPTURE(BM_DrawDRRect, Symmetric/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| SkRRect::Type::kSimple_Type) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(16, 256) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); \ | |
| \ | |
| BENCHMARK_CAPTURE(BM_DrawDRRect, NinePatch/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| SkRRect::Type::kNinePatch_Type) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(16, 256) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); \ | |
| \ | |
| BENCHMARK_CAPTURE(BM_DrawDRRect, Complex/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| SkRRect::Type::kComplex_Type) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(16, 256) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); | |
| // DrawImage | |
| #define DRAW_IMAGE_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| BENCHMARK_CAPTURE(BM_DrawImage, Texture/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| DlImageSampling::kNearestNeighbor, false) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(128, 512) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); \ | |
| \ | |
| BENCHMARK_CAPTURE(BM_DrawImage, Upload/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| DlImageSampling::kNearestNeighbor, true) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(128, 512) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); | |
| // DrawImageRect | |
| #define DRAW_IMAGE_RECT_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| BENCHMARK_CAPTURE( \ | |
| BM_DrawImageRect, Texture/Strict/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| DlImageSampling::kNearestNeighbor, \ | |
| DlCanvas::SrcRectConstraint::kStrict, false) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(32, 256) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); \ | |
| \ | |
| BENCHMARK_CAPTURE( \ | |
| BM_DrawImageRect, Texture/Fast/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| DlImageSampling::kNearestNeighbor, \ | |
| DlCanvas::SrcRectConstraint::kFast, false) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(32, 256) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); \ | |
| \ | |
| BENCHMARK_CAPTURE( \ | |
| BM_DrawImageRect, Upload/Strict/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| DlImageSampling::kNearestNeighbor, \ | |
| DlCanvas::SrcRectConstraint::kStrict, true) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(32, 256) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); \ | |
| \ | |
| BENCHMARK_CAPTURE( \ | |
| BM_DrawImageRect, Upload/Fast/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| DlImageSampling::kNearestNeighbor, \ | |
| DlCanvas::SrcRectConstraint::kFast, true) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(32, 256) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); | |
| // DrawImageNine | |
| #define DRAW_IMAGE_NINE_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| BENCHMARK_CAPTURE(BM_DrawImageNine, Texture/Nearest/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| DlFilterMode::kNearest, false) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(32, 256) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); \ | |
| \ | |
| BENCHMARK_CAPTURE(BM_DrawImageNine, Upload/Nearest/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| DlFilterMode::kNearest, true) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(32, 256) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); \ | |
| \ | |
| BENCHMARK_CAPTURE(BM_DrawImageNine, Texture/Linear/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| DlFilterMode::kLinear, false) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(32, 256) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); \ | |
| \ | |
| BENCHMARK_CAPTURE(BM_DrawImageNine, Upload/Linear/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| DlFilterMode::kLinear, true) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(32, 256) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); | |
| // DrawTextBlob | |
| #define DRAW_TEXT_BLOB_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| BENCHMARK_CAPTURE(BM_DrawTextBlob, BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(1, 256) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond) \ | |
| ->Complexity(); | |
| // DrawShadow | |
| #define DRAW_SHADOW_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| BENCHMARK_CAPTURE(BM_DrawShadow, Lines/Transparent/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| true, \ | |
| SkPath::Verb::kLine_Verb) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(1, 32) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); \ | |
| \ | |
| BENCHMARK_CAPTURE(BM_DrawShadow, Quads/Transparent/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| true, \ | |
| SkPath::Verb::kQuad_Verb) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(1, 32) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); \ | |
| \ | |
| BENCHMARK_CAPTURE(BM_DrawShadow, Conics/Transparent/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| true, \ | |
| SkPath::Verb::kConic_Verb) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(1, 32) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); \ | |
| \ | |
| BENCHMARK_CAPTURE(BM_DrawShadow, Cubics/Transparent/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| true, \ | |
| SkPath::Verb::kCubic_Verb) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(1, 32) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); \ | |
| \ | |
| BENCHMARK_CAPTURE(BM_DrawShadow, Lines/Opaque/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| false, \ | |
| SkPath::Verb::kLine_Verb) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(1, 32) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); \ | |
| \ | |
| BENCHMARK_CAPTURE(BM_DrawShadow, Quads/Opaque/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| false, \ | |
| SkPath::Verb::kQuad_Verb) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(1, 32) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); \ | |
| \ | |
| BENCHMARK_CAPTURE(BM_DrawShadow, Conics/Opaque/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| false, \ | |
| SkPath::Verb::kConic_Verb) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(1, 32) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); \ | |
| \ | |
| BENCHMARK_CAPTURE(BM_DrawShadow, Cubics/Opaque/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| false, \ | |
| SkPath::Verb::kCubic_Verb) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(1, 32) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); | |
| // SaveLayer | |
| #define SAVE_LAYER_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| BENCHMARK_CAPTURE(BM_SaveLayer, Depth 1/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| 1) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(1, 128) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); \ | |
| \ | |
| BENCHMARK_CAPTURE(BM_SaveLayer, Depth 8/BACKEND, \ | |
| BackendType::k##BACKEND##Backend, \ | |
| ATTRIBUTES, \ | |
| 8) \ | |
| ->RangeMultiplier(2) \ | |
| ->Range(1, 128) \ | |
| ->UseRealTime() \ | |
| ->Unit(benchmark::kMillisecond); | |
| // Applies stroke style and antialiasing | |
| #define STROKE_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| DRAW_LINE_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| DRAW_POINTS_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| DRAW_RECT_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| DRAW_OVAL_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| DRAW_CIRCLE_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| DRAW_ARC_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| DRAW_PATH_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| DRAW_RRECT_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| DRAW_DRRECT_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| DRAW_TEXT_BLOB_BENCHMARKS(BACKEND, ATTRIBUTES) | |
| // Applies fill style and antialiasing | |
| #define FILL_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| DRAW_RECT_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| DRAW_OVAL_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| DRAW_CIRCLE_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| DRAW_ARC_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| DRAW_PATH_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| DRAW_RRECT_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| DRAW_DRRECT_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| DRAW_TEXT_BLOB_BENCHMARKS(BACKEND, ATTRIBUTES) | |
| // Applies antialiasing | |
| #define ANTI_ALIASING_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| DRAW_IMAGE_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| DRAW_IMAGE_RECT_BENCHMARKS(BACKEND, ATTRIBUTES) | |
| // Does not apply style or antialiasing | |
| #define OTHER_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| DRAW_IMAGE_NINE_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| DRAW_VERTICES_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| DRAW_SHADOW_BENCHMARKS(BACKEND, ATTRIBUTES) \ | |
| SAVE_LAYER_BENCHMARKS(BACKEND, ATTRIBUTES) | |
| #define RUN_DISPLAYLIST_BENCHMARKS(BACKEND) \ | |
| STROKE_BENCHMARKS(BACKEND, kStrokedStyle) \ | |
| STROKE_BENCHMARKS(BACKEND, kStrokedStyle | kAntiAliasing) \ | |
| STROKE_BENCHMARKS(BACKEND, kStrokedStyle | kHairlineStroke) \ | |
| STROKE_BENCHMARKS(BACKEND, kStrokedStyle | kHairlineStroke | \ | |
| kAntiAliasing) \ | |
| FILL_BENCHMARKS(BACKEND, kFilledStyle) \ | |
| FILL_BENCHMARKS(BACKEND, kFilledStyle | kAntiAliasing) \ | |
| ANTI_ALIASING_BENCHMARKS(BACKEND, kEmpty) \ | |
| ANTI_ALIASING_BENCHMARKS(BACKEND, kAntiAliasing) \ | |
| OTHER_BENCHMARKS(BACKEND, kEmpty) | |
| // clang-format on | |
| } // namespace testing | |
| } // namespace flutter | |
| #endif // FLUTTER_DISPLAY_LIST_BENCHMARKING_DL_BENCHMARKS_H_ |