diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2021-07-23 06:47:18 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-07-23 06:47:18 +0000 |
commit | 9939402e347332b4d61cb20b55bdacd25c393ed6 (patch) | |
tree | 2ff6fc3597301197fff3bd96131e2399c774626f | |
parent | e02b9171e029f07e3949031947124c164de5bd91 (diff) | |
parent | 33ed3676bd20d3a6ab6e862a4fd39f28d9f72ece (diff) | |
download | gs101-9939402e347332b4d61cb20b55bdacd25c393ed6.tar.gz |
Merge "hwc/gs101: correct dimming st check" into sc-dev am: 33ed3676bd
Original change: https://googleplex-android-review.googlesource.com/c/platform/hardware/google/graphics/gs101/+/15287618
Change-Id: I9baa8c64a69573677cd7ac37c9a9d608449d0888
-rw-r--r-- | libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp | 23 | ||||
-rw-r--r-- | libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h | 4 |
2 files changed, 12 insertions, 15 deletions
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp index fee339a..4f3ea81 100644 --- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp +++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp @@ -984,30 +984,27 @@ int32_t ExynosPrimaryDisplayModule::setAtcStDimming(uint32_t value) { uint32_t step = mAtcStTarget > strength ? mAtcStUpStep : mAtcStDownStep; int diff = value - strength; - uint32_t steps = std::abs(diff) / step; - int remainder = std::abs(diff) % step; - if (remainder > 0) steps = steps + 1; - mAtcStStepLeft = steps; - ALOGI("setup atc st dimming=%d, steps=%d, step=%d", value, steps, step); + uint32_t count = (std::abs(diff) + step - 1) / step; + mAtcStStepCount = count; + ALOGI("setup atc st dimming=%d, count=%d, step=%d", value, count, step); } - if (mAtcStStepLeft == 0 && !mAtcStrength.is_dirty()) return NO_ERROR; + if (mAtcStStepCount == 0 && !mAtcStrength.is_dirty()) return NO_ERROR; - if (strength < mAtcStTarget) { + if ((strength + mAtcStUpStep) < mAtcStTarget) { strength = strength + mAtcStUpStep; - if (strength > mAtcStTarget) strength = mAtcStTarget; - } else if (strength > mAtcStTarget) { + } else if (strength > (mAtcStTarget + mAtcStDownStep)) { strength = strength - mAtcStDownStep; - if (strength < mAtcStTarget) strength = mAtcStTarget; - } else + } else { strength = mAtcStTarget; + } if (setAtcStrength(strength) != NO_ERROR) { ALOGE("Failed to set atc st"); return -EPERM; } - if (mAtcStStepLeft > 0) mAtcStStepLeft--; + if (mAtcStStepCount > 0) mAtcStStepCount--; return NO_ERROR; } @@ -1028,7 +1025,7 @@ void ExynosPrimaryDisplayModule::checkAtcAnimation() { return; } - if (mPendingAtcOff && mAtcStStepLeft == 0) { + if (mPendingAtcOff && mAtcStStepCount == 0) { if (setAtcEnable(false) != NO_ERROR) { ALOGE("Failed to set atc enable to off"); return; diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h index 25b0289..1b80d2c 100644 --- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h +++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h @@ -260,7 +260,7 @@ class ExynosPrimaryDisplayModule : public ExynosPrimaryDisplay { int32_t setAtcEnable(bool enable); void checkAtcAnimation(); bool isInAtcAnimation() { - if (mAtcStStepLeft > 0) + if (mAtcStStepCount > 0) return true; else return false; @@ -276,7 +276,7 @@ class ExynosPrimaryDisplayModule : public ExynosPrimaryDisplay { CtrlValue<uint32_t> mAtcStrength; CtrlValue<uint32_t> mAtcEnable; std::unordered_map<std::string, CtrlValue<int32_t>> mAtcSubSetting; - uint32_t mAtcStStepLeft = 0; + uint32_t mAtcStStepCount = 0; uint32_t mAtcStTarget = 0; uint32_t mAtcStUpStep; uint32_t mAtcStDownStep; |