diff options
author | Wenjun Zhang <wjzhan@codeaurora.org> | 2020-06-05 00:08:49 +0800 |
---|---|---|
committer | Karthi Kandasamy <kartka@codeaurora.org> | 2020-11-05 13:05:40 +0530 |
commit | 472b05f0cd273e287c3ddddf00e4ae209e8d4540 (patch) | |
tree | 1cbcb08c6ffd7d94b8c6a4e0db640e9ece282e16 | |
parent | 97cd61330667628b1365cc4b2e9285832c18a623 (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-x | sdm/libs/core/display_base.cpp | 2 | ||||
-rw-r--r-- | sdm/libs/core/display_base.h | 2 | ||||
-rw-r--r-- | sdm/libs/core/display_builtin.cpp | 6 |
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; |