Basic framework of the UI toolkit variable refresh rate project

The original CL was reverted due to a performance issue - ag/24826019

In this CL, I use a read-only flag to avoid cauding the performance
issue. See Patchset 2 and 3 for detiails.

Atest UiBenchMicrobenchmark / uibench-dialoglist / uibench-invalidate are passed locally

This CL includes two major changes for variable refresh rate (VRR) project:

1. Migrated the TouchBoost logic from SurfaceFlinger to
ViewRootImpl. When users touch (MotionEvent.ACTION_DOWN) the screen or press and move (MotionEvent.ACTION_MOVE), we increase the frame rate / refresh rate to the maximum value to offer users a smooth user experience. The frame rate will then be lowered after a certain period.

2. Built the frame rate voting mechanism. This enables Views to vote for
their preferred frame rate. Those votes will be aggregated in
ViewRootImpl to determine a final one. The preferred frame rate of a
View is determined based on its size.

The implementation is gated by a Trunk Stable flag.

Bug: 278731105
Bug: 278731091
Bug: 293505054
Bug: 296459487
Bug: 293513140
Bug: 293513467
Test: atest ViewRootImplTest / ViewTest / UiBenchMicrobenchmark
Change-Id: If6a342eb137e0f36834d2b439997e752685f7ee2
5 files changed