summaryrefslogtreecommitdiff
path: root/sdm/libs/hwc2/hwc_display.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sdm/libs/hwc2/hwc_display.cpp')
-rw-r--r--sdm/libs/hwc2/hwc_display.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/sdm/libs/hwc2/hwc_display.cpp b/sdm/libs/hwc2/hwc_display.cpp
index c33fc617..299aad76 100644
--- a/sdm/libs/hwc2/hwc_display.cpp
+++ b/sdm/libs/hwc2/hwc_display.cpp
@@ -782,9 +782,14 @@ void HWCDisplay::BuildLayerStack() {
layer_stack_.layers.push_back(layer);
}
+ // If layer stack needs Client composition, HWC display gets into InternalValidate state. If
+ // validation gets reset by any other thread in this state, enforce Geometry change to ensure
+ // that Client target gets composed by SF.
+ bool enforce_geometry_change = (validate_state_ == kInternalValidate) && !validated_;
+
// TODO(user): Set correctly when SDM supports geometry_changes as bitmask
layer_stack_.flags.geometry_changed = UINT32((geometry_changes_ ||
- geometry_changes_on_doze_suspend_) > 0);
+ geometry_changes_on_doze_suspend_) > 0) || enforce_geometry_change;
layer_stack_.flags.config_changed = !validated_;
// Append client target to the layer stack