diff options
| author | 2019-06-26 16:28:08 -0700 | |
|---|---|---|
| committer | 2019-09-03 19:25:02 -0700 | |
| commit | 9f10eb9cb8300c6cd5965078c5a767dd077e0707 (patch) | |
| tree | 4d056499af4abca8cb1979ee0ced5916f3ab2f98 /vulkan/libvulkan/api.cpp | |
| parent | 32e89bc58c6b6f2ac5a802a9abcb24ea8e4489b7 (diff) | |
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 ad083c40b7593e0cc9283588ac710ddf2124337a)
Merged-In: I72d8cd48b3ec900989afcf0fab1cdc3046b87274
Diffstat (limited to 'vulkan/libvulkan/api.cpp')
0 files changed, 0 insertions, 0 deletions