On Wed, Aug 23, 2023 at 10:07:13AM -0700, Lucas De Marchi wrote:
> From: Stanislav Lisovskiy <[email protected]>
> 
> We now start calculating relative plane data rate for sursor plane as

s/sursor/cursor/

> well, as instructed by BSpec and also treat cursor plane same way as
> other planes, when doing allocation, i.e not using fixed allocation for
> cursor anymore.
> 
> Signed-off-by: Stanislav Lisovskiy <[email protected]>
> Signed-off-by: Lucas De Marchi <[email protected]>

Bspec: 68907
Reviewed-by: Matt Roper <[email protected]>

> ---
>  .../gpu/drm/i915/display/intel_atomic_plane.c    |  6 +++---
>  drivers/gpu/drm/i915/display/skl_watermark.c     | 16 +++++++++-------
>  2 files changed, 12 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c 
> b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> index cb60165bc415..fb13f0bb8c52 100644
> --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> @@ -219,9 +219,6 @@ intel_plane_relative_data_rate(const struct 
> intel_crtc_state *crtc_state,
>       int width, height;
>       unsigned int rel_data_rate;
>  
> -     if (plane->id == PLANE_CURSOR)
> -             return 0;
> -
>       if (!plane_state->uapi.visible)
>               return 0;
>  
> @@ -249,6 +246,9 @@ intel_plane_relative_data_rate(const struct 
> intel_crtc_state *crtc_state,
>  
>       rel_data_rate = width * height * fb->format->cpp[color_plane];
>  
> +     if (plane->id == PLANE_CURSOR)
> +             return rel_data_rate;
> +
>       return intel_adjusted_rate(&plane_state->uapi.src,
>                                  &plane_state->uapi.dst,
>                                  rel_data_rate);
> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c 
> b/drivers/gpu/drm/i915/display/skl_watermark.c
> index 063929a42a42..64a122d3c9c0 100644
> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
> @@ -1367,7 +1367,7 @@ skl_total_relative_data_rate(const struct 
> intel_crtc_state *crtc_state)
>       u64 data_rate = 0;
>  
>       for_each_plane_id_on_crtc(crtc, plane_id) {
> -             if (plane_id == PLANE_CURSOR)
> +             if (plane_id == PLANE_CURSOR && DISPLAY_VER(i915) < 20)
>                       continue;
>  
>               data_rate += crtc_state->rel_data_rate[plane_id];
> @@ -1514,10 +1514,12 @@ skl_crtc_allocate_plane_ddb(struct intel_atomic_state 
> *state,
>               return 0;
>  
>       /* Allocate fixed number of blocks for cursor. */
> -     cursor_size = skl_cursor_allocation(crtc_state, num_active);
> -     iter.size -= cursor_size;
> -     skl_ddb_entry_init(&crtc_state->wm.skl.plane_ddb[PLANE_CURSOR],
> -                        alloc->end - cursor_size, alloc->end);
> +     if (DISPLAY_VER(i915) < 20) {
> +             cursor_size = skl_cursor_allocation(crtc_state, num_active);
> +             iter.size -= cursor_size;
> +             skl_ddb_entry_init(&crtc_state->wm.skl.plane_ddb[PLANE_CURSOR],
> +                                alloc->end - cursor_size, alloc->end);
> +     }
>  
>       iter.data_rate = skl_total_relative_data_rate(crtc_state);
>  
> @@ -1531,7 +1533,7 @@ skl_crtc_allocate_plane_ddb(struct intel_atomic_state 
> *state,
>                       const struct skl_plane_wm *wm =
>                               &crtc_state->wm.skl.optimal.planes[plane_id];
>  
> -                     if (plane_id == PLANE_CURSOR) {
> +                     if (plane_id == PLANE_CURSOR && DISPLAY_VER(i915) < 20) 
> {
>                               const struct skl_ddb_entry *ddb =
>                                       &crtc_state->wm.skl.plane_ddb[plane_id];
>  
> @@ -1579,7 +1581,7 @@ skl_crtc_allocate_plane_ddb(struct intel_atomic_state 
> *state,
>               const struct skl_plane_wm *wm =
>                       &crtc_state->wm.skl.optimal.planes[plane_id];
>  
> -             if (plane_id == PLANE_CURSOR)
> +             if (plane_id == PLANE_CURSOR && DISPLAY_VER(i915) < 20)
>                       continue;
>  
>               if (DISPLAY_VER(i915) < 11 &&
> -- 
> 2.40.1
> 

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation

Reply via email to