summaryrefslogtreecommitdiff
path: root/libhwc2.1/libmaindisplay
diff options
context:
space:
mode:
authorlinpeter <linpeter@google.com>2021-07-15 11:54:10 +0800
committerlinpeter <linpeter@google.com>2021-07-22 18:56:08 +0800
commit6aecadc0a2f1a7608e93a2290d45b43c222f3cdb (patch)
tree22ad1c9ea5648d0375ec4f2d63162cf936c89d89 /libhwc2.1/libmaindisplay
parent2850184d9b162f959e85d5a9c893571438d42a0e (diff)
downloadgs101-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.cpp23
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h4
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;