[PATCH i-g-t 2/4] lib/i915/fbc: add fbc frame size check helper
Govindapillai, Vinod
vinod.govindapillai at intel.com
Mon Jun 10 12:05:35 UTC 2024
On Fri, 2024-06-07 at 20:42 +0000, Cavitt, Jonathan wrote:
> -----Original Message-----
> From: igt-dev <igt-dev-bounces at lists.freedesktop.org> On Behalf Of Vinod Govindapillai
> Sent: Friday, June 7, 2024 7:58 AM
> To: igt-dev at lists.freedesktop.org
> Cc: Govindapillai, Vinod <vinod.govindapillai at intel.com>; Heikkila, Juha-pekka
> <juha-pekka.heikkila at intel.com>; Hogander, Jouni <jouni.hogander at intel.com>
> Subject: [PATCH i-g-t 2/4] lib/i915/fbc: add fbc frame size check helper
> >
> > Add a helper function to check maximum plane size fbc can be
> > supported in a display version.
> >
> > Signed-off-by: Vinod Govindapillai <vinod.govindapillai at intel.com>
> > ---
> > lib/i915/intel_fbc.c | 36 ++++++++++++++++++++++++++++++++++++
> > lib/i915/intel_fbc.h | 1 +
> > 2 files changed, 37 insertions(+)
> >
> > diff --git a/lib/i915/intel_fbc.c b/lib/i915/intel_fbc.c
> > index 07ed7f469..992e9c4de 100644
> > --- a/lib/i915/intel_fbc.c
> > +++ b/lib/i915/intel_fbc.c
> > @@ -99,3 +99,39 @@ bool intel_fbc_wait_until_enabled(int device, enum pipe pipe)
> >
> > return enabled;
> > }
> > +
> > +/**
> > + * intel_fbc_plane_size_supported
> > + *
> > + * @fd: fd of the device
> > + * @width: width of the plane
> > + * @height: height of the plane
> > + *
> > + * Checks if the plane size supported for FBC
> > + *
> > + * Returns:
> > + * true if plane size is within the range as per the FBC supported size restrictions per
> > platform
> > + */
> > +bool intel_fbc_plane_size_supported(int fd, uint32_t width, uint32_t height)
> > +{
> > + const uint32_t dev_id = intel_get_drm_devid(fd);
> > + const struct intel_device_info *info = intel_get_device_info(dev_id);
> > + int ver = info->graphics_ver;
> > + unsigned int max_w, max_h;
> > +
> > + if (ver >= 10) {
> > + max_w = 5120;
> > + max_h = 4096;
> > + } else if (ver >= 8 || IS_HASWELL(fd)) {
> > + max_w = 4096;
> > + max_h = 4096;
> > + } else if (IS_G4X(fd) || ver >= 5) {
> > + max_w = 4096;
> > + max_h = 2048;
> > + } else {
> > + max_w = 2048;
> > + max_h = 1536;
> > + }
> > +
> > + return width <= max_w && height <= max_h;
> > +}
>
> It might also be helpful to have a separate function that returns the max fcb
> plane size supported as a raw value in case any tests wanted to operate on the
> full fcb plane. Say:
>
> int intel_fbc_max_plane_size(int device, uint32_t *width, uint32_t *height)
>
> This could store the width and height generated above and be used as a helper
> function for intel_fbc_plane_size_supported. I also don't know if fcb could be
> unsupported at some point, but the int return value could be used for any errors.
Thanks for the good suggestion! I have now updated the patch series. There was a build issue as well
related to another patch in the prev series.
I cant think of a error case when the size check is performed! So right now not returning any error
code! Any FBC support related error scenario should be handled outside of this size check I think.
BR
Vinod
>
> This is just something to consider. I won't block on it:
> Reviewed-by: Jonathan Cavitt <jonathan.cavitt at intel.com>
> -Jonathan Cavitt
>
>
> > diff --git a/lib/i915/intel_fbc.h b/lib/i915/intel_fbc.h
> > index 995dc7f1e..f05b351f6 100644
> > --- a/lib/i915/intel_fbc.h
> > +++ b/lib/i915/intel_fbc.h
> > @@ -14,5 +14,6 @@
> > bool intel_fbc_supported_on_chipset(int device, enum pipe pipe);
> > bool intel_fbc_wait_until_enabled(int device, enum pipe pipe);
> > bool intel_fbc_is_enabled(int device, enum pipe pipe, int log_level);
> > +bool intel_fbc_plane_size_supported(int device, uint32_t width, uint32_t height);
> >
> > #endif
> > --
> > 2.34.1
> >
> >
More information about the igt-dev
mailing list