-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Description
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.
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