blob: 3dae64149bb83ad3bf32fb52a215fcc0a6337da8 [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:ui';
import 'package:flutter_driver/driver_extension.dart';
import 'package:flutter/painting.dart' show DefaultShaderWarmUp, PaintingBinding;
import 'package:macrobenchmarks/main.dart' as app;
class CubicBezierShaderWarmUp extends DefaultShaderWarmUp {
@override
Future<void> warmUpOnCanvas(Canvas canvas) async {
await super.warmUpOnCanvas(canvas);
// Warm up the cubic shaders used by CubicBezierPage.
//
// This tests that our custom shader warm up is working properly.
// Without this custom shader warm up, the worst frame time is about 115ms.
// With this, the worst frame time is about 70ms. (Data collected on a Moto
// G4 based on Flutter version 704814c67a874077710524d30412337884bf0254.
final Path path = Path();
path.moveTo(20.0, 20.0);
// This cubic path is based on
// https://skia.org/user/api/SkPath_Reference#SkPath_cubicTo
path.cubicTo(300.0, 80.0, -140.0, 90.0, 220.0, 10.0);
final Paint paint = Paint();
paint.isAntiAlias = true;
paint.strokeWidth = 18.0;
paint.style = PaintingStyle.stroke;
paint.strokeCap = StrokeCap.round;
canvas.drawPath(path, paint);
}
}
void main() {
PaintingBinding.shaderWarmUp = CubicBezierShaderWarmUp();
enableFlutterDriverExtension();
app.main();
}