Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7c2e6fdf authored by Daniel Vetter's avatar Daniel Vetter Committed by Chris Wilson
Browse files

drm/i915: move gtt handling to i915_gem_gtt.c



No more drm_*_agp in i915_gem.c!

Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
parent cb16b67b
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -1143,6 +1143,8 @@ void i915_gem_release(struct drm_device * dev, struct drm_file *file_priv);


/* i915_gem_gtt.c */
/* i915_gem_gtt.c */
void i915_gem_restore_gtt_mappings(struct drm_device *dev);
void i915_gem_restore_gtt_mappings(struct drm_device *dev);
int i915_gem_gtt_bind_object(struct drm_gem_object *obj);
void i915_gem_gtt_unbind_object(struct drm_gem_object *obj);


/* i915_gem_evict.c */
/* i915_gem_evict.c */
int i915_gem_evict_something(struct drm_device *dev, int min_size,
int i915_gem_evict_something(struct drm_device *dev, int min_size,
+3 −11
Original line number Original line Diff line number Diff line
@@ -2288,8 +2288,7 @@ i915_gem_object_unbind(struct drm_gem_object *obj)
	if (obj_priv->fence_reg != I915_FENCE_REG_NONE)
	if (obj_priv->fence_reg != I915_FENCE_REG_NONE)
		i915_gem_clear_fence_reg(obj);
		i915_gem_clear_fence_reg(obj);


	drm_unbind_agp(obj_priv->agp_mem);
	i915_gem_gtt_unbind_object(obj);
	drm_free_agp(obj_priv->agp_mem, obj->size / PAGE_SIZE);


	i915_gem_object_put_pages_gtt(obj);
	i915_gem_object_put_pages_gtt(obj);


@@ -2808,15 +2807,8 @@ i915_gem_object_bind_to_gtt(struct drm_gem_object *obj,
		return ret;
		return ret;
	}
	}


	/* Create an AGP memory structure pointing at our pages, and bind it
	ret = i915_gem_gtt_bind_object(obj);
	 * into the GTT.
	if (ret) {
	 */
	obj_priv->agp_mem = drm_agp_bind_pages(dev,
					       obj_priv->pages,
					       obj->size >> PAGE_SHIFT,
					       obj_priv->gtt_space->start,
					       obj_priv->agp_type);
	if (obj_priv->agp_mem == NULL) {
		i915_gem_object_put_pages_gtt(obj);
		i915_gem_object_put_pages_gtt(obj);
		drm_mm_put_block(obj_priv->gtt_space);
		drm_mm_put_block(obj_priv->gtt_space);
		obj_priv->gtt_space = NULL;
		obj_priv->gtt_space = NULL;
+28 −0
Original line number Original line Diff line number Diff line
@@ -47,3 +47,31 @@ void i915_gem_restore_gtt_mappings(struct drm_device *dev)
	/* Be paranoid and flush the chipset cache. */
	/* Be paranoid and flush the chipset cache. */
	intel_gtt_chipset_flush();
	intel_gtt_chipset_flush();
}
}

int i915_gem_gtt_bind_object(struct drm_gem_object *obj)
{
	struct drm_device *dev = obj->dev;
	struct drm_i915_gem_object *obj_priv = to_intel_bo(obj);

	/* Create an AGP memory structure pointing at our pages, and bind it
	 * into the GTT.
	 */
	obj_priv->agp_mem = drm_agp_bind_pages(dev,
					       obj_priv->pages,
					       obj->size >> PAGE_SHIFT,
					       obj_priv->gtt_space->start,
					       obj_priv->agp_type);

	if (obj_priv->agp_mem)
		return 0;
	else
		return -ENOMEM;
}

void i915_gem_gtt_unbind_object(struct drm_gem_object *obj)
{
	struct drm_i915_gem_object *obj_priv = to_intel_bo(obj);

	drm_unbind_agp(obj_priv->agp_mem);
	drm_free_agp(obj_priv->agp_mem, obj->size / PAGE_SIZE);
}