summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMidas Chien <midaschieh@google.com>2023-06-13 15:07:26 +0000
committerMidas Chien <midaschieh@google.com>2023-06-15 15:46:32 +0000
commitc8122475f806e0f9c1e343172a002c172417def2 (patch)
tree9fa4bbbbef402f06a67371d033f73df5b53a6ce8
parent3b71590c8128afe7dd03e81daca1339d5c89c703 (diff)
downloadzuma-c8122475f806e0f9c1e343172a002c172417def2.tar.gz
libhwc2.1: get active operation rate from kerenl when power on
Reading data from kernel sysfs node takes time. To avoid do it frequently, update active operation rate from kernel when power on display. Bug: 287042355 Test: NS/HS switch, AOD Change-Id: I0e9f0c8dec3c55ca3c13ed52105293c1ef0de62d
-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