drm/i915: Create a VMA for an object
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 15 Aug 2016 09:48:48 +0000 (10:48 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Mon, 15 Aug 2016 10:00:55 +0000 (11:00 +0100)
In many places, we wish to store the VMA in preference to the object
itself and so being able to create the persistent VMA is useful.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1471254551-25805-9-git-send-email-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_gem_gtt.c
drivers/gpu/drm/i915/i915_gem_gtt.h

index 9c178b0c40b531775be3e73ac96241758d201773..1bec50bd651b7c102bc76eaae3fc15f9b2263fec 100644 (file)
@@ -3386,6 +3386,17 @@ __i915_gem_vma_create(struct drm_i915_gem_object *obj,
        return vma;
 }
 
+struct i915_vma *
+i915_vma_create(struct drm_i915_gem_object *obj,
+               struct i915_address_space *vm,
+               const struct i915_ggtt_view *view)
+{
+       GEM_BUG_ON(view && !i915_is_ggtt(vm));
+       GEM_BUG_ON(view ? i915_gem_obj_to_ggtt_view(obj, view) : i915_gem_obj_to_vma(obj, vm));
+
+       return __i915_gem_vma_create(obj, vm, view ?: &i915_ggtt_view_normal);
+}
+
 struct i915_vma *
 i915_gem_obj_lookup_or_create_vma(struct drm_i915_gem_object *obj,
                                  struct i915_address_space *vm)
index b580e8a013ce6a2695b9805062d8396c9eade7bc..f2769e01cc8ce5bf23b5c33efc33e8d36e856689 100644 (file)
@@ -228,6 +228,11 @@ struct i915_vma {
        struct drm_i915_gem_exec_object2 *exec_entry;
 };
 
+struct i915_vma *
+i915_vma_create(struct drm_i915_gem_object *obj,
+               struct i915_address_space *vm,
+               const struct i915_ggtt_view *view);
+
 static inline bool i915_vma_is_ggtt(const struct i915_vma *vma)
 {
        return vma->flags & I915_VMA_GGTT;