On Wed, Sep 11, 2013 at 02:57:54PM -0700, Ben Widawsky wrote: > @@ -464,11 +465,12 @@ i915_gem_execbuffer_reserve_vma(struct i915_vma *vma, > struct intel_ring_buffer *ring, > bool *need_reloc) > { > - struct drm_i915_private *dev_priv = ring->dev->dev_private; > + struct drm_i915_gem_object *obj = vma->obj; > struct drm_i915_gem_exec_object2 *entry = vma->exec_entry; > bool has_fenced_gpu_access = INTEL_INFO(ring->dev)->gen < 4; > bool need_fence, need_mappable; > - struct drm_i915_gem_object *obj = vma->obj; > + u32 flags = (entry->flags & EXEC_OBJECT_NEEDS_GTT) && > + !vma->obj->has_global_gtt_mapping ? GLOBAL_BIND : 0; > int ret; > > need_fence = > @@ -497,14 +499,6 @@ i915_gem_execbuffer_reserve_vma(struct i915_vma *vma, > } > } > > - /* Ensure ppgtt mapping exists if needed */ > - if (dev_priv->mm.aliasing_ppgtt && !obj->has_aliasing_ppgtt_mapping) { > - i915_ppgtt_bind_object(dev_priv->mm.aliasing_ppgtt, > - obj, obj->cache_level); > - > - obj->has_aliasing_ppgtt_mapping = 1; > - } > - > if (entry->offset != vma->node.start) { > entry->offset = vma->node.start; > *need_reloc = true; > @@ -515,9 +509,7 @@ i915_gem_execbuffer_reserve_vma(struct i915_vma *vma, > obj->base.pending_write_domain = I915_GEM_DOMAIN_RENDER; > } > > - if (entry->flags & EXEC_OBJECT_NEEDS_GTT && > - !obj->has_global_gtt_mapping) > - i915_gem_gtt_bind_object(obj, obj->cache_level); > + vma->vm->bind_vma(vma, obj->cache_level, flags); This results in us rebinding into the vma unconditionally once/twice for every object on every execbuffer, right? -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx