[Intel-gfx] [PATCH 45/55] drm/i915: Convert intel_overlay to request tracking

Chris Wilson chris at chris-wilson.co.uk
Wed Jul 27 08:22:33 UTC 2016


On Wed, Jul 27, 2016 at 11:12:32AM +0300, Joonas Lahtinen wrote:
> On ma, 2016-07-25 at 18:32 +0100, Chris Wilson wrote:
> >  
> > -static int intel_overlay_do_wait_request(struct intel_overlay *overlay,
> > +static void intel_overlay_submit_request(struct intel_overlay *overlay,
> >  					 struct drm_i915_gem_request *req,
> > -					 void (*tail)(struct intel_overlay *))
> > +					 void (*retire)(struct i915_gem_active *,
> > +							struct drm_i915_gem_request *))
> 
> Ugh, not such a beauty. We do not do callback typedefs?

Not often that we actually pass around function pointers.

> > -static void intel_overlay_release_old_vid_tail(struct intel_overlay *overlay)
> > +static void intel_overlay_release_old_vid_tail(struct i915_gem_active *active,
> > +					       struct drm_i915_gem_request *req)
> >  {
> > +	struct intel_overlay *overlay =
> > +		container_of(active, typeof(*overlay), last_flip);
> >  	struct drm_i915_gem_object *obj = overlay->old_vid_bo;
> >  
> > +	i915_gem_track_fb(obj, NULL,
> > +			  INTEL_FRONTBUFFER_OVERLAY(overlay->crtc->pipe));
> > +
> 
> Previously this call was after the below calls and old_vid_bo was
> always NULL, does this fix a bug?

Yes.
https://bugs.freedesktop.org/show_bug.cgi?id=93730
and a recent one.

> >  	i915_gem_object_ggtt_unpin(obj);
> >  	i915_gem_object_put(obj);
> >  
> >  	overlay->old_vid_bo = NULL;
> >  }
> >  
> >
> >  /* Wait for pending overlay flip and release old frame.
> > @@ -452,13 +450,9 @@ static int intel_overlay_release_old_vid(struct intel_overlay *overlay)
> >  						    intel_overlay_release_old_vid_tail);
> >  		if (ret)
> >  			return ret;
> > -	}
> > +	} else
> > +		intel_overlay_release_old_vid_tail(&overlay->last_flip, NULL);
> 
> Why you added else? 

Habit?
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the Intel-gfx mailing list