On Fri, Aug 14, 2015 at 06:34:15PM -0300, Paulo Zanoni wrote: > We were considering the whole framebuffer height, but the spec clearly > says that we should only consider the active display height size. > > On my current testing machine, this moves us from 124 successes and > 502 skips to 209 successes and 417 skips on "kms_frontbuffer_tracking > --fbc-only". The high amount of skips is due to the --fbc-only > argument. We had those skips due to not enough stolen memory for the > tests. We're now passing the maximum possible amount: 209. > > Note: when this patch was written, the amount of tests we had for FBC > was different than what we have now. > > Testcase: igt/kms_frontbuffer_tracking/fbc-* > Signed-off-by: Paulo Zanoni <paulo.r.zanoni@xxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_fbc.c | 13 +++++++++---- > 1 file changed, 9 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_fbc.c b/drivers/gpu/drm/i915/intel_fbc.c > index dc84e67..cfd4cba 100644 > --- a/drivers/gpu/drm/i915/intel_fbc.c > +++ b/drivers/gpu/drm/i915/intel_fbc.c > @@ -695,9 +695,15 @@ void intel_fbc_cleanup_cfb(struct drm_i915_private *dev_priv) > mutex_unlock(&dev_priv->fbc.lock); > } > > -static int intel_fbc_setup_cfb(struct drm_i915_private *dev_priv, int size, > - int fb_cpp) > +static int intel_fbc_setup_cfb(struct intel_crtc *crtc) > { > + struct drm_i915_private *dev_priv = crtc->base.dev->dev_private; > + struct drm_framebuffer *fb = crtc->base.primary->fb; > + int size, fb_cpp; > + > + size = crtc->config->pipe_src_h * fb->pitches[0]; > + fb_cpp = drm_format_plane_cpp(fb->pixel_format, 0); > + >From the looks of it SKL ought to be able to use FBC even with a non-fullscreen plane, so this should look up the size from the plane state. What I don't know is whether FBC would still work when plane scaling is enabled. But I suppose it if can, it would deal with the data before scaling, so using the clipped src size would be the right thing here I think. > if (size <= dev_priv->fbc.uncompressed_size) > return 0; > > @@ -844,8 +850,7 @@ static void __intel_fbc_update(struct drm_i915_private *dev_priv) > goto out_disable; > } > > - if (intel_fbc_setup_cfb(dev_priv, obj->base.size, > - drm_format_plane_cpp(fb->pixel_format, 0))) { > + if (intel_fbc_setup_cfb(intel_crtc)) { > set_no_fbc_reason(dev_priv, FBC_STOLEN_TOO_SMALL); > goto out_disable; > } > -- > 2.4.6 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Ville Syrjälä Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx