Skip to content

[Impeller] Evaluate switching Android page transition from cached version. #136510

@jonahwilliams

Description

@jonahwilliams

In #106621 , I switched the implementation of the default page transition to use a cached implementation. This allowed flutter to hit frame rate targets in our benchmarks at the cost of losing animations during the transition. Arguably we didn't have much animation anyway as it ran at ~15fps on a Pixel 6 at the time. With the Impeller backend we have more levers to turn, and so we should re-evaluate whether or not the cached transition is the best approach.

Currently the Impeller version renders slower than the Skia version at least on CPU time. GPU utilization isn't tracked in the Skia backend and is blocked on #136493

From investigating so far, we have a few leads: 1) allocations of intermediate textures, because these are changing size the cache is not effective 2) offscreen MSAA is incredibly expensive at least on ARM devices. Some intermediate investigations might involve investigating if we can make the texture cache more flexible and/or disable offscreen MSAA for the part of the page transition that gets stretched. This could either be done via heuristics or via a new configuration option on the image filter itself.

The benchmark tracking this is at: https://flutter-flutter-perf.skia.org/e/?queries=device_type%3DPixel_7_Pro%26sub_result%3D90th_percentile_frame_rasterizer_time_millis%26sub_result%3D99th_percentile_frame_rasterizer_time_millis%26sub_result%3Daverage_frame_rasterizer_time_millis%26test%3Dnew_gallery_impeller_old_zoom__transition_perf%26test%3Dnew_gallery_impeller__transition_perf

Open Questions:

  • Can we achieve reasonable performance on high end devices?
  • Should we have a mechanism to disable this transition or fall back to the cached version on low spec devices?

Note:

Impeller also has some rendering bugs: #136507

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Important issues not at the top of the work liste: impellerImpeller rendering backend issues and features requeststeam-engineOwned by Engine teamtriaged-engineTriaged by Engine team

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions