Skip to content

Commit

Permalink
drm/i915: Fix up map and fenceable for VMA
Browse files Browse the repository at this point in the history
formerly: "drm/i915: Create VMAs (part 3.5) - map and fenceable
tracking"

The map_and_fenceable tracking is per object. GTT mapping, and fences
only apply to global GTT. As such,  object operations which are not
performed on the global GTT should not effect mappable or fenceable
characteristics.

Functionally, this commit could very well be squashed in to a previous
patch which updated object operations to take a VM argument.  This
commit is split out because it's a bit tricky (or at least it was for
me).

Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
[danvet: Drop the bogus hunk in i915_vma_unbind as discussed with
Ben.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
  • Loading branch information
Ben Widawsky authored and Daniel Vetter committed Aug 8, 2013
1 parent 2b4bd0e commit 5cacaac
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions drivers/gpu/drm/i915/i915_gem.c
Original file line number Diff line number Diff line change
Expand Up @@ -2642,7 +2642,8 @@ int i915_vma_unbind(struct i915_vma *vma)

list_del(&obj->mm_list);
/* Avoid an unnecessary call to unbind on rebind. */
obj->map_and_fenceable = true;
if (i915_is_ggtt(vma->vm))
obj->map_and_fenceable = true;

list_del(&vma->vma_link);
drm_mm_remove_node(&vma->node);
Expand Down Expand Up @@ -3203,7 +3204,9 @@ i915_gem_object_bind_to_vm(struct drm_i915_gem_object *obj,
i915_is_ggtt(vm) &&
vma->node.start + obj->base.size <= dev_priv->gtt.mappable_end;

obj->map_and_fenceable = mappable && fenceable;
/* Map and fenceable only changes if the VM is the global GGTT */
if (i915_is_ggtt(vm))
obj->map_and_fenceable = mappable && fenceable;

trace_i915_vma_bind(vma, map_and_fenceable);
i915_gem_verify_gtt(dev);
Expand Down

0 comments on commit 5cacaac

Please sign in to comment.