summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPadmanabhan Komanduru <pkomandu@codeaurora.org>2021-09-28 10:51:57 +0530
committerPadmanabhan Komanduru <pkomandu@codeaurora.org>2021-09-28 10:55:31 +0530
commit1a81bdd1ad6522362f5e45161a508b57e46c663c (patch)
tree1f14e9f8911ffc1a5a4ca07bdedfafd8b4f6748a
parentef9c2837fcf6a7398acb73605996f99946c85782 (diff)
sdm: disable PU when HW RC mask is ready
Disable PU for one frame when HW RC mask is ready to be programmed to DSPP. This helps for proper handling of ROI caching in driver. Change-Id: If35172b25529afc6b592a3179a84d416d7b2d941
-rw-r--r--sdm/include/private/rc_intf.h1
-rw-r--r--sdm/libs/core/display_base.cpp4
2 files changed, 5 insertions, 0 deletions
diff --git a/sdm/include/private/rc_intf.h b/sdm/include/private/rc_intf.h
index a43e5633..fcbe5dcf 100644
--- a/sdm/include/private/rc_intf.h
+++ b/sdm/include/private/rc_intf.h
@@ -51,6 +51,7 @@ struct RCOutputConfig {
int32_t top_height = 0;
int32_t bottom_width = 0;
int32_t bottom_height = 0;
+ bool rc_needs_full_roi = false;
};
// These value is to get the status of the mask
diff --git a/sdm/libs/core/display_base.cpp b/sdm/libs/core/display_base.cpp
index 8cccbf98..6525b213 100644
--- a/sdm/libs/core/display_base.cpp
+++ b/sdm/libs/core/display_base.cpp
@@ -461,6 +461,9 @@ void DisplayBase::SetRCData(LayerStack *layer_stack) {
if (!ret) {
DLOGD_IF(kTagDisplay, "RC top_height = %d, RC bot_height = %d", rc_out_config->top_height,
rc_out_config->bottom_height);
+ if (rc_out_config->rc_needs_full_roi) {
+ DisablePartialUpdateOneFrame();
+ }
hw_layers_info.rc_config = true;
hw_layers_info.rc_layers_info.top_width = rc_out_config->top_width;
hw_layers_info.rc_layers_info.top_height = rc_out_config->top_height;
@@ -501,6 +504,7 @@ DisplayError DisplayBase::Commit(LayerStack *layer_stack) {
} else {
DLOGI_IF(kTagDisplay, "Status of RC mask data: %d.", (*mask_status).rc_mask_state);
if ((*mask_status).rc_mask_state == kStatusRcMaskStackDirty) {
+ DisablePartialUpdateOneFrame();
needs_validate_ = true;
DLOGI_IF(kTagDisplay, "Mask is ready for display %d-%d, call Corresponding Prepare()",
display_id_, display_type_);