On Mon, Sep 16, 2013 at 10:44:29PM -0700, Ben Widawsky wrote: > I'm sorry. After reading my comments again, you're absolutely right. > > How's this? I'm liking it better, since it gives some insight into why GLOBAL_BIND is required. > diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c > index 2a71a29..fcf36ae 100644 > --- a/drivers/gpu/drm/i915/i915_gem_gtt.c > +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c > @@ -658,10 +658,17 @@ static void gen6_ggtt_bind_vma(struct i915_vma *vma, > struct drm_i915_gem_object *obj = vma->obj; > const unsigned long entry = vma->node.start >> PAGE_SHIFT; > > - /* If there is an aliasing PPGTT, and the user didn't explicitly ask for > - * the global, just use aliasing */ > + /* If there is no aliasing PPGTT, or the caller needs a global mapping, > + * or we have a global mapping already but the cacheability flags have > + * changed, set the global PTES. > + * > + * If there is an aliasing PPGTT it is anecdotally faster, so use that > + * instead if none of the above hold true. > + * > + * NB: A global mapping should only be needed for special regions like > + * "gtt mappable", SNB errata, or if specified via special execbuf flags + At all other times, the GPU will use the aliasing ppgtt. Just adds that extra bit of stress that the predominant access is through the aliasing ppgtt. -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx