1
0
Fork 0
android_external_drm_hwcomp.../drm
Gil Dekel 3b2050b7f2 drm_hwcomposer: Re-enable MRR on AL devices
Configuration groups for the Multiple Refresh Rate (MRR) feature support
is currently disabled in DRM HWComposer. This is because it is
insufficient to group modes solely based on their active region size.

The primary reasons for this insufficiency are:
1. drm-hwc clients may assume they can seamlessly switch between
   configurations within the same group to support variable refresh
   rates.
2. Not all System-on-a-Chip (SoC) architectures support seamless mode
   transitions.
3. For SoCs that do support seamless switching, transitions often depend
   on other hardware-specific properties like matching blanking periods.
4. A fallback to a non-seamless (blocking) modeset is unacceptable for
   internal displays if a seamless transition fails, as this causes
   flickering. The current framework does not handle such failures
   gracefully.

To Resolve these challenges and re-enable seamless Multiple Refresh-Rate
transitions on internal panels, we add logic to validate all configs
against the preferred initial active config. This validation preforms a
seamless modeset test on each available config against the config that
was set during the display initialization. Configs that fail the
screening are assigned new group IDs.

Caveats:
1. Currently, this is only implemented for internal panels. External
   display seamless transition between variable refresh rates is not
   support. However this work can be extended to support seamless
   transitions on external displays as well.
2. Grouping is only preformed for the preffered/active config at the
   time of display init, and is valid only for the duration of the
   current full modeset commit. No other groups are not created (since
   they cannot be validated), and any new full commits will not honor
   the guarantee provided by the check. This work can be extended to
   refresh and validate all configs within the same group ID of any
   incoming full modeset commit.

Change-Id: Ie2661e74bd3ff704b40c8c7ef50c56e604e5e8df
Signed-off-by: Gil Dekel <gildekel@google.com>
2025-07-29 16:14:12 -04:00
..
DrmAtomicStateManager.cpp drm_hwcomposer: Re-enable MRR on AL devices 2025-07-29 16:14:12 -04:00
DrmAtomicStateManager.h drm_hwcomposer: Re-enable MRR on AL devices 2025-07-29 16:14:12 -04:00
DrmConnector.cpp drm_hwcomposer: Set min bpc on modeset 2025-05-20 13:36:18 -04:00
DrmConnector.h drm_hwcomposer: Set min bpc on modeset 2025-05-20 13:36:18 -04:00
DrmCrtc.cpp drm_hwcomposer: Replace LOG_TAG with drmhwc 2024-07-19 17:42:41 +00:00
DrmCrtc.h drm_hwcomposer: Add support for color transform matrix 2023-01-18 17:20:01 +02:00
DrmDevice.cpp drm_hwcomposer: Refresh connectors on every Uevent to add MST connectors 2025-05-15 17:25:58 +00:00
DrmDevice.h drm_hwcomposer: Refresh connectors on every Uevent to add MST connectors 2025-05-15 17:25:58 +00:00
DrmDisplayPipeline.cpp drm_hwcomposer: Implement display readback using writeback connectors 2025-04-11 17:33:23 -04:00
DrmDisplayPipeline.h drm_hwcomposer: Implement display readback using writeback connectors 2025-04-11 17:33:23 -04:00
DrmEncoder.cpp drm_hwcomposer: Replace LOG_TAG with drmhwc 2024-07-19 17:42:41 +00:00
DrmEncoder.h drm_hwcomposer: Use pragma once instead of include guards 2022-12-10 20:37:34 +02:00
DrmFbImporter.cpp drm_hwcomposer: Fix bug where DrmDevice can be released early 2024-08-30 22:15:14 +00:00
DrmFbImporter.h drm_hwcomposer: Fix bug where DrmDevice can be released early 2024-08-30 22:15:14 +00:00
DrmHwc.cpp drm_hwcomposer: Remove sleep in unplug handling 2025-07-16 17:49:31 -06:00
DrmHwc.h drm_hwcomposer: Move common files out of hwc2_device directory 2025-05-23 09:01:32 -06:00
DrmMode.cpp drm_hwcomposer: Add DrmMode::SameSize 2025-02-07 12:20:29 -07:00
DrmMode.h drm_hwcomposer: Add DrmMode::SameSize 2025-02-07 12:20:29 -07:00
DrmPlane.cpp drm_hwcomposer: Remove cursor buffor validity check 2025-06-20 15:43:33 +00:00
DrmPlane.h drm_hwcomposer: Remove cursor buffor validity check 2025-06-20 15:43:33 +00:00
DrmProperty.cpp drm_hwcomposer: Add blob support to DrmProperty 2025-02-25 14:50:11 +00:00
DrmProperty.h drm_hwcomposer: Fix log warnings in DrmProprty::GetBlobData 2025-02-27 14:16:37 +00:00
DrmUnique.h drm_hwcomposer: Use pragma once instead of include guards 2022-12-10 20:37:34 +02:00
meson.build drm_hwcomposer: Extract DrmHwc abstract base class 2024-08-12 12:27:10 -06:00
ResourceManager.cpp drm_hwcomposer: Move device path to Properties 2025-06-12 01:51:29 +00:00
ResourceManager.h drm_hwcomposer: Move GetCtm to Properties 2025-06-12 01:51:29 +00:00
UEventListener.cpp drm_hwcomposer: Join UEventListener thread on exit 2025-07-16 17:49:31 -06:00
UEventListener.h drm_hwcomposer: Join UEventListener thread on exit 2025-07-16 17:49:31 -06:00
VSyncWorker.cpp drm_hwcomposer: Use android-base/thread_annotations.h 2025-06-12 01:39:23 +00:00
VSyncWorker.h drm_hwcomposer: Use android-base/thread_annotations.h 2025-06-12 01:39:23 +00:00