diff options
author | linpeter <linpeter@google.com> | 2021-07-15 11:54:10 +0800 |
---|---|---|
committer | linpeter <linpeter@google.com> | 2021-07-22 18:56:08 +0800 |
commit | 6aecadc0a2f1a7608e93a2290d45b43c222f3cdb (patch) | |
tree | 22ad1c9ea5648d0375ec4f2d63162cf936c89d89 /libhwc2.1/libmaindisplay | |
parent | 2850184d9b162f959e85d5a9c893571438d42a0e (diff) | |
download | gs101-6aecadc0a2f1a7608e93a2290d45b43c222f3cdb.tar.gz |
hwc/gs101: correct dimming st check
Bug: 191851821
test: check st dimming
Change-Id: I6af1ae76b645777768123e0cf10f23f0a0f0afcb
Diffstat (limited to 'libhwc2.1/libmaindisplay')
-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 fbdd166..200f451 100644 --- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp +++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp @@ -981,30 +981,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; } @@ -1025,7 +1022,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; |