On Wed, Jul 19, 2023 at 01:48:33PM +0300, Stanislav Lisovskiy wrote:
> BSpec clearly instructs us to use plane scale factor when calculating
> relative data rate to be used when allocating DDB blocks for each plane.
> For some reason we use scale factor for data_rate calculation, which is
> used for BW calculations, however we are not using it for DDB calculations.
> So lets fix it as described in BSpec 68907.
> 
> Signed-off-by: Stanislav Lisovskiy <[email protected]>
> ---
>  drivers/gpu/drm/i915/display/intel_atomic_plane.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c 
> b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> index 7d9578ebae556..60a492e186ab8 100644
> --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> @@ -212,6 +212,7 @@ intel_plane_relative_data_rate(const struct 
> intel_crtc_state *crtc_state,
>       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
>       const struct drm_framebuffer *fb = plane_state->hw.fb;
>       int width, height;
> +     unsigned int rel_data_rate;
>  
>       if (plane->id == PLANE_CURSOR)
>               return 0;
> @@ -241,7 +242,11 @@ intel_plane_relative_data_rate(const struct 
> intel_crtc_state *crtc_state,
>               height /= 2;
>       }
>  
> -     return width * height * fb->format->cpp[color_plane];
> +     rel_data_rate = width * height * fb->format->cpp[color_plane];
> +
> +     return intel_adjusted_rate(&plane_state->uapi.src,
> +                                &plane_state->uapi.dst,
> +                                rel_data_rate);
>  }
>  
>  int intel_plane_calc_min_cdclk(struct intel_atomic_state *state,
> -- 
> 2.37.3
> 

IGT failures are irrelevant here(test is aborted due to some timeout issue).


Reply via email to