diff options
author | Midas Chien <midaschieh@google.com> | 2022-10-17 11:24:00 +0800 |
---|---|---|
committer | Midas Chien <midaschieh@google.com> | 2022-10-25 00:18:57 +0800 |
commit | 2d9696248e6c4ecc723014af39fce5aa8b0cf6d6 (patch) | |
tree | 798f4e01232397991394f5c29dab68b9d1520566 /libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp | |
parent | e5a1c3940d5dd647d5784b459e076cb7fc93a5bf (diff) |
libhwc2.1: only replace desired mode if it has changed
There is an issue to set crtc MODE_ID property to 0 when desired mode
doesn't change. Add check to only replace desired mode if it has
changed.
Bug: 251697081
Test: fps switch, AOD in/out, screen on/off, rrs
Change-Id: I8a062e5d4396bbeb33ba0f2ff4b97d49627a4936
Diffstat (limited to 'libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp')
-rw-r--r-- | libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp index bb940ad..1984d7b 100644 --- a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp +++ b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp @@ -1094,7 +1094,11 @@ int32_t ExynosDisplayDrmInterface::setActiveConfigWithConstraints( (mActiveModeState.blob_id != 0) && mActiveModeState.isFullModeSwitch(*mode); if (!test) { - mDesiredModeState.setMode(*mode, modeBlob, drmReq); + if (modeBlob) { /* only replace desired mode if it has changed */ + mDesiredModeState.setMode(*mode, modeBlob, drmReq); + } else { + ALOGD("%s:: same desired mode %d", __func__, config); + } } else { if (!isResSwitch) { ret = setDisplayMode(drmReq, modeBlob ? modeBlob : mDesiredModeState.blob_id); |