summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2021-07-23 06:47:18 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-07-23 06:47:18 +0000
commit9939402e347332b4d61cb20b55bdacd25c393ed6 (patch)
tree2ff6fc3597301197fff3bd96131e2399c774626f
parente02b9171e029f07e3949031947124c164de5bd91 (diff)
parent33ed3676bd20d3a6ab6e862a4fd39f28d9f72ece (diff)
downloadgs101-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.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 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;