[Intel-gfx] [PATCH 1/2] drm/i915: Only mark as map-and-fenceable when bound into the GGTT

Daniel Vetter daniel at ffwll.ch
Mon Nov 3 16:17:57 CET 2014


On Fri, Oct 31, 2014 at 01:53:52PM +0000, Chris Wilson wrote:
> @@ -4091,6 +4078,7 @@ i915_gem_object_pin(struct drm_i915_gem_object *obj,
>  		}
>  	}
>  
> +	bound = vma ? vma->bound : 0;
>  	if (vma == NULL || !drm_mm_node_allocated(&vma->node)) {
>  		vma = i915_gem_object_bind_to_vm(obj, vm, alignment, flags);
>  		if (IS_ERR(vma))
> @@ -4100,6 +4088,29 @@ i915_gem_object_pin(struct drm_i915_gem_object *obj,
>  	if (flags & PIN_GLOBAL && !(vma->bound & GLOBAL_BIND))
>  		vma->bind_vma(vma, obj->cache_level, GLOBAL_BIND);
>  
> +	if ((bound ^ vma->bound) & GLOBAL_BIND) {

Shouldn't we have a && i915_is_ggtt(vma->vm) check here too?

Then we could just look at the vma's drm_mm node instead of jumping
through the helpers here. Which gets us one inch closer to tracking
mappable in the ggtt vma, without increasing the diff ;-)
-Daniel

> +		bool mappable, fenceable;
> +		u32 fence_size, fence_alignment;
> +
> +		fence_size = i915_gem_get_gtt_size(obj->base.dev,
> +						   obj->base.size,
> +						   obj->tiling_mode);
> +		fence_alignment = i915_gem_get_gtt_alignment(obj->base.dev,
> +							     obj->base.size,
> +							     obj->tiling_mode,
> +							     true);
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch



More information about the Intel-gfx mailing list