summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWenjun Zhang <wjzhan@codeaurora.org>2020-06-05 00:08:49 +0800
committerKarthi Kandasamy <kartka@codeaurora.org>2020-11-05 13:05:40 +0530
commit472b05f0cd273e287c3ddddf00e4ae209e8d4540 (patch)
tree1cbcb08c6ffd7d94b8c6a4e0db640e9ece282e16
parent97cd61330667628b1365cc4b2e9285832c18a623 (diff)
sdm: do not skip validate
In some variable frame rate Apps, idle timeout which caused by low frame rate can't be cancelled if skip validate call in certain cases. eg, system won't get chance to resume from idle timeout if no any gemotry changes, and Apps only change refresh rate from 48 to 60 fps. Change-Id: I28b941f0a48eb8adf54a46b596d4952e7fa223cc
-rwxr-xr-xsdm/libs/core/display_base.cpp2
-rw-r--r--sdm/libs/core/display_base.h2
-rw-r--r--sdm/libs/core/display_builtin.cpp6
3 files changed, 8 insertions, 2 deletions
diff --git a/sdm/libs/core/display_base.cpp b/sdm/libs/core/display_base.cpp
index cc2855e1..ba2733d9 100755
--- a/sdm/libs/core/display_base.cpp
+++ b/sdm/libs/core/display_base.cpp
@@ -1980,7 +1980,7 @@ bool DisplayBase::IsHdrMode(const AttrVal &attr) {
}
bool DisplayBase::CanSkipValidate() {
- return comp_manager_->CanSkipValidate(display_comp_ctx_) && !lut_swap_;
+ return (!is_idle_timeout_) && comp_manager_->CanSkipValidate(display_comp_ctx_) && !lut_swap_;
}
void DisplayBase::SetLutSwapFlag() {
diff --git a/sdm/libs/core/display_base.h b/sdm/libs/core/display_base.h
index d18d4a4a..08de915b 100644
--- a/sdm/libs/core/display_base.h
+++ b/sdm/libs/core/display_base.h
@@ -185,7 +185,7 @@ class DisplayBase : public DisplayInterface {
void InsertBT2020PqHlgModes();
DisplayError HandlePendingVSyncEnable(int32_t retire_fence);
DisplayError HandlePendingPowerState(int32_t retire_fence);
-
+ bool is_idle_timeout_ = false;
recursive_mutex recursive_mutex_;
int32_t display_id_ = -1;
DisplayType display_type_;
diff --git a/sdm/libs/core/display_builtin.cpp b/sdm/libs/core/display_builtin.cpp
index 2bd90042..eca74c80 100644
--- a/sdm/libs/core/display_builtin.cpp
+++ b/sdm/libs/core/display_builtin.cpp
@@ -466,6 +466,12 @@ DisplayError DisplayBuiltIn::SetRefreshRate(uint32_t refresh_rate, bool final_ra
return error;
}
+ if (handle_idle_timeout_) {
+ is_idle_timeout_ = true;
+ } else {
+ is_idle_timeout_ = false;
+ }
+
error = comp_manager_->CheckEnforceSplit(display_comp_ctx_, refresh_rate);
if (error != kErrorNone) {
return error;