-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Description
Enabling SUPPORT_FRACTIONAL_TRANSLATION removes the physical pixel snap from engine layers. It is off by default due to mobile performance issues, specifically on iOS32 bit but potentially on newer devices as well. See also #56722
Unfortunately there are two major drawbacks of having this disabled, namely:
-
The physical pixel snap is much more noticeable on platforms that have lower DPRs. On desktop, close to 1.0 is common and that causes issues such as RenderAnimatedOpacityMixin causes child pixel snapping when fully opaque #71008.
-
The physical pixel snap causes flutter_tester to render nearly identical UI differently based on whether or not an engine composited layer is updated. This causes problems rolling into google3 due to the large number of golden tests, for example [framework] remove usage and deprecate physical model layer #102274
We should opt desktop into this define. This will require us to separately roll an engine variant with this enabled that would allow us to gradually opt-in google3.
Migration process:
-
Build a new engine host variant (linux is the only variant used for golden testing in g3) and roll that into google3. This variant will have SUPPORT_FRACTIONAL_TRANSLATION enabled and no raster cache in the tester.
-
Run a global presubmit in g3 to determine the impact of switching to the new tester. If the number of diffs is small, do this as an atomic change. If the number of diffs is large, then we'll perform a project by project opt-in, and finally switch the default to the new tester.
-
Once this has landed, we update the engine build rules so that all host variants are build with SUPPORT_FRACTIONAL_TRANSLATION. After this rolls into g3, we can switch the build rules back to the previous tester variant in a non-breaking way - since it should have the same rendering output as the new tester.
-
Finally, we delete the new engine variant.