summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVikas batchu <quic_vikabatc@quicinc.com>2022-08-12 19:10:48 +0530
committerVikas batchu <quic_vikabatc@quicinc.com>2022-08-12 19:54:55 +0530
commit5afd9f11490b17bc9fe15d43a42767e253a34f09 (patch)
tree50ed2c3fe9a36245015ee5ebcd713d3ba51dfc58
parentfd9c16bb1c83414104e614e252e4591ab60a994a (diff)
sdm: wait on current retire fence for virtual display power state changes
Change-Id: Iad8b9b856cc3723acb249a09792a592dec205d4e
-rw-r--r--sdm/libs/core/display_base.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/sdm/libs/core/display_base.cpp b/sdm/libs/core/display_base.cpp
index 31961642..4f8adf6a 100644
--- a/sdm/libs/core/display_base.cpp
+++ b/sdm/libs/core/display_base.cpp
@@ -1915,9 +1915,15 @@ DisplayError DisplayBase::SetDisplayState(DisplayState state, bool teardown,
}
if ((pending_power_state_ == kPowerStateNone) && (!first_cycle_ || display_type_ == kHDMI)) {
- CacheRetireFence();
SyncPoints sync = {};
- sync.retire_fence = retire_fence_;
+ if (draw_method_ == kDrawDefault || display_type_ == kVirtual) {
+ // Wait on current retire fence.
+ sync.retire_fence = sync_points.retire_fence;
+ } else {
+ // For displays in unified draw, wait on cached retire fence in steady state.
+ comp_manager_->GetRetireFence(display_comp_ctx_, &retire_fence_);
+ sync.retire_fence = retire_fence_;
+ }
WaitForCompletion(&sync);
}