Skip to content

Conversation

@b-luk
Copy link
Contributor

@b-luk b-luk commented Nov 10, 2025

Support round caps for the fast arc stroke generator.

Factors out Tessellator::GenerateRoundCapLine's cap generation logic into a new Tessellator::GenerateRoundCap method to be shared by Tessellator::GenerateRoundCapLine and Tessellator::GenerateStrokedArc.

Fixes #169400

Pre-launch Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the gemini-code-assist bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.

@github-actions github-actions bot added engine flutter/engine related. See also e: labels. e: impeller Impeller rendering backend issues and features requests labels Nov 10, 2025
Copy link
Contributor

@flar flar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This all looks correct, these are mostly just suggestions and I think you had some ideas about refactoring yourself, so I'm going to leave this as a "comment" review for now.

- Split up GenerateRoundCap into two functions for start/end
- Add factory constructors for ArcVertexGenerator
- Use GetTrigsForDeviceRadius instead of ComputeQuadrantDivisions + GetTrigsForDivisions
Copy link
Contributor

@flar flar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good except to delete the obsolete part of that one comment.

// directly opposite the semicircle's straight diameter. Vertices progress
// in the stroke's direction of travel, ending with two vertices at
// (p + perpendicular) and (p - perpendicular) that form the semicircle's
// diameter.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

// The generated vertices begin with two vertices at (p + perpendicular) and
// (p - perpendicular) which form the semicircle's diameter. Vertices progress
// in the stroke's direction of travel, ending with the vertex at the midpoint
// of the semicircle's curve.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@flar
Copy link
Contributor

flar commented Nov 13, 2025

The ninja problems are fixed at the top of tree. Update your branch with a pull (not a rebase) to fix those errors.

Copy link
Contributor

@flar flar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I need to wait to see the impact on goldens before approving.

Copy link
Contributor

@flar flar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like the only way to remove an approval is to "Request Changes"... :(

@b-luk
Copy link
Contributor Author

b-luk commented Nov 13, 2025

I need to wait to see the impact on goldens before approving.

Acknowledged. Regardless of if the goldens are impacted, I think before I actually submit this, I'd want to ensure that there are tests which specifically test circular round cap arcs (if these tests don't already exist), and I'd want to ensure there is some benchmarking so I verify any performance impact before/after this change. I'm still looking into what I need to do for these tests/benchmarking, but I'll update here when I figure out what I want to do.

@flar
Copy link
Contributor

flar commented Nov 13, 2025

I need to wait to see the impact on goldens before approving.

Acknowledged. Regardless of if the goldens are impacted, I think before I actually submit this, I'd want to ensure that there are tests which specifically test circular round cap arcs (if these tests don't already exist), and I'd want to ensure there is some benchmarking so I verify any performance impact before/after this change. I'm still looking into what I need to do for these tests/benchmarking, but I'll update here when I figure out what I want to do.

There are a number of tests for Arcs in this file (for example):

