Skip to content

Commit e908b5c

Browse files
ColdPaleLightcamsim99
authored andcommitted
Added benchmark for early removal of unused raster cache entris mecha… (flutter#107918)
1 parent 5afe0d3 commit e908b5c

8 files changed

Lines changed: 110 additions & 0 deletions

File tree

.ci.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1364,6 +1364,16 @@ targets:
13641364
["devicelab", "android", "linux"]
13651365
task_name: color_filter_cache_perf__e2e_summary
13661366

1367+
- name: Linux_android color_filter_with_unstable_child_perf__e2e_summary
1368+
recipe: devicelab/devicelab_drone
1369+
presubmit: false
1370+
bringup: true
1371+
timeout: 60
1372+
properties:
1373+
tags: >
1374+
["devicelab","android","linux"]
1375+
task_name: color_filter_with_unstable_child_perf__e2e_summary
1376+
13671377
- name: Linux_android raster_cache_use_memory_perf__e2e_summary
13681378
recipe: devicelab/devicelab_drone
13691379
presubmit: false

TESTOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
/dev/devicelab/bin/tasks/codegen_integration.dart @zanderso @flutter/tool
2525
/dev/devicelab/bin/tasks/clipper_cache_perf__e2e_summary.dart @flar @flutter/engine
2626
/dev/devicelab/bin/tasks/color_filter_and_fade_perf__e2e_summary.dart @zanderso @flutter/engine
27+
/dev/devicelab/bin/tasks/color_filter_with_unstable_child_perf__e2e_summary.dart @flar @flutter/engine
2728
/dev/devicelab/bin/tasks/shader_mask_cache_perf__e2e_summary.dart @flar @flutter/engine
2829
/dev/devicelab/bin/tasks/color_filter_cache_perf__e2e_summary.dart @flar @flutter/engine
2930
/dev/devicelab/bin/tasks/complex_layout_android__compile.dart @zanderso @flutter/tool

dev/benchmarks/macrobenchmarks/lib/common.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const String kAnimatedPlaceholderRouteName = '/animated_placeholder';
1717
const String kClipperCacheRouteName = '/clipper_cache';
1818
const String kColorFilterAndFadeRouteName = '/color_filter_and_fade';
1919
const String kColorFilterCacheRouteName = '/color_filter_cache';
20+
const String kColorFilterWithUnstableChildName = '/color_filter_with_unstable_child';
2021
const String kFadingChildAnimationRouteName = '/fading_child_animation';
2122
const String kImageFilteredTransformAnimationRouteName = '/imagefiltered_transform_animation';
2223
const String kMultiWidgetConstructionRouteName = '/multi_widget_construction';

dev/benchmarks/macrobenchmarks/lib/main.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import 'src/backdrop_filter.dart';
1414
import 'src/clipper_cache.dart';
1515
import 'src/color_filter_and_fade.dart';
1616
import 'src/color_filter_cache.dart';
17+
import 'src/color_filter_with_unstable_child.dart';
1718
import 'src/cubic_bezier.dart';
1819
import 'src/cull_opacity.dart';
1920
import 'src/filtered_child_animation.dart';
@@ -64,6 +65,7 @@ class MacrobenchmarksApp extends StatelessWidget {
6465
kClipperCacheRouteName: (BuildContext context) => const ClipperCachePage(),
6566
kColorFilterAndFadeRouteName: (BuildContext context) => const ColorFilterAndFadePage(),
6667
kColorFilterCacheRouteName: (BuildContext context) => const ColorFilterCachePage(),
68+
kColorFilterWithUnstableChildName: (BuildContext context) => const ColorFilterWithUnstableChildPage(),
6769
kFadingChildAnimationRouteName: (BuildContext context) => const FilteredChildAnimationPage(FilterType.opacity),
6870
kImageFilteredTransformAnimationRouteName: (BuildContext context) => const FilteredChildAnimationPage(FilterType.rotateFilter),
6971
kMultiWidgetConstructionRouteName: (BuildContext context) => const MultiWidgetConstructTable(10, 20),
@@ -195,6 +197,13 @@ class HomePage extends StatelessWidget {
195197
Navigator.pushNamed(context, kColorFilterCacheRouteName);
196198
},
197199
),
200+
ElevatedButton(
201+
key: const Key(kColorFilterWithUnstableChildName),
202+
child: const Text('Color Filter with Ustable Child'),
203+
onPressed: () {
204+
Navigator.pushNamed(context, kColorFilterWithUnstableChildName);
205+
},
206+
),
198207
ElevatedButton(
199208
key: const Key(kRasterCacheUseMemory),
200209
child: const Text('RasterCache Use Memory'),
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
// Copyright 2014 The Flutter Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
import 'package:flutter/material.dart';
6+
7+
class ColorFilterWithUnstableChildPage extends StatefulWidget {
8+
const ColorFilterWithUnstableChildPage({super.key});
9+
10+
@override
11+
State<StatefulWidget> createState() => _ColorFilterWithUnstableChildPageState();
12+
}
13+
14+
class _ColorFilterWithUnstableChildPageState extends State<ColorFilterWithUnstableChildPage> with SingleTickerProviderStateMixin {
15+
late Animation<double> _offsetY;
16+
late AnimationController _controller;
17+
18+
@override
19+
void initState() {
20+
super.initState();
21+
_controller = AnimationController(vsync: this, duration: const Duration(seconds: 2));
22+
_offsetY = Tween<double>(begin: 0, end: -1000.0).animate(_controller);
23+
_controller.repeat();
24+
}
25+
26+
@override
27+
void dispose() {
28+
_controller.dispose();
29+
super.dispose();
30+
}
31+
32+
@override
33+
Widget build(BuildContext context) {
34+
return AnimatedBuilder(
35+
animation: _offsetY,
36+
builder: (BuildContext context, Widget? child) {
37+
return Stack(children: List<Widget>.generate(50, (int i) => Positioned(
38+
left: 0,
39+
top: (200 * i).toDouble() + _offsetY.value,
40+
child: ColorFiltered(
41+
colorFilter: ColorFilter.mode(Colors.green[300]!, BlendMode.luminosity),
42+
child: RepaintBoundary(
43+
child: Container(
44+
// Slightly change width to invalidate raster cache.
45+
width: 1000 - (_offsetY.value / 100),
46+
height: 100, color: Colors.red,
47+
),
48+
),
49+
),
50+
)));
51+
}
52+
);
53+
}
54+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// Copyright 2014 The Flutter Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
import 'package:macrobenchmarks/common.dart';
6+
7+
import 'util.dart';
8+
9+
Future<void> main() async {
10+
macroPerfTestE2E(
11+
'color_filter_with_unstable_child_perf',
12+
kColorFilterWithUnstableChildName,
13+
pageDelay: const Duration(seconds: 1),
14+
duration: const Duration(seconds: 10),
15+
);
16+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// Copyright 2014 The Flutter Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
import 'package:flutter_devicelab/framework/devices.dart';
6+
import 'package:flutter_devicelab/framework/framework.dart';
7+
import 'package:flutter_devicelab/tasks/perf_tests.dart';
8+
9+
Future<void> main() async {
10+
deviceOperatingSystem = DeviceOperatingSystem.android;
11+
await task(createColorFilterWithUnstableChildPerfE2ETest());
12+
}

dev/devicelab/lib/tasks/perf_tests.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,13 @@ TaskFunction createColorFilterCachePerfE2ETest() {
384384
).run;
385385
}
386386

387+
TaskFunction createColorFilterWithUnstableChildPerfE2ETest() {
388+
return PerfTest.e2e(
389+
'${flutterDirectory.path}/dev/benchmarks/macrobenchmarks',
390+
'test/color_filter_with_unstable_child_perf_e2e.dart',
391+
).run;
392+
}
393+
387394
TaskFunction createRasterCacheUseMemoryPerfE2ETest() {
388395
return PerfTest.e2e(
389396
'${flutterDirectory.path}/dev/benchmarks/macrobenchmarks',

0 commit comments

Comments
 (0)