summaryrefslogtreecommitdiff
path: root/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp
diff options
context:
space:
mode:
authorMidas Chien <midaschieh@google.com>2022-10-17 11:24:00 +0800
committerMidas Chien <midaschieh@google.com>2022-10-25 00:18:57 +0800
commit2d9696248e6c4ecc723014af39fce5aa8b0cf6d6 (patch)
tree798f4e01232397991394f5c29dab68b9d1520566 /libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterface.cpp
parente5a1c3940d5dd647d5784b459e076cb7fc93a5bf (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.cpp6
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);