TEST_P(AiksTest, StrokedArcsRenderCorrectlyWithRoundEnds) {

I don't remember where we have benchmarks for arc drawing off hand.

@b-luk b-luk marked this pull request as ready for review November 14, 2025 01:31
@flutter-dashboard
Copy link

Golden file changes have been found for this pull request. Click here to view and triage (e.g. because this is an intentional change).

If you are still iterating on this change and are not ready to resolve the images on the Flutter Gold dashboard, consider marking this PR as a draft pull request above. You will still be able to view image results on the dashboard, commenting will be silenced, and the check will not try to resolve itself until marked ready for review.

For more guidance, visit Writing a golden file test for package:flutter.

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.

Changes reported for pull request #178269 at sha ec2a843

@flutter-dashboard flutter-dashboard bot added the will affect goldens Changes to golden files label Nov 14, 2025
@b-luk
Copy link
Contributor Author

b-luk commented Nov 17, 2025

I made a benchmark at #178690 and ran it locally on a couple physical devices with and without this change. Here are some selected results:

iPhone 12

before after change
frame build time avg 0.939 1.170 +24.62%
90th pct 1.362 1.711 +25.62%
99th pct 1.689 1.886 +11.66%
worst 1.741 2.054 +17.98%
rasterizer build time avg 5.552 5.110 -7.96%
90th pct 9.972 8.535 -14.41%
99th pct 15.552 13.387 -13.92%
worst 34.907 18.165 -47.96%
gpu frame time avg 10.430 9.523 -8.70%
90th pct 14.648 13.672 -6.67%
99th pct 15.625 15.625 0.00%
worst 43.945 15.625 -64.44%

Pixel 8

before after change
frame build time avg 6.785 6.473 -4.60%
90th pct 9.587 8.784 -8.38%
99th pct 11.132 10.958 -1.56%
worst 11.939 11.541 -3.33%
rasterizer build time avg 9.132 8.545 -6.42%
90th pct 11.453 10.547 -7.91%
99th pct 12.779 11.552 -9.60%
worst 37.934 11.748 -69.03%

Full timeline summary results for the runs:

iPhone12 before:
{
  "average_frame_build_time_millis": 0.9385878787878796,
  "90th_percentile_frame_build_time_millis": 1.362,
  "99th_percentile_frame_build_time_millis": 1.689,
  "worst_frame_build_time_millis": 1.741,
  "missed_frame_build_budget_count": 0,
  "average_frame_rasterizer_time_millis": 5.551593939393935,
  "stddev_frame_rasterizer_time_millis": 1.9515427364554598,
  "90th_percentile_frame_rasterizer_time_millis": 9.972,
  "99th_percentile_frame_rasterizer_time_millis": 15.552,
  "worst_frame_rasterizer_time_millis": 34.907,
  "missed_frame_rasterizer_budget_count": 3,
  "frame_count": 330,
  "frame_rasterizer_count": 330,
  "new_gen_gc_count": 34,
  "old_gen_gc_count": 0,
  "frame_build_times": [
    984,
    972,
    1043,
    982,
    1031,
    1038,
    1020,
    995,
    1015,
    988,
    991,
    997,
    983,
    981,
    976,
    1012,
    986,
    991,
    1000,
    1216,
    1288,
    1019,
    1317,
    1197,
    1333,
    1319,
    1213,
    1013,
    986,
    1018,
    759,
    1310,
    1028,
    996,
    968,
    1000,
    991,
    1338,
    997,
    1054,
    1003,
    961,
    997,
    982,
    956,
    966,
    979,
    969,
    980,
    1133,
    700,
    696,
    598,
    673,
    606,
    705,
    725,
    737,
    731,
    728,
    714,
    996,
    1034,
    683,
    613,
    872,
    1352,
    1362,
    1689,
    1390,
    1392,
    1391,
    1401,
    1665,
    1587,
    1432,
    1563,
    1723,
    1633,
    1605,
    1311,
    1639,
    1609,
    1264,
    1274,
    1318,
    1258,
    1130,
    1010,
    1022,
    994,
    967,
    978,
    1002,
    987,
    990,
    986,
    991,
    1183,
    1014,
    983,
    992,
    1038,
    957,
    976,
    1411,
    995,
    987,
    994,
    984,
    1217,
    995,
    1001,
    1012,
    992,
    1011,
    972,
    948,
    971,
    975,
    963,
    969,
    973,
    1086,
    1068,
    997,
    1011,
    1007,
    983,
    981,
    991,
    1013,
    1043,
    965,
    1019,
    1038,
    1031,
    791,
    825,
    1087,
    1008,
    1005,
    1017,
    998,
    1027,
    977,
    752,
    734,
    774,
    641,
    606,
    587,
    591,
    501,
    526,
    433,
    386,
    347,
    334,
    333,
    355,
    340,
    405,
    340,
    342,
    315,
    330,
    386,
    365,
    322,
    315,
    331,
    331,
    355,
    335,
    323,
    339,
    337,
    315,
    330,
    333,
    333,
    330,
    371,
    347,
    740,
    470,
    450,
    473,
    372,
    676,
    525,
    625,
    380,
    373,
    411,
    351,
    371,
    405,
    343,
    364,
    350,
    350,
    362,
    392,
    424,
    439,
    438,
    469,
    519,
    629,
    590,
    593,
    583,
    751,
    725,
    736,
    734,
    743,
    797,
    980,
    788,
    1009,
    978,
    956,
    988,
    978,
    971,
    974,
    972,
    999,
    991,
    981,
    1016,
    995,
    983,
    941,
    966,
    1052,
    990,
    965,
    991,
    982,
    1003,
    1013,
    1009,
    1025,
    1004,
    977,
    979,
    982,
    979,
    1328,
    984,
    980,
    981,
    974,
    1000,
    1024,
    1008,
    976,
    975,
    974,
    973,
    949,
    959,
    962,
    973,
    966,
    984,
    767,
    1009,
    973,
    977,
    969,
    967,
    967,
    1080,
    973,
    976,
    979,
    981,
    1010,
    995,
    973,
    976,
    969,
    975,
    969,
    985,
    960,
    956,
    1053,
    986,
    966,
    1015,
    990,
    976,
    971,
    979,
    974,
    982,
    966,
    1218,
    1373,
    1360,
    1258,
    1741,
    1258,
    1391,
    1254,
    1351,
    1345,
    1665,
    1646,
    1552,
    1556,
    1622,
    1633,
    1482,
    1580,
    1720,
    1564,
    1598,
    1601,
    1641,
    1429,
    1267,
    1424,
    1073
  ],
  "frame_rasterizer_times": [
    4803,
    4756,
    4752,
    4659,
    4834,
    4538,
    4746,
    4773,
    4732,
    4669,
    4695,
    4763,
    4698,
    4659,
    4639,
    4687,
    4973,
    4589,
    4583,
    4786,
    4840,
    4563,
    4777,
    4699,
    4802,
    4742,
    4752,
    4578,
    4496,
    4559,
    3446,
    4759,
    4456,
    4510,
    4498,
    4431,
    4465,
    4602,
    4361,
    4514,
    4468,
    4470,
    4436,
    4364,
    4391,
    4406,
    4448,
    4337,
    4358,
    34907,
    2596,
    2327,
    2425,
    2641,
    2611,
    2594,
    3259,
    3319,
    3298,
    3332,
    3305,
    4462,
    4006,
    2117,
    3247,
    3659,
    3537,
    4553,
    3847,
    4335,
    3928,
    4603,
    3970,
    3179,
    5131,
    2722,
    4475,
    4182,
    4514,
    3756,
    3384,
    4929,
    4123,
    4139,
    5060,
    4952,
    5005,
    4992,
    4778,
    4793,
    4785,
    4723,
    4801,
    4767,
    4746,
    4756,
    4754,
    5036,
    4979,
    4842,
    4807,
    4785,
    4744,
    4830,
    4765,
    5122,
    4859,
    4833,
    4893,
    4864,
    5020,
    4851,
    4906,
    4978,
    4969,
    4844,
    4953,
    4968,
    4991,
    5009,
    5001,
    5013,
    4919,
    5039,
    5071,
    5280,
    5245,
    4964,
    5179,
    4716,
    4175,
    4479,
    4111,
    4866,
    4946,
    5527,
    4955,
    4813,
    4939,
    4294,
    4307,
    4784,
    5070,
    5332,
    5847,
    5986,
    6498,
    7079,
    6660,
    6408,
    7195,
    8116,
    8885,
    9950,
    10639,
    10583,
    10258,
    9997,
    9692,
    9503,
    9420,
    9409,
    9336,
    9613,
    9564,
    9861,
    9972,
    10031,
    10257,
    10529,
    10933,
    11217,
    11989,
    12513,
    12854,
    13355,
    13850,
    14063,
    14332,
    14442,
    14761,
    15064,
    15356,
    15552,
    16813,
    16597,
    2135,
    9536,
    10421,
    11338,
    11892,
    12636,
    12229,
    12029,
    11548,
    10974,
    10537,
    9926,
    9057,
    8267,
    7398,
    6323,
    5253,
    3066,
    1793,
    1939,
    2139,
    2195,
    2453,
    2514,
    2854,
    2954,
    3020,
    2991,
    3239,
    3753,
    3768,
    3764,
    3772,
    3754,
    3947,
    3837,
    4534,
    4434,
    4966,
    4981,
    4994,
    4961,
    5010,
    4738,
    4968,
    4608,
    4792,
    4200,
    3899,
    4781,
    4410,
    4910,
    4917,
    4842,
    4917,
    4852,
    4806,
    4850,
    4878,
    4835,
    4928,
    4850,
    4805,
    4817,
    4816,
    4776,
    4847,
    4760,
    4719,
    4724,
    4723,
    4757,
    4468,
    4667,
    4465,
    4658,
    4317,
    4637,
    4680,
    4645,
    4206,
    4297,
    4637,
    4745,
    4034,
    3711,
    4099,
    4519,
    4418,
    4567,
    4599,
    4077,
    4564,
    4517,
    4576,
    4469,
    3551,
    4368,
    4145,
    4465,
    4464,
    4151,
    4416,
    4407,
    4470,
    4121,
    4404,
    4192,
    4404,
    4446,
    4451,
    4409,
    4334,
    4318,
    4367,
    4426,
    4313,
    3253,
    4394,
    4472,
    4004,
    2844,
    4047,
    3638,
    4575,
    4320,
    4403,
    3543,
    4279,
    3963,
    4393,
    4462,
    4668,
    3334,
    3598,
    5141,
    4086,
    4124,
    4402,
    4831,
    4883,
    4837,
    4740,
    4704
  ],
  "frame_begin_times": [
    0,
    16702,
    33503,
    50105,
    66850,
    83519,
    100276,
    117072,
    133768,
    150266,
    167040,
    183667,
    200360,
    217053,
    233750,
    250523,
    267143,
    283827,
    300538,
    317621,
    334052,
    350619,
    367660,
    384297,
    400918,
    417758,
    434322,
    450863,
    467493,
    484222,
    501013,
    518018,
    534345,
    551017,
    567674,
    584409,
    601163,
    618103,
    634518,
    651181,
    667861,
    684603,
    701235,
    717984,
    734693,
    751381,
    768081,
    784736,
    801419,
    818132,
    834785,
    868304,
    885032,
    901572,
    918320,
    935017,
    951682,
    968422,
    985073,
    1001791,
    1018407,
    1035245,
    1051844,
    1068610,
    1085291,
    1101976,
    1118836,
    1135508,
    1152200,
    1168919,
    1185662,
    1202331,
    1219104,
    1235872,
    1252517,
    1269097,
    1285832,
    1302511,
    1319193,
    1336041,
    1352563,
    1369412,
    1386028,
    1402712,
    1419566,
    1436016,
    1452798,
    1469304,
    1485952,
    1502634,
    1519308,
    1536012,
    1552719,
    1569410,
    1586172,
    1602794,
    1619488,
    1636237,
    1653196,
    1669600,
    1686267,
    1702978,
    1719676,
    1736407,
    1753053,
    1770067,
    1786471,
    1803147,
    1819849,
    1836529,
    1853596,
    1869994,
    1886612,
    1903304,
    1920073,
    1936700,
    1953439,
    1970139,
    1986826,
    2003559,
    2020234,
    2036918,
    2053596,
    2070394,
    2087163,
    2103755,
    2120406,
    2137093,
    2153786,
    2170496,
    2187184,
    2203889,
    2220697,
    2237290,
    2253932,
    2270674,
    2287379,
    2304025,
    2320730,
    2337435,
    2354217,
    2370845,
    2387533,
    2404234,
    2420937,
    2437643,
    2454296,
    2471018,
    2487659,
    2504348,
    2521075,
    2537767,
    2554460,
    2571123,
    2587815,
    2604510,
    2621242,
    2637894,
    2654640,
    2671290,
    2688023,
    2704734,
    2721425,
    2738105,
    2754948,
    2771460,
    2788151,
    2804899,
    2821591,
    2838283,
    2854948,
    2871623,
    2888330,
    2904980,
    2921735,
    2938421,
    2955117,
    2971786,
    2988500,
    3005222,
    3021903,
    3038591,
    3055301,
    3071922,
    3088617,
    3105664,
    3122242,
    3138800,
    3155469,
    3172119,
    3188853,
    3205541,
    3222337,
    3238898,
    3255590,
    3272312,
    3289048,
    3305703,
    3322370,
    3339052,
    3355741,
    3372516,
    3389149,
    3405897,
    3422535,
    3439255,
    3455936,
    3472855,
    3489394,
    3506078,
    3522794,
    3539440,
    3556201,
    3572851,
    3589616,
    3606270,
    3622993,
    3639674,
    3656417,
    3673012,
    3689751,
    3706445,
    3723134,
    3739881,
    3756565,
    3773282,
    3789980,
    3806614,
    3823363,
    3840081,
    3856749,
    3873446,
    3890183,
    3906817,
    3923506,
    3940322,
    3956949,
    3973588,
    3990330,
    4007012,
    4023675,
    4040399,
    4057064,
    4073852,
    4090463,
    4107166,
    4123987,
    4140545,
    4157220,
    4173790,
    4190490,
    4207185,
    4224233,
    4240589,
    4257268,
    4273977,
    4290667,
    4307379,
    4324147,
    4340763,
    4357453,
    4374137,
    4390826,
    4407605,
    4424262,
    4440912,
    4457612,
    4474377,
    4491102,
    4507710,
    4524379,
    4541132,
    4557812,
    4574468,
    4591201,
    4607935,
    4624658,
    4641258,
    4658024,
    4674745,
    4691369,
    4708118,
    4724819,
    4741439,
    4758122,
    4774924,
    4791572,
    4808268,
    4824998,
    4841600,
    4858368,
    4875092,
    4891770,
    4908394,
    4925078,
    4941921,
    4958492,
    4975193,
    4991861,
    5008548,
    5025326,
    5042002,
    5058649,
    5075599,
    5092392,
    5108965,
    5125777,
    5142576,
    5159192,
    5175781,
    5192603,
    5209066,
    5225816,
    5242786,
    5259240,
    5275992,
    5292669,
    5309359,
    5326109,
    5342687,
    5359520,
    5376163,
    5392775,
    5409548,
    5426333,
    5442890,
    5459489,
    5476322,
    5493130,
    5509478
  ],
  "frame_rasterizer_begin_times": [
    0,
    16595,
    33458,
    50090,
    66798,
    83580,
    100299,
    117091,
    133797,
    150269,
    167030,
    183666,
    200309,
    217034,
    233722,
    250453,
    267159,
    283842,
    300560,
    317813,
    334326,
    350620,
    367978,
    384457,
    401176,
    418037,
    434518,
    450861,
    467487,
    484257,
    500767,
    518225,
    534368,
    551012,
    567578,
    584418,
    601150,
    618422,
    634516,
    651150,
    667869,
    684565,
    701214,
    717964,
    734649,
    751346,
    768027,
    784701,
    801398,
    818266,
    853263,
    867917,
    884543,
    901229,
    917913,
    934644,
    951399,
    968143,
    984791,
    1001510,
    1018111,
    1035241,
    1051889,
    1068199,
    1084775,
    1101743,
    1119145,
    1135814,
    1152792,
    1169289,
    1185997,
    1202664,
    1219474,
    1236527,
    1253105,
    1269501,
    1286400,
    1303236,
    1319733,
    1336635,
    1352855,
    1370043,
    1386644,
    1402956,
    1419811,
    1436329,
    1453027,
    1469366,
    1485959,
    1502605,
    1519303,
    1535982,
    1552700,
    1569434,
    1586172,
    1602801,
    1619422,
    1636243,
    1653369,
    1669534,
    1686250,
    1702972,
    1719714,
    1736367,
    1753032,
    1770431,
    1786387,
    1803134,
    1819861,
    1836511,
    1853858,
    1869928,
    1886542,
    1903315,
    1920065,
    1936708,
    1953413,
    1970089,
    1986800,
    2003532,
    2020197,
    2036889,
    2053564,
    2070407,
    2087231,
    2103748,
    2120419,
    2137116,
    2153767,
    2170473,
    2187171,
    2203897,
    2220586,
    2237252,
    2253962,
    2270631,
    2287329,
    2303740,
    2320546,
    2337529,
    2354223,
    2370845,
    2387560,
    2404251,
    2420966,
    2437619,
    2454036,
    2470740,
    2487414,
    2503979,
    2520664,
    2537343,
    2554035,
    2570614,
    2587322,
    2603926,
    2620617,
    2637205,
    2653959,
    2670628,
    2687371,
    2704057,
    2720819,
    2737428,
    2754274,
    2770759,
    2787485,
    2804268,
    2820940,
    2837587,
    2854214,
    2870939,
    2887643,
    2904275,
    2921068,
    2937729,
    2954439,
    2971107,
    2987787,
    3004538,
    3021220,
    3037926,
    3054543,
    3071203,
    3087887,
    3105256,
    3121863,
    3138109,
    3154836,
    3171392,
    3188405,
    3204997,
    3221813,
    3238161,
    3254847,
    3271634,
    3288308,
    3304987,
    3321660,
    3338306,
    3355012,
    3371774,
    3388406,
    3405167,
    3421838,
    3438599,
    3455363,
    3472357,
    3488846,
    3505569,
    3522416,
    3539013,
    3555786,
    3572431,
    3589353,
    3605986,
    3622720,
    3639396,
    3656144,
    3672800,
    3689731,
    3706154,
    3723135,
    3739857,
    3756528,
    3773274,
    3789874,
    3806506,
    3823334,
    3840053,
    3856749,
    3873439,
    3890157,
    3906857,
    3923511,
    3940304,
    3956893,
    3973555,
    3990384,
    4007002,
    4023643,
    4040390,
    4056965,
    4073860,
    4090478,
    4107194,
    4124019,
    4140550,
    4157187,
    4173788,
    4190477,
    4207164,
    4224552,
    4240572,
    4257250,
    4273971,
    4290642,
    4307381,
    4324165,
    4340773,
    4357432,
    4374115,
    4390798,
    4407522,
    4424213,
    4440870,
    4457576,
    4474349,
    4491052,
    4507625,
    4524136,
    4541139,
    4557788,
    4574430,
    4591168,
    4607902,
    4624627,
    4641336,
    4657998,
    4674719,
    4691346,
    4708099,
    4724748,
    4741438,
    4758096,
    4774899,
    4791546,
    4808234,
    4824963,
    4841601,
    4858327,
    4875046,
    4891823,
    4908393,
    4925064,
    4941934,
    4958476,
    4975171,
    4991828,
    5008450,
    5025291,
    5041978,
    5058555,
    5075655,
    5092659,
    5109239,
    5125971,
    5143116,
    5159388,
    5176140,
    5192802,
    5209384,
    5226114,
    5243450,
    5259884,
    5276535,
    5293216,
    5309979,
    5326719,
    5343106,
    5360091,
    5376869,
    5393288,
    5410128,
    5426933,
    5443497,
    5459844,
    5476549,
    5493521,
    5509544
  ],
  "average_vsync_transitions_missed": 1.25,
  "90th_percentile_vsync_transitions_missed": 2.0,
  "99th_percentile_vsync_transitions_missed": 2.0,
  "average_vsync_frame_lag": 0.0,
  "90th_percentile_vsync_frame_lag": 0.0,
  "99th_percentile_vsync_frame_lag": 0.0,
  "average_layer_cache_count": 0.0,
  "90th_percentile_layer_cache_count": 0.0,
  "99th_percentile_layer_cache_count": 0.0,
  "average_frame_request_pending_latency": 16639.11212121212,
  "90th_percentile_frame_request_pending_latency": 16728.0,
  "99th_percentile_frame_request_pending_latency": 16913.0,
  "worst_layer_cache_count": 0.0,
  "average_layer_cache_memory": 0.0,
  "90th_percentile_layer_cache_memory": 0.0,
  "99th_percentile_layer_cache_memory": 0.0,
  "worst_layer_cache_memory": 0.0,
  "average_picture_cache_count": 0.0,
  "90th_percentile_picture_cache_count": 0.0,
  "99th_percentile_picture_cache_count": 0.0,
  "worst_picture_cache_count": 0.0,
  "average_picture_cache_memory": 0.0,
  "90th_percentile_picture_cache_memory": 0.0,
  "99th_percentile_picture_cache_memory": 0.0,
  "worst_picture_cache_memory": 0.0,
  "total_ui_gc_time": 5.553,
  "30hz_frame_percentage": 0.0,
  "60hz_frame_percentage": 100.0,
  "80hz_frame_percentage": 0.0,
  "90hz_frame_percentage": 0.0,
  "120hz_frame_percentage": 0.0,
  "illegal_refresh_rate_frame_count": 0,
  "average_gpu_frame_time": 10.430281684410646,
  "90th_percentile_gpu_frame_time": 14.648438,
  "99th_percentile_gpu_frame_time": 15.625,
  "worst_gpu_frame_time": 43.945312,
  "average_gpu_memory_mb": 4.000003999999992,
  "90th_percentile_gpu_memory_mb": 4.000004,
  "99th_percentile_gpu_memory_mb": 4.000004,
  "worst_gpu_memory_mb": 4.000004,
  "average_cpu_usage": 37.200000333333335,
  "90th_percentile_cpu_usage": 38.4,
  "99th_percentile_cpu_usage": 38.4,
  "average_gpu_usage": 61.42857142857143,
  "90th_percentile_gpu_usage": 70.0,
  "99th_percentile_gpu_usage": 74.0,
  "average_memory_usage": 124.7421875,
  "90th_percentile_memory_usage": 127.1875,
  "99th_percentile_memory_usage": 127.1875
}
iPhone12 after:
{
  "average_frame_build_time_millis": 1.1696616314199402,
  "90th_percentile_frame_build_time_millis": 1.711,
  "99th_percentile_frame_build_time_millis": 1.886,
  "worst_frame_build_time_millis": 2.054,
  "missed_frame_build_budget_count": 0,
  "average_frame_rasterizer_time_millis": 5.109553191489361,
  "stddev_frame_rasterizer_time_millis": 1.6292423203776762,
  "90th_percentile_frame_rasterizer_time_millis": 8.535,
  "99th_percentile_frame_rasterizer_time_millis": 13.387,
  "worst_frame_rasterizer_time_millis": 18.165,
  "missed_frame_rasterizer_budget_count": 1,
  "frame_count": 331,
  "frame_rasterizer_count": 329,
  "new_gen_gc_count": 34,
  "old_gen_gc_count": 0,
  "frame_build_times": [
    1128,
    1487,
    1117,
    1607,
    1141,
    1137,
    1210,
    1133,
    1091,
    1127,
    1110,
    1107,
    1104,
    1110,
    1491,
    1122,
    1146,
    1145,
    1150,
    1110,
    1107,
    1501,
    1443,
    1101,
    1706,
    1350,
    1430,
    1415,
    1494,
    1127,
    1628,
    1131,
    1111,
    1462,
    1457,
    1679,
    1736,
    1622,
    1728,
    1644,
    1697,
    1501,
    1411,
    1418,
    1429,
    1290,
    1289,
    1334,
    1757,
    763,
    1080,
    434,
    672,
    1479,
    1896,
    1880,
    1856,
    1782,
    1702,
    1772,
    1829,
    1787,
    1820,
    1795,
    1759,
    1185,
    1143,
    1390,
    1500,
    1539,
    1154,
    1503,
    1434,
    1322,
    1405,
    1449,
    1368,
    1158,
    1156,
    1141,
    1393,
    1422,
    1320,
    1340,
    1121,
    1382,
    1112,
    1108,
    1473,
    1120,
    1175,
    1419,
    1366,
    1312,
    1712,
    1089,
    1110,
    1453,
    1149,
    1113,
    1124,
    1494,
    1151,
    1285,
    1177,
    1579,
    1222,
    1477,
    1637,
    1497,
    1814,
    1608,
    1583,
    1783,
    602,
    1648,
    1549,
    1886,
    1668,
    1755,
    1711,
    1382,
    1489,
    1529,
    1546,
    1217,
    1149,
    1099,
    1138,
    1134,
    1147,
    1127,
    1210,
    1120,
    1129,
    1130,
    1146,
    1119,
    1139,
    1170,
    1166,
    1150,
    1254,
    1101,
    1174,
    2054,
    1148,
    930,
    1024,
    905,
    555,
    534,
    418,
    427,
    392,
    411,
    405,
    401,
    399,
    415,
    377,
    380,
    381,
    411,
    394,
    382,
    382,
    376,
    373,
    362,
    380,
    424,
    382,
    370,
    364,
    372,
    412,
    374,
    407,
    374,
    374,
    367,
    371,
    375,
    374,
    383,
    373,
    375,
    376,
    375,
    371,
    357,
    377,
    373,
    367,
    380,
    387,
    427,
    394,
    422,
    461,
    500,
    486,
    569,
    679,
    673,
    662,
    846,
    831,
    830,
    845,
    857,
    966,
    830,
    869,
    1128,
    1099,
    1133,
    1103,
    1097,
    1100,
    1122,
    1102,
    1460,
    1274,
    1277,
    762,
    1082,
    1767,
    1342,
    1797,
    1653,
    1456,
    1870,
    1756,
    1712,
    773,
    1869,
    1658,
    1849,
    1685,
    1711,
    1544,
    1582,
    1485,
    1188,
    1454,
    1383,
    1154,
    1151,
    1128,
    1108,
    1126,
    1126,
    1120,
    1118,
    1112,
    1119,
    1115,
    1113,
    1102,
    1156,
    1480,
    1318,
    1480,
    1538,
    1491,
    1117,
    1129,
    1451,
    1109,
    1107,
    1093,
    1131,
    1114,
    1101,
    1105,
    1107,
    1102,
    1096,
    1092,
    1448,
    1112,
    1437,
    1450,
    986,
    1096,
    801,
    952,
    1428,
    1449,
    1432,
    1446,
    1782,
    1953,
    1696,
    1720,
    1097,
    1595,
    1681,
    1778,
    1769,
    1763,
    1782,
    1701,
    1492,
    1534,
    1584,
    1322,
    1170,
    1194,
    1655,
    1449,
    1386,
    1465,
    1139,
    1542,
    1112,
    1507,
    1121,
    1115,
    1439,
    1151,
    1125,
    1101,
    1369,
    1113,
    1402,
    1478,
    1111,
    1121
  ],
  "frame_rasterizer_times": [
    4470,
    4348,
    4400,
    4421,
    4333,
    4363,
    4494,
    4347,
    4434,
    4333,
    4351,
    4324,
    4339,
    4368,
    4272,
    4270,
    4248,
    4220,
    4231,
    4229,
    4393,
    4225,
    4163,
    4430,
    4339,
    4302,
    4267,
    4327,
    4211,
    4267,
    4125,
    4131,
    4429,
    4333,
    4283,
    4421,
    4361,
    4338,
    4261,
    4273,
    4388,
    4224,
    4234,
    4209,
    5070,
    3650,
    2771,
    18165,
    1837,
    2402,
    1589,
    1833,
    2672,
    3998,
    4158,
    4169,
    2669,
    4291,
    3382,
    4173,
    3895,
    3843,
    4136,
    4418,
    4286,
    4288,
    4364,
    4449,
    4343,
    4434,
    4384,
    4439,
    4449,
    4390,
    4438,
    4427,
    4307,
    4265,
    4350,
    4577,
    4549,
    4471,
    4452,
    4330,
    4412,
    4389,
    4329,
    4376,
    4402,
    4473,
    4649,
    4583,
    4353,
    4611,
    4513,
    4456,
    4504,
    4435,
    4468,
    4501,
    4718,
    4558,
    4571,
    4718,
    4121,
    4064,
    3376,
    3486,
    3301,
    3599,
    4512,
    4584,
    3828,
    2313,
    3001,
    2750,
    3441,
    3313,
    5389,
    3755,
    3843,
    4161,
    5204,
    5162,
    4907,
    4752,
    4829,
    4815,
    4803,
    4787,
    4839,
    4823,
    4873,
    4888,
    5040,
    5168,
    5541,
    4822,
    4769,
    4784,
    4525,
    4549,
    4640,
    4424,
    6235,
    8535,
    10954,
    12429,
    12596,
    13214,
    12334,
    11594,
    10675,
    9841,
    9098,
    8389,
    7680,
    7119,
    6653,
    6435,
    6226,
    6269,
    6490,
    6394,
    6805,
    6950,
    7341,
    7800,
    8062,
    8523,
    9249,
    9973,
    10653,
    11267,
    11748,
    12240,
    12767,
    12978,
    13253,
    13345,
    13387,
    13559,
    13450,
    13281,
    13112,
    12983,
    12614,
    12292,
    11744,
    11096,
    10429,
    9663,
    8824,
    7824,
    6792,
    5724,
    3530,
    1717,
    1753,
    1905,
    2121,
    2091,
    2379,
    2653,
    2877,
    2863,
    3047,
    3611,
    3514,
    4322,
    3627,
    3539,
    3572,
    3579,
    4685,
    4813,
    4802,
    4813,
    4783,
    4783,
    4783,
    4581,
    5069,
    4849,
    5032,
    3462,
    3507,
    2641,
    4039,
    3394,
    4859,
    3302,
    4983,
    3295,
    4699,
    2470,
    3422,
    4031,
    4326,
    4561,
    4147,
    3927,
    4763,
    4696,
    4788,
    4690,
    4708,
    4449,
    4502,
    4505,
    4455,
    4430,
    4400,
    4440,
    4413,
    4453,
    4358,
    4373,
    4396,
    4374,
    4373,
    4613,
    4527,
    4547,
    4510,
    4328,
    4262,
    4247,
    4311,
    4227,
    4226,
    4175,
    4241,
    4187,
    4222,
    4207,
    4125,
    4161,
    4156,
    4179,
    4206,
    4386,
    4301,
    5957,
    4211,
    3429,
    2487,
    2934,
    4237,
    3825,
    3494,
    4132,
    4197,
    4621,
    4386,
    2821,
    2587,
    3005,
    3669,
    4239,
    3504,
    4152,
    4194,
    4256,
    4462,
    4253,
    4177,
    4328,
    4104,
    4162,
    4374,
    4212,
    4400,
    4178,
    4185,
    4178,
    4180,
    4186,
    4136,
    4191,
    4421,
    4280,
    4243,
    4227,
    4420,
    4258,
    4444,
    4263,
    4246
  ],
  "frame_begin_times": [
    0,
    16995,
    33382,
    50339,
    66792,
    83465,
    100220,
    116871,
    133553,
    150243,
    167010,
    183664,
    200317,
    217004,
    234034,
    250401,
    267113,
    283842,
    300505,
    317211,
    333912,
    350851,
    367569,
    383999,
    400938,
    417672,
    434264,
    451011,
    467600,
    484233,
    500846,
    517545,
    534235,
    551108,
    567958,
    584608,
    601306,
    618118,
    634710,
    651376,
    668145,
    684869,
    701519,
    718205,
    734786,
    751425,
    768123,
    784849,
    801683,
    818245,
    834835,
    851406,
    868109,
    885035,
    901838,
    918444,
    935201,
    951783,
    968614,
    985238,
    1001956,
    1018728,
    1035392,
    1051976,
    1068678,
    1085260,
    1101855,
    1118736,
    1135475,
    1152182,
    1168672,
    1185537,
    1202160,
    1219064,
    1235616,
    1252292,
    1268991,
    1285528,
    1302240,
    1318965,
    1335856,
    1352613,
    1369206,
    1385933,
    1402479,
    1419372,
    1435796,
    1452512,
    1469473,
    1485890,
    1502650,
    1519422,
    1536109,
    1552872,
    1569556,
    1586059,
    1602740,
    1619657,
    1636119,
    1652839,
    1669503,
    1686516,
    1702915,
    1719559,
    1736296,
    1753280,
    1769674,
    1786549,
    1803328,
    1819960,
    1836610,
    1853335,
    1870045,
    1886958,
    1903234,
    1920259,
    1936921,
    1953472,
    1970212,
    1986928,
    2003740,
    2020279,
    2036928,
    2053838,
    2070441,
    2086960,
    2103650,
    2120391,
    2136999,
    2153681,
    2170388,
    2187104,
    2203769,
    2220474,
    2237187,
    2253857,
    2270562,
    2287261,
    2303946,
    2320818,
    2337324,
    2354049,
    2370771,
    2387537,
    2404162,
    2420987,
    2437602,
    2454156,
    2471033,
    2487702,
    2504260,
    2520960,
    2537545,
    2554259,
    2570954,
    2587632,
    2604342,
    2621061,
    2637759,
    2654484,
    2671190,
    2687907,
    2704573,
    2721213,
    2738018,
    2754662,
    2771425,
    2788066,
    2804749,
    2821486,
    2838162,
    2854859,
    2871537,
    2888177,
    2904888,
    2921630,
    2938276,
    2955009,
    2971733,
    2988325,
    3005069,
    3021799,
    3038429,
    3055154,
    3071903,
    3088522,
    3105181,
    3121918,
    3138617,
    3155340,
    3172059,
    3188693,
    3205389,
    3222117,
    3238849,
    3255525,
    3272199,
    3288902,
    3305600,
    3322247,
    3338958,
    3355652,
    3372365,
    3389068,
    3405756,
    3422491,
    3439179,
    3455860,
    3472651,
    3489308,
    3505987,
    3522640,
    3539330,
    3556132,
    3572726,
    3589455,
    3606238,
    3622870,
    3639554,
    3656328,
    3672953,
    3689701,
    3706332,
    3723339,
    3740034,
    3756582,
    3773123,
    3789840,
    3806621,
    3823554,
    3840139,
    3856756,
    3873525,
    3890306,
    3906972,
    3923733,
    3940050,
    3956976,
    3973769,
    3990352,
    4007227,
    4023807,
    4040383,
    4057127,
    4073798,
    4090338,
    4107144,
    4123921,
    4140446,
    4157130,
    4173896,
    4190472,
    4207198,
    4223872,
    4240585,
    4257345,
    4274020,
    4290681,
    4307373,
    4324099,
    4340825,
    4357540,
    4374456,
    4391123,
    4407889,
    4424473,
    4441245,
    4457715,
    4474368,
    4491316,
    4507737,
    4524446,
    4541137,
    4557906,
    4574548,
    4591226,
    4607908,
    4624656,
    4641305,
    4658007,
    4674758,
    4691660,
    4708124,
    4724913,
    4741880,
    4758331,
    4774944,
    4791646,
    4808329,
    4825091,
    4841859,
    4858516,
    4875274,
    4892069,
    4908692,
    4925438,
    4942141,
    4958689,
    4975455,
    4992104,
    5008795,
    5025583,
    5042199,
    5058889,
    5075735,
    5092275,
    5108971,
    5125640,
    5142416,
    5159040,
    5175706,
    5192538,
    5209252,
    5225950,
    5242643,
    5259144,
    5276067,
    5292508,
    5309512,
    5325951,
    5342570,
    5359502,
    5376076,
    5392705,
    5409361,
    5426285,
    5442772,
    5459725,
    5476402,
    5492906,
    5509598
  ],
  "frame_rasterizer_begin_times": [
    0,
    16051,
    33496,
    49483,
    66162,
    82987,
    99549,
    116194,
    132839,
    149668,
    166237,
    182936,
    199666,
    217052,
    233072,
    249728,
    266517,
    283214,
    299868,
    316572,
    333817,
    350602,
    366647,
    384165,
    400547,
    417182,
    433938,
    450638,
    466910,
    483945,
    500177,
    516898,
    534072,
    550942,
    567808,
    584642,
    601275,
    617924,
    634617,
    651434,
    667964,
    684396,
    701087,
    717666,
    734188,
    750802,
    767674,
    784934,
    803112,
    817240,
    833301,
    850194,
    867991,
    885276,
    901867,
    918586,
    935064,
    951862,
    968557,
    985325,
    1002057,
    1018706,
    1035261,
    1051977,
    1068001,
    1084467,
    1101632,
    1118465,
    1135298,
    1151403,
    1168542,
    1185109,
    1201863,
    1218542,
    1235230,
    1251865,
    1268256,
    1284864,
    1301659,
    1318730,
    1335520,
    1352013,
    1368784,
    1385148,
    1402267,
    1418455,
    1435172,
    1452478,
    1468559,
    1485327,
    1502342,
    1519045,
    1535678,
    1552788,
    1568719,
    1585403,
    1602630,
    1618814,
    1635504,
    1652197,
    1669477,
    1685617,
    1702160,
    1718956,
    1736134,
    1752269,
    1769622,
    1786540,
    1802947,
    1819933,
    1836434,
    1853166,
    1870280,
    1885257,
    1903459,
    1920006,
    1936890,
    1953420,
    1970208,
    1986994,
    2003180,
    2019949,
    2036886,
    2053461,
    2069722,
    2086283,
    2103046,
    2119688,
    2136310,
    2153089,
    2169754,
    2186394,
    2203072,
    2219850,
    2236535,
    2253275,
    2269849,
    2286633,
    2303456,
    2320042,
    2336747,
    2353571,
    2370107,
    2386856,
    2404306,
    2420149,
    2436559,
    2453377,
    2470031,
    2486255,
    2502950,
    2519417,
    2536122,
    2552807,
    2569478,
    2586181,
    2602917,
    2619698,
    2636450,
    2653104,
    2669823,
    2686413,
    2703080,
    2719947,
    2736566,
    2753345,
    2769977,
    2786580,
    2803384,
    2820080,
    2836816,
    2853453,
    2870082,
    2886785,
    2903547,
    2920222,
    2936915,
    2953673,
    2970229,
    2986975,
    3003699,
    3020274,
    3037064,
    3053808,
    3070439,
    3087026,
    3103839,
    3120453,
    3137256,
    3153961,
    3170585,
    3187297,
    3204040,
    3220753,
    3237455,
    3254125,
    3270810,
    3287528,
    3304194,
    3320908,
    3337620,
    3354391,
    3371170,
    3387978,
    3404702,
    3421375,
    3438246,
    3455021,
    3471691,
    3488373,
    3505077,
    3521832,
    3538441,
    3555151,
    3572130,
    3588885,
    3605552,
    3622209,
    3638979,
    3655599,
    3672374,
    3688910,
    3706242,
    3722764,
    3739334,
    3755352,
    3772270,
    3789791,
    3806478,
    3823457,
    3839881,
    3856517,
    3873727,
    3890278,
    3906979,
    3922185,
    3940358,
    3956976,
    3973740,
    3990454,
    4007063,
    4023426,
    4040200,
    4056715,
    4073113,
    4090094,
    4106724,
    4123083,
    4139828,
    4156574,
    4173131,
    4189877,
    4206549,
    4223259,
    4240009,
    4256686,
    4273297,
    4290036,
    4306762,
    4323493,
    4340243,
    4357459,
    4373965,
    4390853,
    4407529,
    4424255,
    4440377,
    4457059,
    4474278,
    4490332,
    4507103,
    4523787,
    4540506,
    4557212,
    4573881,
    4590560,
    4607323,
    4623952,
    4640652,
    4657421,
    4674666,
    4690752,
    4707796,
    4724784,
    4740754,
    4757452,
    4773852,
    4790531,
    4808040,
    4824786,
    4841369,
    4858201,
    4875362,
    4892187,
    4908675,
    4925404,
    4941249,
    4958613,
    4975320,
    4992103,
    5008888,
    5025507,
    5042245,
    5058954,
    5075268,
    5092079,
    5108783,
    5125217,
    5141740,
    5158387,
    5175719,
    5192223,
    5208842,
    5225652,
    5241837,
    5259124,
    5275192,
    5292504,
    5308605,
    5325238,
    5342431,
    5358696,
    5375362,
    5392013,
    5409132,
    5425434,
    5442671,
    5459420,
    5475570
  ],
  "average_vsync_transitions_missed": 1.0,
  "90th_percentile_vsync_transitions_missed": 1.0,
  "99th_percentile_vsync_transitions_missed": 1.0,
  "average_vsync_frame_lag": 0.0,
  "90th_percentile_vsync_frame_lag": 0.0,
  "99th_percentile_vsync_frame_lag": 0.0,
  "average_layer_cache_count": 0.0,
  "90th_percentile_layer_cache_count": 0.0,
  "99th_percentile_layer_cache_count": 0.0,
  "average_frame_request_pending_latency": 16612.284848484847,
  "90th_percentile_frame_request_pending_latency": 16742.0,
  "99th_percentile_frame_request_pending_latency": 16884.0,
  "worst_layer_cache_count": 0.0,
  "average_layer_cache_memory": 0.0,
  "90th_percentile_layer_cache_memory": 0.0,
  "99th_percentile_layer_cache_memory": 0.0,
  "worst_layer_cache_memory": 0.0,
  "average_picture_cache_count": 0.0,
  "90th_percentile_picture_cache_count": 0.0,
  "99th_percentile_picture_cache_count": 0.0,
  "worst_picture_cache_count": 0.0,
  "average_picture_cache_memory": 0.0,
  "90th_percentile_picture_cache_memory": 0.0,
  "99th_percentile_picture_cache_memory": 0.0,
  "worst_picture_cache_memory": 0.0,
  "total_ui_gc_time": 5.413,
  "30hz_frame_percentage": 0.0,
  "60hz_frame_percentage": 100.0,
  "80hz_frame_percentage": 0.0,
  "90hz_frame_percentage": 0.0,
  "120hz_frame_percentage": 0.0,
  "illegal_refresh_rate_frame_count": 0,
  "average_gpu_frame_time": 9.523080186274521,
  "90th_percentile_gpu_frame_time": 13.671875,
  "99th_percentile_gpu_frame_time": 15.625,
  "worst_gpu_frame_time": 15.625,
  "average_gpu_memory_mb": 4.000003999999992,
  "90th_percentile_gpu_memory_mb": 4.000004,
  "99th_percentile_gpu_memory_mb": 4.000004,
  "worst_gpu_memory_mb": 4.000004,
  "average_cpu_usage": 38.08333316666667,
  "90th_percentile_cpu_usage": 39.099999,
  "99th_percentile_cpu_usage": 39.099999,
  "average_gpu_usage": 57.42857142857143,
  "90th_percentile_gpu_usage": 67.0,
  "99th_percentile_gpu_usage": 70.0,
  "average_memory_usage": 125.14583333333333,
  "90th_percentile_memory_usage": 127.453125,
  "99th_percentile_memory_usage": 127.453125
}
Pixel 8 before:
{
  "average_frame_build_time_millis": 6.7853257790368255,
  "90th_percentile_frame_build_time_millis": 9.587,
  "99th_percentile_frame_build_time_millis": 11.132,
  "worst_frame_build_time_millis": 11.939,
  "missed_frame_build_budget_count": 0,
  "average_frame_rasterizer_time_millis": 9.132011331444755,
  "stddev_frame_rasterizer_time_millis": 1.7188828575785067,
  "90th_percentile_frame_rasterizer_time_millis": 11.453,
  "99th_percentile_frame_rasterizer_time_millis": 12.779,
  "worst_frame_rasterizer_time_millis": 37.934,
  "missed_frame_rasterizer_budget_count": 1,
  "frame_count": 353,
  "frame_rasterizer_count": 353,
  "new_gen_gc_count": 70,
  "old_gen_gc_count": 0,
  "frame_build_times": [
    10994,
    4030,
    4217,
    8075,
    11132,
    7458,
    8195,
    8360,
    8407,
    8409,
    7751,
    6444,
    9368,
    8067,
    7414,
    7312,
    6802,
    3544,
    9594,
    2767,
    8359,
    9926,
    3416,
    7895,
    3329,
    3530,
    3631,
    5460,
    8066,
    8562,
    3464,
    8523,
    6094,
    2555,
    3297,
    10853,
    8010,
    8050,
    7469,
    7872,
    6790,
    8915,
    8851,
    7886,
    2903,
    3954,
    3280,
    5767,
    4730,
    4403,
    9508,
    10204,
    7556,
    6822,
    9349,
    8200,
    10141,
    4725,
    3755,
    7213,
    9432,
    2239,
    8941,
    8598,
    3542,
    2585,
    2675,
    1900,
    5463,
    7814,
    8431,
    9175,
    8731,
    4960,
    7500,
    3525,
    9885,
    2300,
    9800,
    10459,
    4137,
    7693,
    7554,
    7764,
    8645,
    4259,
    7869,
    7617,
    7071,
    9895,
    8367,
    8884,
    11939,
    6785,
    4207,
    2787,
    10361,
    8463,
    7444,
    7723,
    6813,
    8051,
    8304,
    10044,
    4382,
    10792,
    2518,
    8750,
    4213,
    8830,
    7841,
    7534,
    8100,
    8900,
    9461,
    7943,
    7271,
    7569,
    6946,
    9803,
    8447,
    10406,
    7596,
    7547,
    4921,
    8998,
    8978,
    9265,
    6763,
    3488,
    9516,
    2571,
    5032,
    4662,
    7687,
    7908,
    7050,
    8906,
    1218,
    6026,
    3927,
    10908,
    8677,
    3828,
    8616,
    8137,
    7748,
    3911,
    7405,
    4634,
    9570,
    7571,
    8682,
    7193,
    8582,
    5335,
    3678,
    3612,
    3687,
    3348,
    8429,
    8625,
    8879,
    8170,
    4493,
    7983,
    2830,
    2764,
    8152,
    2482,
    6022,
    8457,
    3237,
    9450,
    8081,
    8531,
    8244,
    4642,
    7691,
    8989,
    7870,
    9377,
    8675,
    4564,
    8296,
    3717,
    4603,
    8367,
    1651,
    8474,
    2087,
    8344,
    7268,
    8067,
    8092,
    8731,
    7345,
    2575,
    8387,
    7527,
    4549,
    11484,
    9065,
    10904,
    8908,
    8538,
    3769,
    10724,
    2248,
    4608,
    4764,
    4584,
    3557,
    8921,
    8218,
    3332,
    7837,
    3726,
    10238,
    7725,
    7845,
    2851,
    4808,
    8552,
    7377,
    7795,
    7718,
    2936,
    5099,
    8052,
    7659,
    7389,
    3748,
    9323,
    8646,
    8442,
    9579,
    8060,
    8513,
    8929,
    9125,
    3403,
    9587,
    7225,
    8489,
    9473,
    11070,
    1697,
    3966,
    4554,
    5232,
    5304,
    10106,
    7627,
    3309,
    7586,
    6762,
    4620,
    9532,
    8810,
    9575,
    8984,
    7763,
    9782,
    10161,
    4548,
    1570,
    3038,
    4263,
    4595,
    3582,
    8370,
    8082,
    4056,
    8908,
    7591,
    8611,
    7984,
    9000,
    8959,
    2473,
    11143,
    9931,
    7002,
    8932,
    4637,
    11664,
    10940,
    1613,
    8701,
    1596,
    3818,
    7845,
    7825,
    7872,
    8634,
    8430,
    4295,
    3773,
    5820,
    5160,
    4777,
    4796,
    5501,
    7440,
    8761,
    9647,
    1586,
    1799,
    1297,
    8230,
    8201,
    9610,
    2808,
    1401,
    3462,
    7553,
    5346,
    8253,
    8704,
    3858,
    7826,
    9022,
    4284,
    3853,
    4968,
    2423,
    3518,
    9981,
    4258,
    8170,
    8052,
    7644,
    7266,
    4769,
    7928,
    7464,
    7226,
    6004,
    1469,
    5215,
    5494,
    5409,
    7404,
    6711,
    7253,
    7720,
    7655,
    10565,
    10287,
    5715,
    3786,
    3489
  ],
  "frame_rasterizer_times": [
    6815,
    4985,
    9147,
    7816,
    9306,
    4777,
    9781,
    8688,
    9610,
    10232,
    10786,
    11299,
    11027,
    11303,
    11082,
    11420,
    7104,
    8671,
    7466,
    6256,
    6546,
    8874,
    9827,
    10093,
    10656,
    11534,
    6711,
    7661,
    5985,
    10215,
    8194,
    9321,
    6802,
    10668,
    10882,
    10185,
    10269,
    10511,
    9928,
    10660,
    10491,
    10367,
    10561,
    11999,
    11959,
    10522,
    11053,
    10221,
    10599,
    9820,
    10062,
    10267,
    9874,
    9633,
    10107,
    10082,
    10013,
    10488,
    7082,
    6703,
    6348,
    11657,
    6592,
    7555,
    7658,
    9016,
    10338,
    8645,
    37934,
    6044,
    9208,
    9836,
    7249,
    7454,
    8834,
    6371,
    9233,
    7152,
    9568,
    4977,
    8787,
    7942,
    8962,
    9437,
    11182,
    8653,
    5890,
    10156,
    9453,
    7983,
    7299,
    9897,
    11308,
    4994,
    5466,
    7277,
    10476,
    7900,
    10821,
    9982,
    9834,
    10862,
    10664,
    4093,
    10480,
    11267,
    6355,
    9668,
    8646,
    6412,
    8285,
    10899,
    7157,
    11693,
    11290,
    10348,
    11016,
    7429,
    11853,
    9730,
    9421,
    7852,
    11453,
    11645,
    11657,
    11699,
    11309,
    11160,
    6729,
    12256,
    12453,
    5739,
    7266,
    6937,
    6175,
    4146,
    4990,
    6236,
    2765,
    8762,
    8754,
    8560,
    9063,
    8547,
    10028,
    8790,
    7993,
    9409,
    8241,
    10972,
    11675,
    11941,
    11754,
    7914,
    6876,
    5224,
    6701,
    9752,
    8416,
    7090,
    6556,
    5679,
    9331,
    8983,
    10681,
    9398,
    10749,
    9512,
    6144,
    12180,
    8496,
    10934,
    7511,
    7278,
    9840,
    7911,
    7506,
    12756,
    12162,
    12273,
    13317,
    11488,
    13273,
    9623,
    11582,
    8300,
    8034,
    8297,
    9856,
    9955,
    7921,
    9428,
    6851,
    9033,
    9500,
    9931,
    12099,
    12779,
    11465,
    12931,
    7477,
    6012,
    7704,
    11164,
    9532,
    11165,
    9940,
    10610,
    9607,
    10028,
    10249,
    9856,
    9116,
    10537,
    5454,
    11154,
    8240,
    11426,
    7975,
    6894,
    8083,
    10697,
    9906,
    9844,
    9527,
    11497,
    10313,
    12510,
    11776,
    8370,
    7010,
    8477,
    10826,
    10627,
    10183,
    8550,
    4675,
    6842,
    10161,
    9414,
    10108,
    7326,
    6526,
    11210,
    10517,
    10935,
    11974,
    8097,
    8834,
    6751,
    5610,
    4650,
    8593,
    10573,
    6337,
    7374,
    9024,
    11861,
    5537,
    7313,
    7118,
    8923,
    7850,
    6657,
    12083,
    7890,
    9971,
    6158,
    9320,
    9578,
    9903,
    9917,
    8544,
    8348,
    10933,
    11379,
    9806,
    8742,
    8407,
    11385,
    9951,
    11870,
    10629,
    8656,
    10161,
    10446,
    10625,
    3852,
    11871,
    6978,
    7120,
    10670,
    10787,
    10309,
    9830,
    10170,
    6676,
    9698,
    8586,
    7377,
    7217,
    10993,
    11347,
    10307,
    10928,
    8739,
    9616,
    5483,
    8725,
    8738,
    5466,
    8358,
    8740,
    6556,
    7435,
    5332,
    5513,
    9236,
    10246,
    9666,
    9566,
    9870,
    7003,
    10129,
    5842,
    6973,
    7424,
    9739,
    8122,
    7117,
    9139,
    7537,
    7400,
    8943,
    9397,
    7266,
    7158,
    7576,
    7224,
    10122,
    5365,
    5633,
    9972,
    9879,
    9386,
    10183,
    9297,
    10959,
    11093,
    10837,
    8426,
    10696,
    9530
  ],
  "frame_begin_times": [
    0,
    18633,
    34706,
    49814,
    66158,
    82985,
    99561,
    116367,
    133805,
    149675,
    166031,
    182564,
    199422,
    216140,
    232617,
    249960,
    266252,
    282909,
    300105,
    315991,
    332848,
    349451,
    367592,
    382693,
    401114,
    415965,
    432655,
    449549,
    466871,
    482948,
    499279,
    516668,
    533435,
    550722,
    567966,
    583028,
    599366,
    615995,
    632811,
    649359,
    666684,
    682797,
    699715,
    715655,
    734125,
    751370,
    767993,
    783753,
    799907,
    816393,
    833276,
    849391,
    866206,
    882603,
    899510,
    916045,
    933127,
    949306,
    966027,
    982747,
    999226,
    1015997,
    1033221,
    1049387,
    1067189,
    1085547,
    1100754,
    1117891,
    1132913,
    1149531,
    1183056,
    1199271,
    1216488,
    1232723,
    1249715,
    1267292,
    1284005,
    1301033,
    1316837,
    1333984,
    1349127,
    1366105,
    1382879,
    1399147,
    1415761,
    1432394,
    1449132,
    1466026,
    1482505,
    1499845,
    1516238,
    1532480,
    1549187,
    1566636,
    1582402,
    1600796,
    1616041,
    1633017,
    1649536,
    1665854,
    1682728,
    1699144,
    1716054,
    1732901,
    1749023,
    1766723,
    1782440,
    1798998,
    1815774,
    1832631,
    1849292,
    1866573,
    1882591,
    1899778,
    1915723,
    1932505,
    1949385,
    1965614,
    1982411,
    1999681,
    2015772,
    2033040,
    2049450,
    2065626,
    2082972,
    2099986,
    2116355,
    2132455,
    2151117,
    2167490,
    2182931,
    2200863,
    2215923,
    2232702,
    2249618,
    2266798,
    2282843,
    2299251,
    2315412,
    2332461,
    2351106,
    2366500,
    2382526,
    2399055,
    2415786,
    2432230,
    2449169,
    2467141,
    2482834,
    2499181,
    2516391,
    2532263,
    2549062,
    2565618,
    2582735,
    2599297,
    2616344,
    2632481,
    2649030,
    2665527,
    2683094,
    2699356,
    2715939,
    2732660,
    2750628,
    2765964,
    2784772,
    2799415,
    2816273,
    2832936,
    2849570,
    2866665,
    2883775,
    2899455,
    2915352,
    2932190,
    2949010,
    2965801,
    2982850,
    2999120,
    3015507,
    3032704,
    3048810,
    3066170,
    3082792,
    3099074,
    3115591,
    3132703,
    3149019,
    3165975,
    3182459,
    3198897,
    3216031,
    3232887,
    3249208,
    3265621,
    3282662,
    3300415,
    3316178,
    3332084,
    3348580,
    3365884,
    3382132,
    3399064,
    3415943,
    3432559,
    3451063,
    3466546,
    3485056,
    3499582,
    3515741,
    3532240,
    3548865,
    3565518,
    3582799,
    3598769,
    3615315,
    3631894,
    3649075,
    3665532,
    3682389,
    3700784,
    3715696,
    3732495,
    3749012,
    3765697,
    3782004,
    3800451,
    3815613,
    3832642,
    3849089,
    3865490,
    3882100,
    3899106,
    3915488,
    3931899,
    3948895,
    3965604,
    3982124,
    3999215,
    4015406,
    4031952,
    4049034,
    4065236,
    4082034,
    4099294,
    4115862,
    4134137,
    4148869,
    4165453,
    4182039,
    4198702,
    4215690,
    4232068,
    4248757,
    4265878,
    4282060,
    4298697,
    4316656,
    4332209,
    4348988,
    4365267,
    4381901,
    4398882,
    4415918,
    4433552,
    4450663,
    4468316,
    4481896,
    4498738,
    4515588,
    4532981,
    4548788,
    4565078,
    4582135,
    4598662,
    4615741,
    4631998,
    4648942,
    4665950,
    4681993,
    4699102,
    4715544,
    4731887,
    4748997,
    4765340,
    4782069,
    4798823,
    4815667,
    4833122,
    4850110,
    4867283,
    4882218,
    4898968,
    4915152,
    4931992,
    4948626,
    4966639,
    4983481,
    4998703,
    5015504,
    5032048,
    5048723,
    5066343,
    5082699,
    5098617,
    5115668,
    5131533,
    5150443,
    5165437,
    5182821,
    5198909,
    5216040,
    5232236,
    5250661,
    5265386,
    5282367,
    5298408,
    5315309,
    5332582,
    5348561,
    5365813,
    5381823,
    5398613,
    5415338,
    5432152,
    5449027,
    5465378,
    5482741,
    5498606,
    5515321,
    5531698,
    5548434,
    5565003,
    5581668,
    5598669,
    5615269,
    5631872,
    5649107,
    5666525,
    5681787,
    5698343,
    5714990,
    5731785,
    5748177,
    5766152,
    5781600,
    5798479,
    5815494,
    5831753,
    5849408,
    5866644,
    5883923
  ],
  "frame_rasterizer_begin_times": [
    0,
    11883,
    28222,
    47101,
    66576,
    79368,
    96869,
    115865,
    131717,
    147633,
    163185,
    178163,
    197965,
    213390,
    229209,
    246794,
    262312,
    275806,
    298804,
    308036,
    330374,
    348460,
    360236,
    379538,
    393959,
    408661,
    425777,
    444166,
    464044,
    480626,
    491901,
    514376,
    530353,
    542926,
    560595,
    583162,
    596678,
    613217,
    629573,
    646388,
    662657,
    680856,
    697610,
    712714,
    726307,
    744656,
    760581,
    778834,
    793982,
    809928,
    831561,
    849018,
    863046,
    878705,
    897981,
    913531,
    932443,
    943340,
    959521,
    979519,
    998167,
    1007607,
    1033099,
    1047584,
    1060144,
    1077801,
    1092692,
    1109098,
    1127769,
    1165785,
    1180676,
    1197363,
    1214371,
    1226864,
    1246662,
    1260289,
    1283223,
    1292622,
    1315983,
    1333602,
    1342444,
    1362967,
    1379589,
    1396073,
    1413576,
    1425749,
    1447865,
    1462947,
    1479018,
    1498934,
    1513779,
    1530538,
    1550257,
    1562565,
    1575765,
    1592850,
    1615572,
    1632722,
    1646585,
    1662928,
    1678707,
    1696727,
    1713682,
    1732099,
    1742632,
    1768449,
    1779753,
    1796862,
    1809334,
    1830734,
    1846326,
    1863466,
    1881786,
    1898053,
    1914314,
    1929596,
    1945956,
    1962518,
    1978651,
    1998636,
    2013353,
    2032937,
    2046347,
    2062366,
    2077208,
    2098057,
    2114452,
    2130798,
    2147039,
    2160486,
    2181774,
    2194309,
    2210264,
    2226751,
    2246476,
    2265811,
    2280638,
    2301100,
    2307356,
    2327933,
    2344640,
    2366568,
    2380701,
    2392137,
    2413378,
    2429495,
    2446403,
    2460377,
    2479283,
    2492935,
    2515126,
    2529119,
    2547044,
    2562311,
    2580501,
    2594178,
    2609158,
    2625251,
    2641899,
    2658033,
    2680933,
    2697450,
    2714318,
    2730001,
    2744514,
    2763098,
    2776924,
    2791347,
    2813583,
    2824700,
    2844731,
    2864137,
    2876299,
    2898087,
    2912568,
    2929858,
    2946379,
    2959603,
    2979811,
    2997199,
    3012665,
    3031208,
    3047168,
    3060526,
    3080134,
    3092119,
    3109512,
    3131991,
    3140426,
    3165825,
    3175815,
    3196382,
    3212462,
    3230143,
    3246573,
    3263450,
    3279168,
    3292527,
    3313655,
    3328780,
    3342313,
    3366670,
    3380361,
    3399398,
    3414026,
    3430232,
    3444264,
    3466513,
    3477243,
    3493514,
    3509952,
    3525915,
    3541823,
    3563123,
    3580175,
    3591524,
    3612304,
    3624710,
    3648489,
    3662639,
    3679621,
    3693163,
    3709834,
    3730203,
    3745692,
    3762601,
    3778882,
    3792710,
    3809838,
    3829861,
    3846038,
    3861968,
    3874933,
    3897542,
    3913121,
    3929613,
    3949399,
    3962843,
    3980137,
    3997564,
    4013615,
    4024516,
    4049669,
    4062049,
    4079848,
    4097945,
    4116230,
    4128423,
    4141742,
    4159194,
    4178185,
    4193721,
    4215303,
    4229127,
    4241223,
    4262769,
    4277997,
    4293030,
    4318106,
    4330206,
    4347947,
    4363735,
    4379050,
    4400023,
    4415547,
    4427735,
    4441529,
    4460634,
    4475454,
    4493005,
    4508763,
    4530786,
    4546142,
    4558298,
    4580539,
    4595604,
    4613554,
    4629146,
    4647108,
    4663554,
    4674967,
    4699355,
    4714536,
    4728024,
    4747088,
    4759067,
    4782991,
    4799285,
    4806563,
    4830975,
    4840966,
    4860498,
    4879479,
    4896228,
    4912232,
    4929906,
    4946180,
    4960209,
    4976614,
    4993841,
    5010010,
    5025942,
    5042662,
    5061445,
    5079519,
    5099878,
    5117614,
    5127302,
    5141503,
    5155965,
    5180206,
    5196261,
    5214842,
    5224257,
    5241317,
    5258145,
    5279347,
    5293138,
    5313042,
    5330775,
    5341702,
    5362953,
    5380352,
    5392175,
    5410140,
    5428138,
    5442408,
    5459808,
    5479514,
    5492052,
    5512769,
    5528914,
    5545252,
    5561441,
    5575789,
    5598635,
    5613582,
    5630075,
    5645970,
    5657536,
    5678180,
    5693622,
    5709939,
    5728446,
    5744149,
    5762680,
    5778607,
    5795530,
    5815196,
    5831506,
    5844306,
    5859558,
    5876645
  ],
  "average_vsync_transitions_missed": 1.0046296296296295,
  "90th_percentile_vsync_transitions_missed": 1.0,
  "99th_percentile_vsync_transitions_missed": 1.0,
  "average_vsync_frame_lag": 0.0,
  "90th_percentile_vsync_frame_lag": 0.0,
  "99th_percentile_vsync_frame_lag": 0.0,
  "average_layer_cache_count": 0.0,
  "90th_percentile_layer_cache_count": 0.0,
  "99th_percentile_layer_cache_count": 0.0,
  "average_frame_request_pending_latency": 16392.909604519773,
  "90th_percentile_frame_request_pending_latency": 17100.0,
  "99th_percentile_frame_request_pending_latency": 18396.0,
  "worst_layer_cache_count": 0.0,
  "average_layer_cache_memory": 0.0,
  "90th_percentile_layer_cache_memory": 0.0,
  "99th_percentile_layer_cache_memory": 0.0,
  "worst_layer_cache_memory": 0.0,
  "average_picture_cache_count": 0.0,
  "90th_percentile_picture_cache_count": 0.0,
  "99th_percentile_picture_cache_count": 0.0,
  "worst_picture_cache_count": 0.0,
  "average_picture_cache_memory": 0.0,
  "90th_percentile_picture_cache_memory": 0.0,
  "99th_percentile_picture_cache_memory": 0.0,
  "worst_picture_cache_memory": 0.0,
  "total_ui_gc_time": 72.686,
  "30hz_frame_percentage": 0.0,
  "60hz_frame_percentage": 100.0,
  "80hz_frame_percentage": 0.0,
  "90hz_frame_percentage": 0.0,
  "120hz_frame_percentage": 0.0,
  "illegal_refresh_rate_frame_count": 0,
  "average_gpu_frame_time": 0.0,
  "90th_percentile_gpu_frame_time": 0.0,
  "99th_percentile_gpu_frame_time": 0.0,
  "worst_gpu_frame_time": 0.0,
  "average_gpu_memory_mb": 102.89843799999979,
  "90th_percentile_gpu_memory_mb": 102.898438,
  "99th_percentile_gpu_memory_mb": 102.898438,
  "worst_gpu_memory_mb": 102.898438
}
Pixel 8 after:
{
  "average_frame_build_time_millis": 6.473488439306359,
  "90th_percentile_frame_build_time_millis": 8.784,
  "99th_percentile_frame_build_time_millis": 10.958,
  "worst_frame_build_time_millis": 11.541,
  "missed_frame_build_budget_count": 0,
  "average_frame_rasterizer_time_millis": 8.545343930635836,
  "stddev_frame_rasterizer_time_millis": 1.301917254168198,
  "90th_percentile_frame_rasterizer_time_millis": 10.547,
  "99th_percentile_frame_rasterizer_time_millis": 11.552,
  "worst_frame_rasterizer_time_millis": 11.748,
  "missed_frame_rasterizer_budget_count": 0,
  "frame_count": 346,
  "frame_rasterizer_count": 346,
  "new_gen_gc_count": 132,
  "old_gen_gc_count": 0,
  "frame_build_times": [
    8172,
    6871,
    7436,
    3363,
    8927,
    8911,
    4665,
    7410,
    7802,
    3572,
    6406,
    8403,
    6051,
    7352,
    3889,
    7109,
    6633,
    3746,
    4487,
    8895,
    7110,
    4097,
    6852,
    6169,
    4376,
    4165,
    8227,
    6894,
    2103,
    5446,
    2146,
    8138,
    1055,
    7021,
    3207,
    8583,
    4374,
    7421,
    7395,
    7384,
    6977,
    10125,
    7461,
    9089,
    7219,
    7268,
    6820,
    8244,
    7587,
    6283,
    3963,
    4260,
    3506,
    8516,
    3079,
    5160,
    7283,
    3754,
    7410,
    6612,
    7947,
    9055,
    3450,
    8727,
    6702,
    6292,
    9541,
    8163,
    7684,
    9632,
    11318,
    11237,
    4220,
    7846,
    7506,
    9381,
    3112,
    8911,
    3956,
    2434,
    3710,
    9440,
    8103,
    9265,
    3635,
    2027,
    1123,
    3338,
    4921,
    5000,
    4425,
    4026,
    7021,
    6928,
    7105,
    6617,
    4244,
    3728,
    2721,
    8605,
    3710,
    7561,
    7796,
    8954,
    7459,
    7513,
    7408,
    8819,
    8261,
    8734,
    8491,
    8328,
    9068,
    3936,
    4526,
    4230,
    4731,
    8009,
    6879,
    6702,
    6479,
    8565,
    7655,
    3865,
    3927,
    7214,
    8798,
    2279,
    1435,
    3285,
    3304,
    7216,
    6412,
    3830,
    5022,
    4033,
    7910,
    7825,
    6589,
    5800,
    7563,
    7981,
    8536,
    7437,
    7039,
    8020,
    8255,
    4165,
    8274,
    7493,
    8364,
    8225,
    8251,
    7949,
    6689,
    7934,
    1714,
    10418,
    9467,
    6908,
    8058,
    7208,
    6522,
    8349,
    7995,
    7998,
    7229,
    7814,
    6745,
    7182,
    8065,
    8358,
    8108,
    7803,
    3163,
    2313,
    8767,
    7209,
    7810,
    7308,
    6525,
    7782,
    1538,
    7522,
    2687,
    7009,
    7875,
    6572,
    9266,
    3219,
    2895,
    7679,
    1162,
    7627,
    2636,
    4603,
    7963,
    7612,
    7589,
    7505,
    4025,
    7750,
    8354,
    7453,
    8564,
    2897,
    7727,
    8059,
    7091,
    6806,
    3278,
    10958,
    8030,
    8217,
    7031,
    7706,
    9918,
    5046,
    2312,
    3943,
    4076,
    11541,
    5969,
    7428,
    3612,
    7467,
    7523,
    7399,
    6645,
    8499,
    9081,
    8130,
    8730,
    8091,
    7402,
    3049,
    4702,
    4471,
    7232,
    1047,
    9086,
    3129,
    9176,
    6776,
    7862,
    7414,
    7161,
    3200,
    4813,
    3894,
    8107,
    6994,
    7341,
    8215,
    2220,
    4784,
    7971,
    7967,
    5333,
    8728,
    6471,
    2973,
    7615,
    6890,
    6869,
    6433,
    10118,
    7360,
    6753,
    8164,
    6802,
    6789,
    3422,
    7728,
    7238,
    7642,
    7805,
    3156,
    8784,
    3500,
    4637,
    4016,
    6568,
    8352,
    6619,
    5905,
    1571,
    8609,
    8767,
    6964,
    6412,
    9940,
    7963,
    2134,
    1128,
    8039,
    6009,
    7419,
    6580,
    7760,
    6771,
    7127,
    7061,
    2734,
    8715,
    7029,
    7180,
    6846,
    6093,
    7817,
    8042,
    7366,
    7940,
    6572,
    6153,
    7973,
    8932,
    6991,
    4638,
    7628,
    4257,
    4568,
    9361,
    8623,
    4031,
    4072,
    3823,
    2784,
    8378,
    1916,
    8926,
    2460,
    7591,
    6724,
    3526,
    6544,
    7325,
    7285,
    3914,
    8985,
    6635,
    7456,
    6911,
    4600,
    4593,
    9112
  ],
  "frame_rasterizer_times": [
    9649,
    9742,
    3913,
    10548,
    10252,
    10214,
    8400,
    9001,
    9886,
    9813,
    11552,
    8312,
    5247,
    9525,
    8438,
    8189,
    9242,
    9374,
    8532,
    9093,
    10155,
    7237,
    9112,
    5043,
    8980,
    9139,
    7953,
    7509,
    9093,
    3383,
    6838,
    7229,
    9048,
    8357,
    6094,
    6595,
    6327,
    8242,
    6988,
    9318,
    7723,
    7372,
    9415,
    9656,
    8668,
    9127,
    9521,
    9703,
    9214,
    8217,
    4921,
    6179,
    4734,
    7438,
    7131,
    7643,
    7456,
    7938,
    8628,
    8446,
    8345,
    8492,
    4590,
    8038,
    9292,
    8437,
    8054,
    8458,
    7503,
    9602,
    9900,
    9014,
    10204,
    5193,
    9210,
    9816,
    9078,
    9698,
    8939,
    7946,
    10381,
    6887,
    7290,
    9138,
    7809,
    9047,
    6703,
    7125,
    5212,
    7442,
    4858,
    8521,
    8145,
    5527,
    6171,
    7589,
    7535,
    7918,
    5439,
    9766,
    9185,
    8159,
    8362,
    9993,
    9129,
    8696,
    9059,
    9939,
    9622,
    9051,
    9387,
    10204,
    9763,
    4538,
    10927,
    10547,
    10825,
    6891,
    8259,
    9669,
    10549,
    8194,
    6130,
    7823,
    9436,
    9562,
    8689,
    10750,
    5902,
    8585,
    7484,
    9936,
    6510,
    9643,
    9002,
    9002,
    8888,
    9515,
    7833,
    9305,
    8827,
    9029,
    9828,
    8933,
    9951,
    10129,
    10770,
    11208,
    9842,
    7382,
    7838,
    10264,
    10021,
    10447,
    9520,
    4257,
    7938,
    10728,
    7060,
    6068,
    10245,
    8493,
    10305,
    9483,
    6313,
    7485,
    11664,
    10885,
    10829,
    10846,
    10265,
    10998,
    11371,
    11699,
    11538,
    11059,
    9901,
    7138,
    11748,
    11015,
    10803,
    8950,
    8289,
    6350,
    7604,
    10008,
    8224,
    8525,
    8804,
    9284,
    9669,
    6064,
    7758,
    10446,
    9498,
    10342,
    9137,
    8330,
    7750,
    9688,
    9563,
    9304,
    9281,
    9997,
    11142,
    10182,
    8129,
    8782,
    8675,
    8166,
    9510,
    7319,
    7166,
    9719,
    10313,
    8302,
    6633,
    9800,
    7241,
    6154,
    8961,
    10557,
    10844,
    10390,
    9349,
    7407,
    10239,
    8009,
    9342,
    10767,
    10257,
    10715,
    10890,
    9670,
    9826,
    10755,
    10651,
    10608,
    7090,
    6125,
    10988,
    6670,
    8358,
    10454,
    9905,
    8754,
    9320,
    8897,
    10536,
    10767,
    9355,
    9622,
    9700,
    9784,
    8298,
    7096,
    7869,
    6651,
    6775,
    5902,
    7403,
    6483,
    8291,
    8812,
    7341,
    7646,
    6451,
    10057,
    3904,
    10200,
    9852,
    7793,
    6679,
    8895,
    9524,
    9127,
    9130,
    7621,
    8544,
    8447,
    4962,
    9535,
    7388,
    9085,
    9051,
    9522,
    8351,
    11521,
    8964,
    6020,
    9162,
    8222,
    8361,
    4825,
    8528,
    10728,
    5390,
    4321,
    4858,
    3895,
    9518,
    8430,
    9284,
    9465,
    8953,
    8643,
    8437,
    6918,
    6688,
    7732,
    8368,
    6437,
    7947,
    7706,
    8395,
    7017,
    7763,
    7961,
    8823,
    5896,
    6344,
    7953,
    8517,
    9327,
    9573,
    8227,
    9752,
    9123,
    7829,
    6003,
    8684,
    9357,
    9788,
    9093,
    6938,
    5731,
    9243,
    8729,
    7305,
    7886,
    8717,
    5229,
    8778,
    9014,
    9423,
    8535
  ],
  "frame_begin_times": [
    0,
    16752,
    33355,
    51859,
    67876,
    83337,
    100250,
    117077,
    133063,
    149812,
    166945,
    183403,
    200329,
    219466,
    233268,
    249965,
    266535,
    283174,
    299899,
    316617,
    333052,
    349528,
    367084,
    382910,
    399937,
    416646,
    433498,
    452299,
    466119,
    484384,
    500355,
    517021,
    534806,
    550394,
    567876,
    583433,
    599739,
    616386,
    633154,
    649865,
    666370,
    683368,
    699456,
    716272,
    733097,
    749843,
    766155,
    783268,
    799758,
    815956,
    835130,
    850442,
    867882,
    883903,
    901628,
    917435,
    933255,
    950781,
    966398,
    982816,
    999394,
    1016603,
    1032830,
    1049988,
    1066439,
    1082832,
    1099426,
    1116420,
    1133140,
    1149853,
    1166517,
    1183230,
    1200147,
    1216278,
    1232705,
    1249781,
    1266256,
    1283641,
    1299647,
    1316525,
    1335499,
    1350487,
    1365989,
    1383251,
    1399433,
    1417896,
    1435037,
    1449693,
    1466522,
    1482988,
    1499760,
    1515698,
    1532746,
    1549120,
    1565816,
    1582397,
    1599156,
    1615581,
    1634102,
    1649139,
    1665614,
    1682825,
    1699037,
    1715997,
    1732484,
    1749409,
    1765540,
    1782310,
    1799068,
    1815752,
    1832219,
    1849457,
    1866050,
    1884338,
    1899657,
    1915921,
    1932003,
    1948858,
    1965461,
    1982467,
    1999161,
    2015593,
    2032065,
    2048672,
    2065677,
    2084794,
    2099500,
    2117660,
    2134955,
    2149227,
    2165610,
    2182288,
    2198846,
    2217362,
    2232327,
    2248647,
    2265439,
    2282203,
    2299040,
    2315024,
    2331892,
    2348895,
    2365497,
    2381944,
    2398868,
    2415305,
    2432014,
    2449940,
    2465115,
    2482004,
    2499072,
    2515160,
    2531759,
    2548405,
    2565076,
    2581686,
    2598209,
    2615577,
    2632214,
    2648530,
    2664876,
    2682323,
    2698399,
    2715345,
    2731801,
    2748240,
    2765187,
    2781512,
    2798387,
    2815244,
    2831516,
    2848388,
    2864954,
    2881747,
    2899944,
    2917132,
    2932248,
    2948489,
    2965314,
    2981570,
    2998332,
    3016797,
    3031352,
    3049133,
    3064722,
    3081859,
    3098296,
    3115600,
    3131984,
    3147960,
    3165035,
    3182519,
    3199806,
    3215665,
    3233051,
    3248484,
    3264929,
    3281699,
    3298325,
    3314988,
    3331564,
    3348746,
    3364854,
    3381626,
    3398294,
    3416548,
    3431966,
    3448021,
    3465019,
    3481302,
    3500315,
    3515282,
    3531766,
    3548184,
    3564427,
    3581766,
    3599763,
    3614748,
    3633120,
    3648800,
    3666699,
    3681859,
    3698788,
    3715063,
    3731294,
    3748160,
    3764391,
    3781587,
    3797702,
    3814856,
    3831668,
    3847896,
    3864626,
    3881313,
    3897657,
    3916272,
    3931544,
    3947836,
    3964818,
    3982805,
    3998532,
    4016063,
    4031757,
    4047871,
    4064851,
    4081443,
    4098081,
    4116115,
    4131682,
    4147599,
    4165053,
    4181072,
    4198410,
    4214456,
    4233662,
    4248125,
    4264774,
    4281138,
    4301291,
    4314805,
    4331361,
    4349605,
    4364309,
    4381549,
    4397973,
    4414332,
    4431189,
    4447997,
    4464572,
    4480911,
    4497911,
    4514969,
    4531626,
    4548343,
    4564476,
    4580870,
    4597667,
    4616096,
    4631668,
    4649109,
    4664123,
    4681157,
    4697902,
    4714045,
    4730440,
    4747494,
    4764874,
    4781361,
    4797248,
    4814176,
    4830764,
    4847496,
    4864932,
    4882000,
    4898978,
    4914889,
    4930935,
    4947492,
    4963930,
    4980863,
    4997172,
    5014008,
    5030464,
    5048815,
    5064769,
    5080389,
    5097573,
    5114408,
    5130436,
    5147121,
    5164552,
    5180266,
    5197644,
    5214097,
    5232052,
    5247194,
    5264010,
    5280457,
    5297314,
    5313536,
    5330249,
    5347274,
    5364013,
    5379987,
    5399054,
    5415186,
    5430713,
    5448969,
    5463993,
    5481748,
    5497609,
    5516911,
    5530825,
    5546978,
    5563597,
    5580623,
    5597246,
    5613360,
    5629914,
    5647131,
    5663526,
    5680527,
    5696836,
    5713632,
    5730394,
    5747467
  ],
  "frame_rasterizer_begin_times": [
    0,
    16535,
    31662,
    49196,
    63786,
    85095,
    100307,
    113018,
    132582,
    148963,
    161486,
    181549,
    201646,
    214806,
    234751,
    245391,
    265530,
    281232,
    295123,
    312749,
    333597,
    348596,
    361842,
    382135,
    397437,
    412538,
    429051,
    450156,
    469175,
    478291,
    498399,
    512567,
    533858,
    544260,
    565813,
    579276,
    600090,
    612523,
    631908,
    648618,
    665318,
    681398,
    701553,
    715317,
    733436,
    748659,
    765696,
    781079,
    799623,
    815777,
    830613,
    847718,
    863140,
    879563,
    900689,
    912873,
    930625,
    946775,
    962889,
    981901,
    997701,
    1015408,
    1034144,
    1044605,
    1066767,
    1081412,
    1097525,
    1117498,
    1134271,
    1148943,
    1167538,
    1186062,
    1202531,
    1212904,
    1232348,
    1248447,
    1267273,
    1277589,
    1300879,
    1312453,
    1327277,
    1347457,
    1368517,
    1382154,
    1400616,
    1411216,
    1428193,
    1444375,
    1461602,
    1481091,
    1498025,
    1512359,
    1527786,
    1547884,
    1564268,
    1581034,
    1597242,
    1611619,
    1627460,
    1645078,
    1665635,
    1677383,
    1698835,
    1714896,
    1734870,
    1748151,
    1765153,
    1780901,
    1799217,
    1815552,
    1832727,
    1848912,
    1865829,
    1883281,
    1896637,
    1912455,
    1928424,
    1944989,
    1964930,
    1980442,
    1997770,
    2013820,
    2032249,
    2047773,
    2060986,
    2078060,
    2100109,
    2116382,
    2128067,
    2144644,
    2160601,
    2177458,
    2197606,
    2213168,
    2229430,
    2245410,
    2260968,
    2281459,
    2298130,
    2313737,
    2329021,
    2347668,
    2365160,
    2382144,
    2397575,
    2414018,
    2431555,
    2448529,
    2462255,
    2481870,
    2497708,
    2515645,
    2531554,
    2548118,
    2564434,
    2579913,
    2597688,
    2608161,
    2634439,
    2649806,
    2663511,
    2680837,
    2697645,
    2713248,
    2731806,
    2748023,
    2764343,
    2780632,
    2797444,
    2813193,
    2830766,
    2847780,
    2864851,
    2881163,
    2897655,
    2911248,
    2927595,
    2949424,
    2964092,
    2981511,
    2997288,
    3013146,
    3034455,
    3042797,
    3064759,
    3075601,
    3097096,
    3114231,
    3130276,
    3148811,
    3159416,
    3177834,
    3198263,
    3209396,
    3231550,
    3243949,
    3261115,
    3280992,
    3297411,
    3314095,
    3330580,
    3343818,
    3364714,
    3381303,
    3397194,
    3414933,
    3427637,
    3447930,
    3464189,
    3480102,
    3496162,
    3511743,
    3534309,
    3547868,
    3564833,
    3579491,
    3597523,
    3617770,
    3627949,
    3643586,
    3661201,
    3679205,
    3701794,
    3712842,
    3730535,
    3742981,
    3763918,
    3780013,
    3797094,
    3812453,
    3831460,
    3848693,
    3864091,
    3881365,
    3897467,
    3913016,
    3927842,
    3944358,
    3960359,
    3980152,
    3991989,
    4015663,
    4027518,
    4049021,
    4062724,
    4080921,
    4096893,
    4113310,
    4127808,
    4144822,
    4160244,
    4181411,
    4196254,
    4213852,
    4230745,
    4244638,
    4261026,
    4281153,
    4298737,
    4316421,
    4333475,
    4346167,
    4360789,
    4379938,
    4396794,
    4412945,
    4428855,
    4449757,
    4463477,
    4479520,
    4497381,
    4512817,
    4530216,
    4543490,
    4564388,
    4579980,
    4596760,
    4613535,
    4627807,
    4648805,
    4660777,
    4677076,
    4693438,
    4712954,
    4730821,
    4745494,
    4761592,
    4774605,
    4798095,
    4815694,
    4829593,
    4845271,
    4865983,
    4881007,
    4892311,
    4908257,
    4931757,
    4945264,
    4963141,
    4978864,
    4997026,
    5012169,
    5029646,
    5045770,
    5060128,
    5083315,
    5095502,
    5112840,
    5129314,
    5144720,
    5162590,
    5180871,
    5195722,
    5215542,
    5229107,
    5246573,
    5263408,
    5281409,
    5295709,
    5310407,
    5329274,
    5342868,
    5360062,
    5381671,
    5396451,
    5411369,
    5427716,
    5442975,
    5459938,
    5480719,
    5492088,
    5514864,
    5527768,
    5546531,
    5561910,
    5575448,
    5595520,
    5613036,
    5628701,
    5642057,
    5664517,
    5678380,
    5696299,
    5711958,
    5726754,
    5744874
  ],
  "average_vsync_transitions_missed": 1.0,
  "90th_percentile_vsync_transitions_missed": 1.0,
  "99th_percentile_vsync_transitions_missed": 1.0,
  "average_vsync_frame_lag": 0.0,
  "90th_percentile_vsync_frame_lag": 0.0,
  "99th_percentile_vsync_frame_lag": 0.0,
  "average_layer_cache_count": 0.0,
  "90th_percentile_layer_cache_count": 0.0,
  "99th_percentile_layer_cache_count": 0.0,
  "average_frame_request_pending_latency": 16363.08695652174,
  "90th_percentile_frame_request_pending_latency": 17393.0,
  "99th_percentile_frame_request_pending_latency": 18931.0,
  "worst_layer_cache_count": 0.0,
  "average_layer_cache_memory": 0.0,
  "90th_percentile_layer_cache_memory": 0.0,
  "99th_percentile_layer_cache_memory": 0.0,
  "worst_layer_cache_memory": 0.0,
  "average_picture_cache_count": 0.0,
  "90th_percentile_picture_cache_count": 0.0,
  "99th_percentile_picture_cache_count": 0.0,
  "worst_picture_cache_count": 0.0,
  "average_picture_cache_memory": 0.0,
  "90th_percentile_picture_cache_memory": 0.0,
  "99th_percentile_picture_cache_memory": 0.0,
  "worst_picture_cache_memory": 0.0,
  "total_ui_gc_time": 149.70600000000005,
  "30hz_frame_percentage": 0.0,
  "60hz_frame_percentage": 100.0,
  "80hz_frame_percentage": 0.0,
  "90hz_frame_percentage": 0.0,
  "120hz_frame_percentage": 0.0,
  "illegal_refresh_rate_frame_count": 0,
  "average_gpu_frame_time": 0.0,
  "90th_percentile_gpu_frame_time": 0.0,
  "99th_percentile_gpu_frame_time": 0.0,
  "worst_gpu_frame_time": 0.0,
  "average_gpu_memory_mb": 102.89843799999984,
  "90th_percentile_gpu_memory_mb": 102.898438,
  "99th_percentile_gpu_memory_mb": 102.898438,
  "worst_gpu_memory_mb": 102.898438
}

@flar
Copy link
Contributor

flar commented Nov 18, 2025

I'm guessing we'd see more improvements if the benchmark only measured the round cap case. Did you try hard-coding round caps in your benchmark code and testing before/after to see the isolated improvement?

@b-luk
Copy link
Contributor Author

b-luk commented Nov 18, 2025

Here are results after hard-coding the benchmark test to use round caps for every arc.

iPhone 12

before after change
frame build time avg 1.124 1.183 5.26%
90th pct 1.710 1.732 1.29%
99th pct 1.879 1.899 1.06%
worst 3.145 2.001 -36.38%
rasterizer build time avg 5.517 4.745 -13.99%
90th pct 11.640 6.303 -45.85%
99th pct 16.889 15.317 -9.31%
worst 20.045 18.401 -8.20%
gpu frame time avg 10.800 10.509 -2.69%
90th pct 15.625 15.625 0.00%
99th pct 15.625 15.625 0.00%
worst 23.438 15.625 -33.33%

Pixel 8

before after change
frame build time avg 6.403 6.094 -4.82%
90th pct 9.103 8.307 -8.74%
99th pct 10.995 10.187 -7.35%
worst 11.335 11.436 0.89%
rasterizer build time avg 9.712 8.766 -9.74%
90th pct 11.665 10.662 -8.60%
99th pct 13.140 12.009 -8.61%
worst 88.234 13.416 -84.79%

github-merge-queue bot pushed a commit that referenced this pull request Nov 21, 2025
Adding a benchmark so the impact of #178269 can be measured.


![](https://github.com/user-attachments/assets/fea307a7-c2d0-4058-ac5f-4e195b5bec23)

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x]  I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
okorohelijah pushed a commit to okorohelijah/flutter that referenced this pull request Nov 21, 2025
Adding a benchmark so the impact of flutter#178269 can be measured.


![](https://github.com/user-attachments/assets/fea307a7-c2d0-4058-ac5f-4e195b5bec23)

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x]  I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
@flutter-dashboard
Copy link

Golden file changes are available for triage from new commit, Click here to view.

For more guidance, visit Writing a golden file test for package:flutter.

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.

Changes reported for pull request #178269 at sha 74cdb0c

@flar
Copy link
Contributor

flar commented Nov 21, 2025

Let's give it a little time to get a dozen or 2 entries in the database before we push this.

@flutter-dashboard
Copy link

It looks like this pull request may not have tests. Please make sure to add tests or get an explicit test exemption before merging.

If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix?

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. If you believe this PR qualifies for a test exemption, contact "@test-exemption-reviewer" in the #hackers channel in Discord (don't just cc them here, they won't see it!). The test exemption team is a small volunteer group, so all reviewers should feel empowered to ask for tests, without delegating that responsibility entirely to the test exemption group.

1 similar comment
@flutter-dashboard
Copy link

It looks like this pull request may not have tests. Please make sure to add tests or get an explicit test exemption before merging.

If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix?

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. If you believe this PR qualifies for a test exemption, contact "@test-exemption-reviewer" in the #hackers channel in Discord (don't just cc them here, they won't see it!). The test exemption team is a small volunteer group, so all reviewers should feel empowered to ask for tests, without delegating that responsibility entirely to the test exemption group.

Copy link
Contributor

@flar flar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@b-luk b-luk added the autosubmit Merge PR when tree becomes green via auto submit App label Dec 1, 2025
@auto-submit auto-submit bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Dec 1, 2025
@auto-submit
Copy link
Contributor

auto-submit bot commented Dec 1, 2025

autosubmit label was removed for flutter/flutter/178269, because The base commit of the PR is older than 7 days and can not be merged. Please merge the latest changes from the main into this branch and resubmit the PR.

@b-luk b-luk added the autosubmit Merge PR when tree becomes green via auto submit App label Dec 1, 2025
@auto-submit auto-submit bot added this pull request to the merge queue Dec 1, 2025
Merged via the queue into flutter:master with commit 8887819 Dec 1, 2025
181 of 182 checks passed
@flutter-dashboard flutter-dashboard bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Dec 1, 2025
@b-luk b-luk deleted the arcstrokeroundcaps branch December 2, 2025 00:28
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 2, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 2, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 2, 2025
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Dec 2, 2025
flutter/flutter@05d6005...5545bb3

2025-12-02 [email protected] Roll Skia from 4371ed0ce49e to 45337c4e919d (1 revision) (flutter/flutter#179342)
2025-12-02 [email protected] Roll Fuchsia Linux SDK from sTk6OB7a4yudbfdZg... to l0DvmZrMHlF12frrX... (flutter/flutter#179338)
2025-12-02 [email protected] Unfocus search anchor bar when the view is closed (flutter/flutter#178910)
2025-12-02 [email protected] Directly generate a Mach-O dynamic library using gen_snapshot. [reland] (flutter/flutter#174870)
2025-12-02 [email protected] Roll Skia from 1fc59bf5cbb1 to 4371ed0ce49e (3 revisions) (flutter/flutter#179326)
2025-12-02 [email protected] [win32] Replace threadpool timer with custom background thread timer (flutter/flutter#179249)
2025-12-02 [email protected] Roll Skia from 61257a1036fb to 1fc59bf5cbb1 (1 revision) (flutter/flutter#179321)
2025-12-02 [email protected] Roll Skia from ef52cf952211 to 61257a1036fb (2 revisions) (flutter/flutter#179319)
2025-12-02 [email protected] Roll Skia from 8887653a773e to ef52cf952211 (1 revision) (flutter/flutter#179316)
2025-12-02 [email protected] Roll pub packages (flutter/flutter#179313)
2025-12-02 [email protected] Update customer tests (flutter/flutter#179309)
2025-12-01 [email protected] Marks Linux_pixel_7pro new_gallery__transition_perf to be unflaky (flutter/flutter#176339)
2025-12-01 [email protected] Fix typo (flutter/flutter#179200)
2025-12-01 49699333+dependabot[bot]@users.noreply.github.com Bump actions/checkout from 5.0.1 to 6.0.0 in the all-github-actions group (flutter/flutter#179308)
2025-12-01 [email protected] Roll Dart SDK from c54108eeb2c1 to eb743a1d4ade (1 revision) (flutter/flutter#179304)
2025-12-01 [email protected] Roll pub packages (flutter/flutter#179280)
2025-12-01 [email protected] Roll Skia from 68cc3257e734 to 8887653a773e (4 revisions) (flutter/flutter#179302)
2025-12-01 [email protected] Support round caps for the fast arc stroke generator (flutter/flutter#178269)
2025-12-01 [email protected] Fix for PR #174374 - Fix - TalkBack does not announce list information (flutter/flutter#177622)
2025-12-01 [email protected] Small cleanup in `‎AccessibilityBridge.java‎` (flutter/flutter#179226)
2025-12-01 [email protected] Roll Skia from 925c311f4b37 to 68cc3257e734 (44 revisions) (flutter/flutter#179294)
2025-12-01 [email protected] [ Widget Preview ] Ignore changes under `ios/.symlinks` (flutter/flutter#179290)
2025-12-01 [email protected] Delete unecessary lockfile (flutter/flutter#179052)
2025-12-01 [email protected] Resolving and piping the view ID  through the WidgetController and the TestPointer so that clicks wind up on the right view (flutter/flutter#178941)
2025-12-01 [email protected] Fix link specified as plain text `FlutterApplication.java‎` (flutter/flutter#178573)
2025-12-01 [email protected] Update some comments to reflect theme normalization (flutter/flutter#179013)
2025-12-01 [email protected] Roll Dart SDK from 51fe8cd01fbe to c54108eeb2c1 (1 revision) (flutter/flutter#179267)
2025-12-01 [email protected] Explicitly use FreeType font scanner with Fuchsia (flutter/flutter#179055)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC [email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
mboetger pushed a commit to mboetger/flutter that referenced this pull request Dec 2, 2025
Adding a benchmark so the impact of flutter#178269 can be measured.


![](https://github.com/user-attachments/assets/fea307a7-c2d0-4058-ac5f-4e195b5bec23)

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x]  I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
mboetger pushed a commit to mboetger/flutter that referenced this pull request Dec 2, 2025
<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

Support round caps for the fast arc stroke generator.

Factors out `Tessellator::GenerateRoundCapLine`'s cap generation logic
into a new `Tessellator::GenerateRoundCap` method to be shared by
`Tessellator::GenerateRoundCapLine` and
`Tessellator::GenerateStrokedArc`.

Fixes flutter#169400

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
reidbaker pushed a commit to AbdeMohlbi/flutter that referenced this pull request Dec 10, 2025
Adding a benchmark so the impact of flutter#178269 can be measured.


![](https://github.com/user-attachments/assets/fea307a7-c2d0-4058-ac5f-4e195b5bec23)

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x]  I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
reidbaker pushed a commit to AbdeMohlbi/flutter that referenced this pull request Dec 10, 2025
<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

Support round caps for the fast arc stroke generator.

Factors out `Tessellator::GenerateRoundCapLine`'s cap generation logic
into a new `Tessellator::GenerateRoundCap` method to be shared by
`Tessellator::GenerateRoundCapLine` and
`Tessellator::GenerateStrokedArc`.

Fixes flutter#169400

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

e: impeller Impeller rendering backend issues and features requests engine flutter/engine related. See also e: labels. will affect goldens Changes to golden files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Impeller] Fast arc stroke generator does not support round caps

2 participants