diff options
author | Padmanabhan Komanduru <pkomandu@codeaurora.org> | 2021-09-28 10:51:57 +0530 |
---|---|---|
committer | Padmanabhan Komanduru <pkomandu@codeaurora.org> | 2021-09-28 10:55:31 +0530 |
commit | 1a81bdd1ad6522362f5e45161a508b57e46c663c (patch) | |
tree | 1f14e9f8911ffc1a5a4ca07bdedfafd8b4f6748a | |
parent | ef9c2837fcf6a7398acb73605996f99946c85782 (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.h | 1 | ||||
-rw-r--r-- | sdm/libs/core/display_base.cpp | 4 |
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_); |