Bladeren bron

disp: msm: sde: handle empty list of ROI in rounded corner

Currently, RC is assuming that partial update callback functions
will not be called when there is a full frame update and that CP
framework will return early instead. This assumption had to be changed
to support full frame transition for CP features such as demura and SPR
and now the responsibility is up to each feature to handle this corner
case.

This change is returning early in PU callback function if the payload
buffer is 0.

Change-Id: I478888fb036e642d5274a2cccc4d5378e62d6afa
Signed-off-by: Amine Najahi <[email protected]>
Amine Najahi 4 jaren geleden
bovenliggende
commit
154f37f92d
1 gewijzigde bestanden met toevoegingen van 12 en 2 verwijderingen
  1. 12 2
      msm/sde/sde_hw_rc.c

+ 12 - 2
msm/sde/sde_hw_rc.c

@@ -769,6 +769,12 @@ int sde_hw_rc_check_pu_roi(struct sde_hw_dspp *hw_dspp, void *cfg)
 		return -EINVAL;
 	}
 
+	roi_list = hw_cfg->payload;
+	if (!roi_list) {
+		SDE_DEBUG("empty list of roi\n");
+		return 0;
+	}
+
 	rc_mask_cfg = RC_STATE(hw_dspp).last_rc_mask_cfg;
 	mask_programmed = RC_STATE(hw_dspp).mask_programmed;
 
@@ -784,7 +790,6 @@ int sde_hw_rc_check_pu_roi(struct sde_hw_dspp *hw_dspp, void *cfg)
 		return rc;
 	}
 
-	roi_list = hw_cfg->payload;
 	sde_kms_rect_merge_rectangles(roi_list, &merged_roi);
 	rc = _sde_hw_rc_get_ajusted_roi(hw_cfg, &merged_roi, &rc_roi);
 	if (rc) {
@@ -825,6 +830,12 @@ int sde_hw_rc_setup_pu_roi(struct sde_hw_dspp *hw_dspp, void *cfg)
 		return -EINVAL;
 	}
 
+	roi_list = hw_cfg->payload;
+	if (!roi_list) {
+		SDE_DEBUG("empty list of roi\n");
+		return 0;
+	}
+
 	rc_mask_cfg = RC_STATE(hw_dspp).last_rc_mask_cfg;
 	mask_programmed = RC_STATE(hw_dspp).mask_programmed;
 
@@ -834,7 +845,6 @@ int sde_hw_rc_setup_pu_roi(struct sde_hw_dspp *hw_dspp, void *cfg)
 		return SDE_HW_RC_PU_SKIP_OP;
 	}
 
-	roi_list = hw_cfg->payload;
 	sde_kms_rect_merge_rectangles(roi_list, &merged_roi);
 	rc = _sde_hw_rc_get_ajusted_roi(hw_cfg, &merged_roi, &rc_roi);
 	if (rc) {