[Intel-gfx] [PATCH 3/4] drm/i915: Cleanup handling of last_fenced_seqno

Chris Wilson chris at chris-wilson.co.uk
Sun Mar 20 00:09:49 CET 2011


On Sat, 19 Mar 2011 23:55:11 +0100, Daniel Vetter <daniel at ffwll.ch> wrote:
> A few nitpicks below.
> 
> > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> > index 5201f82..2dbf8f7 100644
> > --- a/drivers/gpu/drm/i915/i915_gem.c
> > +++ b/drivers/gpu/drm/i915/i915_gem.c
> > @@ -2461,13 +2461,15 @@ i915_gem_object_flush_fence(struct drm_i915_gem_object *obj,
> >  		obj->fenced_gpu_access = false;
> >  	}
> >  
> > +	if (obj->last_fenced_seqno &&
> > +	    ring_passed_seqno(obj->ring, obj->last_fenced_seqno))
> > +		obj->last_fenced_seqno = 0;
> 
> This only avoids running the request retiring logic. Without this there are a
> few more things to simplify, I think:

Not strictly. We only do i915_wait_request() if changing rings, yet we
want to check if the object has any outstanding fences for an
optimisation later (writing the fence register immediately whenever
possible).
 
> >  	if (obj->last_fenced_seqno && pipelined != obj->ring) {
> > -		if (!ring_passed_seqno(obj->ring, obj->last_fenced_seqno)) {
> > -			ret = i915_wait_request(obj->ring,
> > -						obj->last_fenced_seqno);
> > -			if (ret)
> > -				return ret;
> > -		}
> > +		ret = i915_wait_request(obj->ring,
> > +					obj->last_fenced_seqno);
> > +		if (ret)
> > +			return ret;
> >  
> >  		obj->last_fenced_seqno = 0;
> 
> Can't we move that (and the other copies) to move_off_active?

No, because the obj may remain active even after the wait.

> 
> > @@ -2648,15 +2650,18 @@ i915_gem_object_get_fence(struct drm_i915_gem_object *obj,
> >  						       old->last_fenced_seqno);
> >  		}
> 
> Above here is the imo unnecessary clause mentioned in a previous patch.

ECONTEXT?
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre



More information about the Intel-gfx mailing list