sdm: Full ROI for 1 frame after resolution switch
Use full ROI for 1 frame after resolution switch to refresh GRAM,
also reapply panel restrictions since DSC slice size could change.
Change-Id: Ie425f85e81760acdfa9914f03bf37e03f574a8f5
CRs-fixed: 1005496
diff --git a/sdm/libs/core/display_base.cpp b/sdm/libs/core/display_base.cpp
index b49e15e..5df06f6 100644
--- a/sdm/libs/core/display_base.cpp
+++ b/sdm/libs/core/display_base.cpp
@@ -201,6 +201,10 @@
}
}
+ if (one_frame_full_roi_) {
+ ControlPartialUpdate(false, &pending);
+ }
+
// Clean hw layers for reuse.
hw_layers_ = HWLayers();
hw_layers_.info.stack = layer_stack;
@@ -244,6 +248,11 @@
ControlPartialUpdate(true, &pending);
}
+ if (one_frame_full_roi_) {
+ ControlPartialUpdate(true, &pending);
+ one_frame_full_roi_ = false;
+ }
+
return error;
}
@@ -466,6 +475,8 @@
return error;
}
+ hw_intf_->GetHWPanelInfo(&hw_panel_info_);
+
if (display_comp_ctx_) {
comp_manager_->UnregisterDisplay(display_comp_ctx_);
}
@@ -473,6 +484,10 @@
error = comp_manager_->RegisterDisplay(display_type_, attrib, hw_panel_info_,
&display_comp_ctx_);
+ if (error == kErrorNone && partial_update_control_) {
+ one_frame_full_roi_ = true;
+ }
+
return error;
}
diff --git a/sdm/libs/core/display_base.h b/sdm/libs/core/display_base.h
index a59d6b2..c290e96 100644
--- a/sdm/libs/core/display_base.h
+++ b/sdm/libs/core/display_base.h
@@ -109,6 +109,7 @@
HWEventsInterface *hw_events_intf_ = NULL;
private:
+ bool one_frame_full_roi_ = false;
// Unused
virtual DisplayError GetConfig(DisplayConfigFixedInfo *variable_info) {
return kErrorNone;