From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 01/13] drm/i915: Flush the context object from the CPU caches upon creation Date: Fri, 13 Jul 2012 17:54:54 +0200 Message-ID: <20120713155454.GH5721@phenom.ffwll.local> References: <1342185256-16024-1-git-send-email-chris@chris-wilson.co.uk> <1342185256-16024-2-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail-wi0-f171.google.com (mail-wi0-f171.google.com [209.85.212.171]) by gabe.freedesktop.org (Postfix) with ESMTP id 51B28A1144 for ; Fri, 13 Jul 2012 08:54:53 -0700 (PDT) Received: by wibhq4 with SMTP id hq4so557001wib.12 for ; Fri, 13 Jul 2012 08:54:52 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1342185256-16024-2-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org, Ben Widawsky List-Id: intel-gfx@lists.freedesktop.org On Fri, Jul 13, 2012 at 02:14:04PM +0100, Chris Wilson wrote: > Signed-off-by: Chris Wilson > Cc: Ben Widawsky > --- > 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); I think only the first hunk should be part of this patch - the later two hunks make more sense squashed together with the last patch. At least that would avoid me going a bit wtf here and then again on the last patch where the from_obj->dirty=1 gets removed and smashed into move_to_active. Until I've realized what's going on here ;-) -Daniel -- Daniel Vetter Mail: daniel@ffwll.ch Mobile: +41 (0)79 365 57 48