OSDN Git Service

drm_hwcomposer: Rework display modes handling
authorRoman Stratiienko <roman.o.stratiienko@globallogic.com>
Tue, 16 Nov 2021 16:23:18 +0000 (18:23 +0200)
committerRoman Stratiienko <roman.o.stratiienko@globallogic.com>
Thu, 2 Dec 2021 12:35:08 +0000 (14:35 +0200)
commita148f21336adb103964fea1d2cacc3f408715c4b
treecb25cc6537424661b03473469608760abc3e82a5
parent0ee8f58b93a037c5a54bb0a05c12228845a70a76
drm_hwcomposer: Rework display modes handling

Android likes to adapt display output frequency to match window context
frequency. Unfortunately platform code has some limitations, therefore
hwcomposer HAL should be careful with reporting supported display modes.

Known platform limitations:
1: Framework doesn't distinguish between interlaced/progressive modes.
2. Framework will not switch display frequency in case margin in FPS rate
   is very small (<1FPS or so). Not a big issue, but that is causing
   some CTS tests to fail.

In addition to that VRR technology (or seamless mode switching) require
hwcomposer to group modes which tells the framework that seamless mode
configuration change is supported within a group of display modes.

By this commit do the following:
1. Group modes by the resolution:
   E.g.

    Group 1:
    1024x768i@60
    1024x768i@90
    1024x768@50
    1024x768@50.1

    Group 2:
    1920x1080@60
    1920x1080@24.3
    1920x1080i@60
    1920x1080i@120

2. Disable modes in a way that each group keeps only interlaced or proressive
   modes enabled. In case KMS reported preferred mode is interlaced - prefer
   interlaced for the whole group, otherwise prefer progressive.

3. Disable mode in case different mode in the same group has similar frequency
   with delta less than 1FPS.

4. Report only modes which remain enabled to the framework.

Test: atest CtsGraphicsTestCases

Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
DrmHwcTwo.cpp
DrmHwcTwo.h
drm/DrmConnector.cpp
drm/DrmConnector.h
drm/DrmMode.cpp
drm/DrmMode.h