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;