On Fri, 13 Jul 2012 14:14:04 +0100 Chris Wilson <chris at chris-wilson.co.uk> wrote: > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk> > Cc: Ben Widawsky <ben at bwidawsk.net> I guess setting the read_domains is now superfluous. Reviewed-by: Ben Widawsky <ben at bwidawsk.net> > --- > drivers/gpu/drm/i915/i915_gem_context.c | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c > index 9ae3f2c..90857f8 100644 > --- a/drivers/gpu/drm/i915/i915_gem_context.c > +++ b/drivers/gpu/drm/i915/i915_gem_context.c > @@ -225,6 +225,13 @@ static int create_default_context(struct drm_i915_private *dev_priv) > return ret; > } > > + ret = i915_gem_object_set_to_gtt_domain(ctx->obj, true); > + if (ret) { > + i915_gem_object_unpin(ctx->obj); > + do_destroy(ctx); > + return ret; > + } > + > ret = do_switch(NULL, ctx, 0); > if (ret) { > i915_gem_object_unpin(ctx->obj); > @@ -396,8 +403,6 @@ static int do_switch(struct drm_i915_gem_object *from_obj, > * MI_SET_CONTEXT instead of when the next seqno has completed. > */ > if (from_obj != NULL) { > - from_obj->base.read_domains = I915_GEM_DOMAIN_INSTRUCTION; > - i915_gem_object_move_to_active(from_obj, ring, seqno); > /* As long as MI_SET_CONTEXT is serializing, ie. it flushes the > * whole damn pipeline, we don't need to explicitly mark the > * object dirty. The only exception is that the context must be > @@ -405,6 +410,9 @@ static int do_switch(struct drm_i915_gem_object *from_obj, > * able to defer doing this until we know the object would be > * swapped, but there is no way to do that yet. > */ > + from_obj->base.write_domain = I915_GEM_DOMAIN_INSTRUCTION; > + from_obj->base.read_domains = I915_GEM_DOMAIN_INSTRUCTION; > + i915_gem_object_move_to_active(from_obj, ring, seqno); > from_obj->dirty = 1; > BUG_ON(from_obj->ring != to->ring); > i915_gem_object_unpin(from_obj); -- Ben Widawsky, Intel Open Source Technology Center