> -----Original Message-----
> From: Intel-xe <[email protected]> On Behalf Of Ville 
> Syrjala
> Sent: Friday, July 5, 2024 8:23 PM
> To: [email protected]
> Cc: [email protected]
> Subject: [PATCH 14/20] drm/i915/fbc: Introduce intel_fbc_preferred_cfb_size()
> 
> From: Ville Syrjälä <[email protected]>
> 
> Allow the code to declare roughly how much stolen memory should remain
> available for the CFB. Since we don't know the actual resolutions that will
> eventually be used simply assume that the maximum plane size (with no extra
> stride
> padding) is enough, with 1:1 compression ratio limit.
> 
> This should be useful for the fbdev code to determine whether to allocate/keep
> the fbdev framebuffer in stolen or not.

Looks Good to me.
Reviewed-by: Uma Shankar <[email protected]>

> Signed-off-by: Ville Syrjälä <[email protected]>
> ---
>  drivers/gpu/drm/i915/display/intel_fbc.c | 17 +++++++++++++++++
> drivers/gpu/drm/i915/display/intel_fbc.h |  1 +
>  2 files changed, 18 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c
> b/drivers/gpu/drm/i915/display/intel_fbc.c
> index a0e539bc80f1..efe0a554a281 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbc.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
> @@ -1911,6 +1911,23 @@ static int intel_sanitize_fbc_option(struct
> intel_display *display)
>       return 0;
>  }
> 
> +unsigned int intel_fbc_preferred_cfb_size(struct intel_display
> +*display) {
> +     unsigned int cpp, width, height, stride;
> +
> +     if (!HAS_FBC(display))
> +             return 0;
> +
> +     intel_fbc_max_plane_size(display, &width, &height);
> +
> +     cpp = intel_fbc_cfb_cpp();
> +
> +     /* assume stride matches width to keep this simple */
> +     stride = _intel_fbc_cfb_stride(display, cpp, width, width * cpp);
> +
> +     return _intel_fbc_cfb_size(display, height, stride); }
> +
>  void intel_fbc_add_plane(struct intel_fbc *fbc, struct intel_plane *plane)  {
>       plane->fbc = fbc;
> diff --git a/drivers/gpu/drm/i915/display/intel_fbc.h
> b/drivers/gpu/drm/i915/display/intel_fbc.h
> index 834b271505b1..40d8efec6d9d 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbc.h
> +++ b/drivers/gpu/drm/i915/display/intel_fbc.h
> @@ -46,6 +46,7 @@ void intel_fbc_flush(struct drm_i915_private *dev_priv,
> void intel_fbc_add_plane(struct intel_fbc *fbc, struct intel_plane *plane);  
> void
> intel_fbc_handle_fifo_underrun_irq(struct intel_display *display);  void
> intel_fbc_reset_underrun(struct intel_display *display);
> +unsigned int intel_fbc_preferred_cfb_size(struct intel_display
> +*display);
>  void intel_fbc_crtc_debugfs_add(struct intel_crtc *crtc);  void
> intel_fbc_debugfs_register(struct intel_display *display);
> 
> --
> 2.44.2

Reply via email to