[PATCH 14/20] drm/i915/fbc: Introduce intel_fbc_preferred_cfb_size()
Shankar, Uma
uma.shankar at intel.com
Wed Jul 10 08:36:03 UTC 2024
> -----Original Message-----
> From: Intel-xe <intel-xe-bounces at lists.freedesktop.org> On Behalf Of Ville Syrjala
> Sent: Friday, July 5, 2024 8:23 PM
> To: intel-gfx at lists.freedesktop.org
> Cc: intel-xe at lists.freedesktop.org
> Subject: [PATCH 14/20] drm/i915/fbc: Introduce intel_fbc_preferred_cfb_size()
>
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> 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 <uma.shankar at intel.com>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
> 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
More information about the Intel-gfx
mailing list