Re: [PATCH 3/4] drm/i915/fbc: xe2_lpd+ don't require any hardcoded plane width limit

"Govindapillai, Vinod" <[email protected]>
Newsgroups org.freedesktop.lists.intel-gfx,org.freedesktop.lists.intel-xe
Message-ID <[email protected]>
On Tue, 2026-07-21 at 12:47 +0300, Govindapillai, Vinod wrote:
> On Tue, 2026-07-21 at 09:01 +0000, Hogander, Jouni wrote:
> > On Fri, 2026-07-17 at 01:59 +0300, Vinod Govindapillai wrote:
> > > In xe2_lpd+ platforms, there are no restrictions to enable FBC
> > > on planes with respect to the plane width - width can be as per
> > > the platform's maximum supported resolution.
> > 
> > I would stick in display version. Xe2_lpd+ says nothing to me.
> 
> Ok.
> > 
> > > 
> > > Bspec: 69560
> > > Signed-off-by: Vinod Govindapillai
> > > <[email protected]>
> > > ---
> > >  drivers/gpu/drm/i915/display/intel_fbc.c | 9 ++++++++-
> > >  1 file changed, 8 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c
> > > b/drivers/gpu/drm/i915/display/intel_fbc.c
> > > index 78228a5e765f..20f02ef9387a 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_fbc.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
> > > @@ -59,6 +59,7 @@
> > >  #include "intel_fbc_regs.h"
> > >  #include "intel_frontbuffer.h"
> > >  #include "intel_parent.h"
> > > +#include "skl_universal_plane.h"
> > >  
> > >  #define for_each_fbc_id(__display, __fbc_id) \
> > >  	for ((__fbc_id) = INTEL_FBC_A; (__fbc_id) <
> > > I915_MAX_FBCS;
> > > (__fbc_id)++) \
> > > @@ -1319,8 +1320,14 @@ static void intel_fbc_max_plane_size(const
> > > struct intel_plane_state *plane_state
> > >  				     unsigned int *w, unsigned
> > > int
> > > *h)
> > >  {
> > >  	struct intel_display *display =
> > > to_intel_display(plane_state);
> > > +	struct intel_plane *plane = to_intel_plane(plane_state-
> > > > uapi.plane);
> > > +	const struct drm_framebuffer *fb = plane_state->hw.fb;
> > > +	unsigned int rotation = plane_state->hw.rotation;
> > >  
> > > -	if (DISPLAY_VER(display) >= 10) {
> > > +	if (DISPLAY_VER(display) >= 20) {
> > > +		*w = intel_plane_max_width(plane, fb, 0,
> > > rotation);
> > > +		*h = 4096;
> > 
> > Bspec says 4088.
> 
> Yeah. I had the same question. According to HAS, these lines limits
> exists because of number of bits allocated to a factor tracked by the
> hw. 
> 
> And why I kept, the lines as 4096, because of the history of that
> value
> being used in other platforms even though bspec has 4088. This
> specific
> patch is mainly about the horizontal size, FBC can now support up to
> the maximum width a platform supports. The vertical lines restriction
> still holds as in the previous platforms. Historically it has been
> set
> at 4096 in the driver. So I didn't want to change that. My
> assumption,
> why it was kept like that in the driver could be that, this is the
> lines FBC can compress, beyond that lines wont be compressed but

well-- I just noticed a mistake in my response... FBC can compress only
2560 lines. Beyond that lines remain uncompressed but FBC is still
useful for width*2560 part.

> still
> FBC is useful. Otherwise we might be refusing to enable FBC in
> commonly
> used modes. Basically I just stick to the historic value being used.
> 
> BR
> Vinod 
> 
> > 
> > BR,
> > Jouni Högander
> > 
> > > +	} else if (DISPLAY_VER(display) >= 10) {
> > >  		*w = 5120;
> > >  		*h = 4096;
> > >  	} else if (DISPLAY_VER(display) >= 8 || display-
> > > > platform.haswell) {
> > 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.