summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMidas Chien <midaschieh@google.com>2023-06-16 01:35:25 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-06-16 01:35:25 +0000
commite08d41256036e40d1ab3f5aa64f0da67a306479e (patch)
tree9fa4bbbbef402f06a67371d033f73df5b53a6ce8
parent9bccf474c2a0762f5c73d9acf95698754fe0ae07 (diff)
parentc8122475f806e0f9c1e343172a002c172417def2 (diff)
downloadzuma-e08d41256036e40d1ab3f5aa64f0da67a306479e.tar.gz
libhwc2.1: get active operation rate from kerenl when power on am: c8122475f8
Original change: https://googleplex-android-review.googlesource.com/c/platform/hardware/google/graphics/zuma/+/23659932 Change-Id: I6e7c30f7d4146ee300e7b7ba3cb6641dbdcd0c63 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp19
1 files changed, 13 insertions, 6 deletions
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
index f036c45..6917f16 100644
--- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
+++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
@@ -14,6 +14,8 @@
* limitations under the License.
*/
+#define ATRACE_TAG (ATRACE_TAG_GRAPHICS | ATRACE_TAG_HAL)
+
#include "ExynosPrimaryDisplayModule.h"
#include <cutils/properties.h>
@@ -56,10 +58,13 @@ int32_t ExynosPrimaryDisplayModule::validateWinConfigData()
int32_t ExynosPrimaryDisplayModule::OperationRateManager::getOperationRate() {
std::string op_rate_str;
+ ATRACE_CALL();
if (mDisplayPowerMode == HWC2_POWER_MODE_DOZE ||
mDisplayPowerMode == HWC2_POWER_MODE_DOZE_SUSPEND) {
return LP_OP_RATE;
- } else if (readLineFromFile(mSysfsPath, op_rate_str, '\n') != OK) {
+ }
+
+ if (readLineFromFile(mSysfsPath, op_rate_str, '\n') != OK) {
OP_MANAGER_LOGE("failed to read %s", mSysfsPath.c_str());
return 0;
}
@@ -69,6 +74,7 @@ int32_t ExynosPrimaryDisplayModule::OperationRateManager::getOperationRate() {
int32_t ExynosPrimaryDisplayModule::OperationRateManager::setOperationRate(const int32_t rate) {
if (!mDisplayActiveOperationRate || mDisplayActiveOperationRate == rate) return NO_ERROR;
+ ATRACE_CALL();
int32_t ret = writeIntToFile(mSysfsPath.c_str(), rate);
if (ret == NO_ERROR) {
mDisplayActiveOperationRate = rate;
@@ -174,14 +180,12 @@ int32_t ExynosPrimaryDisplayModule::OperationRateManager::updateOperationRateLoc
desiredOpRate = mDisplayHsOperationRate;
}
- if (mDisplayPowerMode == HWC2_POWER_MODE_ON) {
- mDisplayActiveOperationRate = getOperationRate();
- } else if (mDisplayPowerMode == HWC2_POWER_MODE_DOZE ||
- mDisplayPowerMode == HWC2_POWER_MODE_DOZE_SUSPEND) {
+ if (mDisplayPowerMode == HWC2_POWER_MODE_DOZE ||
+ mDisplayPowerMode == HWC2_POWER_MODE_DOZE_SUSPEND) {
mDisplayActiveOperationRate = LP_OP_RATE;
desiredOpRate = mDisplayActiveOperationRate;
effectiveOpRate = desiredOpRate;
- } else {
+ } else if (mDisplayPowerMode != HWC2_POWER_MODE_ON) {
return ret;
}
@@ -191,6 +195,9 @@ int32_t ExynosPrimaryDisplayModule::OperationRateManager::updateOperationRateLoc
(curRefreshRate <= mDisplayHsOperationRate))
effectiveOpRate = mDisplayHsOperationRate;
} else if (cond == DispOpCondition::PANEL_SET_POWER) {
+ if (mDisplayPowerMode == HWC2_POWER_MODE_ON) {
+ mDisplayActiveOperationRate = getOperationRate();
+ }
effectiveOpRate = desiredOpRate;
} else if (cond == DispOpCondition::SET_DBV) {
// TODO: tune brightness delta for different brightness curve and values