SF: Don't bump to PERFORMANCE refresh rate with infrequent updates
Testing scenario: 1. Set brightness around 50%-55%, set dark theme. 2. Open Chrome. 3. Click search bar. 4. Can see the cursor show up. Notice the flickering of the screen. Explanation: Kernel idle timer detects inactivity after 100ms, and turns the refresh rate to 60Hz. When a cursor update happens (every 500ms), SF receives a new frame, notifies kernel, the refresh rate bumps to 90Hz. After 100ms the kernel again decreases the refresh rate to 60Hz. Desired goals: Stop the flickering (eg. changing between 60-90Hz too often). Continue having low battery impact. Solution in this AG: Add logic to SF to detect infrequent updates (for all layers). Description of the algorithm: 1) Store the timestamp of the last two buffers. 2) If the first buffer is older than 250 ms, detect inactivity, go into DEFAULT refresh rate. 3) EXIT: on touch event, layer requests 2 or more frames in less than 250ms. NOTE: if the application is explicitly requesting 90Hz, SF does not override that. Idle kernel still kicks in, and the flickering happens. tested on Chrome v74 Beta, and messaging app. Test: manual, b/135009095 Bug: 135718869 Change-Id: I72d8cd48b3ec900989afcf0fab1cdc3046b87274 (cherry picked from commit ad083c40) Merged-In: I72d8cd48b3ec900989afcf0fab1cdc3046b87274
Loading
Please register or sign in to comment