diff mbox series

drm/i915/icl: Avoid Gen10 watermark workarounds in Gen11

Message ID 1534994984-6080-1-git-send-email-karthik.b.s@intel.com (mailing list archive)
State New, archived
Headers show
Series drm/i915/icl: Avoid Gen10 watermark workarounds in Gen11 | expand

Commit Message

Karthik B S Aug. 23, 2018, 3:29 a.m. UTC
Check added to skip the watermark workarounds intended for Gen10 and
below platforms in Gen11.

Signed-off-by: Karthik B S <karthik.b.s@intel.com>
---
 drivers/gpu/drm/i915/intel_pm.c | 39 +++++++++++++++++++++++----------------
 1 file changed, 23 insertions(+), 16 deletions(-)

Comments

Rodrigo Vivi Aug. 31, 2018, 2:32 p.m. UTC | #1
On Thu, Aug 23, 2018 at 08:59:44AM +0530, Karthik B S wrote:
> Check added to skip the watermark workarounds intended for Gen10 and
> below platforms in Gen11.

This seems a bit ambiguous for me, could you please improve the commit
message a bit?

> 
> Signed-off-by: Karthik B S <karthik.b.s@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_pm.c | 39 +++++++++++++++++++++++----------------
>  1 file changed, 23 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index d99e5fa..1928fe0 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -4677,28 +4677,35 @@ static int skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
>  	res_lines = div_round_up_fixed16(selected_result,
>  					 wp->plane_blocks_per_line);
>  
> -	/* Display WA #1125: skl,bxt,kbl,glk */
> -	if (level == 0 && wp->rc_surface)
> -		res_blocks += fixed16_to_u32_round_up(wp->y_tile_minimum);
> -
> -	/* Display WA #1126: skl,bxt,kbl,glk */
> -	if (level >= 1 && level <= 7) {
> -		if (wp->y_tiled) {
> +	if (INTEL_GEN(dev_priv) < 11) {
> +		/* Display WA #1125: skl,bxt,kbl,glk */
> +		if (level == 0 && wp->rc_surface)
>  			res_blocks += fixed16_to_u32_round_up(
>  							wp->y_tile_minimum);
> -			res_lines += wp->y_min_scanlines;
> -		} else {
> -			res_blocks++;
> +
> +		/* Display WA #1126: skl,bxt,kbl,glk */
> +		if (level >= 1 && level <= 7) {
> +			if (wp->y_tiled) {
> +				res_blocks += fixed16_to_u32_round_up(
> +							wp->y_tile_minimum);
> +				res_lines += wp->y_min_scanlines;
> +			} else {
> +				res_blocks++;
> +			}
>  		}
> +	}
>  
> -		/*
> -		 * Make sure result blocks for higher latency levels are atleast
> -		 * as high as level below the current level.
> -		 * Assumption in DDB algorithm optimization for special cases.
> -		 * Also covers Display WA #1125 for RC.
> -		 */
> +	/*
> +	 * Make sure result blocks for higher latency levels are atleast
> +	 * as high as level below the current level.
> +	 * Assumption in DDB algorithm optimization for special cases.
> +	 * Also covers Display WA #1125 for RC.
> +	 */
> +	if (level >= 1 && level <= 7) {
>  		if (result_prev->plane_res_b > res_blocks)
>  			res_blocks = result_prev->plane_res_b;

Everything above makes sense and I checked against spec and it is right.

> +		if (result_prev->plane_res_l > res_lines)
> +			res_lines = result_prev->plane_res_l;

My on;y concern here is with this line...
This seems a new addition that if needed needs to come in a
separated patch with its own justification.

Sorry for taking so long to review it.

Thanks,
Rodrigo.

>  	}
>  
>  	if (INTEL_GEN(dev_priv) >= 11) {
> -- 
> 2.7.4
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Karthik B S Sept. 4, 2018, 10:43 a.m. UTC | #2
On 8/31/2018 8:02 PM, Rodrigo Vivi wrote:
> On Thu, Aug 23, 2018 at 08:59:44AM +0530, Karthik B S wrote:
>> Check added to skip the watermark workarounds intended for Gen10 and
>> below platforms in Gen11.
> This seems a bit ambiguous for me, could you please improve the commit
> message a bit?
Sure. I'll do it.
>
>> Signed-off-by: Karthik B S <karthik.b.s@intel.com>
>> ---
>>   drivers/gpu/drm/i915/intel_pm.c | 39 +++++++++++++++++++++++----------------
>>   1 file changed, 23 insertions(+), 16 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
>> index d99e5fa..1928fe0 100644
>> --- a/drivers/gpu/drm/i915/intel_pm.c
>> +++ b/drivers/gpu/drm/i915/intel_pm.c
>> @@ -4677,28 +4677,35 @@ static int skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
>>   	res_lines = div_round_up_fixed16(selected_result,
>>   					 wp->plane_blocks_per_line);
>>   
>> -	/* Display WA #1125: skl,bxt,kbl,glk */
>> -	if (level == 0 && wp->rc_surface)
>> -		res_blocks += fixed16_to_u32_round_up(wp->y_tile_minimum);
>> -
>> -	/* Display WA #1126: skl,bxt,kbl,glk */
>> -	if (level >= 1 && level <= 7) {
>> -		if (wp->y_tiled) {
>> +	if (INTEL_GEN(dev_priv) < 11) {
>> +		/* Display WA #1125: skl,bxt,kbl,glk */
>> +		if (level == 0 && wp->rc_surface)
>>   			res_blocks += fixed16_to_u32_round_up(
>>   							wp->y_tile_minimum);
>> -			res_lines += wp->y_min_scanlines;
>> -		} else {
>> -			res_blocks++;
>> +
>> +		/* Display WA #1126: skl,bxt,kbl,glk */
>> +		if (level >= 1 && level <= 7) {
>> +			if (wp->y_tiled) {
>> +				res_blocks += fixed16_to_u32_round_up(
>> +							wp->y_tile_minimum);
>> +				res_lines += wp->y_min_scanlines;
>> +			} else {
>> +				res_blocks++;
>> +			}
>>   		}
>> +	}
>>   
>> -		/*
>> -		 * Make sure result blocks for higher latency levels are atleast
>> -		 * as high as level below the current level.
>> -		 * Assumption in DDB algorithm optimization for special cases.
>> -		 * Also covers Display WA #1125 for RC.
>> -		 */
>> +	/*
>> +	 * Make sure result blocks for higher latency levels are atleast
>> +	 * as high as level below the current level.
>> +	 * Assumption in DDB algorithm optimization for special cases.
>> +	 * Also covers Display WA #1125 for RC.
>> +	 */
>> +	if (level >= 1 && level <= 7) {
>>   		if (result_prev->plane_res_b > res_blocks)
>>   			res_blocks = result_prev->plane_res_b;
> Everything above makes sense and I checked against spec and it is right.
>
>> +		if (result_prev->plane_res_l > res_lines)
>> +			res_lines = result_prev->plane_res_l;
> My on;y concern here is with this line...
> This seems a new addition that if needed needs to come in a
> separated patch with its own justification.
Sure. I will make a separate patch for the same.
>
> Sorry for taking so long to review it.
>
> Thanks,
> Rodrigo.
>
>>   	}
>>   
>>   	if (INTEL_GEN(dev_priv) >= 11) {
>> -- 
>> 2.7.4
>>
>> _______________________________________________
>> Intel-gfx mailing list
>> Intel-gfx@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index d99e5fa..1928fe0 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -4677,28 +4677,35 @@  static int skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
 	res_lines = div_round_up_fixed16(selected_result,
 					 wp->plane_blocks_per_line);
 
-	/* Display WA #1125: skl,bxt,kbl,glk */
-	if (level == 0 && wp->rc_surface)
-		res_blocks += fixed16_to_u32_round_up(wp->y_tile_minimum);
-
-	/* Display WA #1126: skl,bxt,kbl,glk */
-	if (level >= 1 && level <= 7) {
-		if (wp->y_tiled) {
+	if (INTEL_GEN(dev_priv) < 11) {
+		/* Display WA #1125: skl,bxt,kbl,glk */
+		if (level == 0 && wp->rc_surface)
 			res_blocks += fixed16_to_u32_round_up(
 							wp->y_tile_minimum);
-			res_lines += wp->y_min_scanlines;
-		} else {
-			res_blocks++;
+
+		/* Display WA #1126: skl,bxt,kbl,glk */
+		if (level >= 1 && level <= 7) {
+			if (wp->y_tiled) {
+				res_blocks += fixed16_to_u32_round_up(
+							wp->y_tile_minimum);
+				res_lines += wp->y_min_scanlines;
+			} else {
+				res_blocks++;
+			}
 		}
+	}
 
-		/*
-		 * Make sure result blocks for higher latency levels are atleast
-		 * as high as level below the current level.
-		 * Assumption in DDB algorithm optimization for special cases.
-		 * Also covers Display WA #1125 for RC.
-		 */
+	/*
+	 * Make sure result blocks for higher latency levels are atleast
+	 * as high as level below the current level.
+	 * Assumption in DDB algorithm optimization for special cases.
+	 * Also covers Display WA #1125 for RC.
+	 */
+	if (level >= 1 && level <= 7) {
 		if (result_prev->plane_res_b > res_blocks)
 			res_blocks = result_prev->plane_res_b;
+		if (result_prev->plane_res_l > res_lines)
+			res_lines = result_prev->plane_res_l;
 	}
 
 	if (INTEL_GEN(dev_priv) >= 11) {