[PATCH 2/2] intel: Avoid overcounting fences when emitting self-referential relocs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, May 08, 2013 at 04:33:10PM +0100, Chris Wilson wrote:
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>
> ---
>  intel/intel_bufmgr_gem.c |   15 +++++++++------
>  1 file changed, 9 insertions(+), 6 deletions(-)
> 
> diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c
> index 6ebeec9..ccedeab 100644
> --- a/intel/intel_bufmgr_gem.c
> +++ b/intel/intel_bufmgr_gem.c
> @@ -1652,6 +1652,14 @@ do_bo_emit_reloc(drm_intel_bo *bo, uint32_t offset,
>  	assert(offset <= bo->size - 4);
>  	assert((write_domain & (write_domain - 1)) == 0);
>  
> +	/* An object needing a fence is a tiled buffer, so it won't have
> +	 * relocs to other buffers.
> +	 */
> +	if (need_fence) {
> +		assert(target_bo_gem->reloc_count == 0);
> +		target_bo_gem->reloc_tree_fences = 1;
> +	}
> +
>  	/* Make sure that we're not adding a reloc to something whose size has
>  	 * already been accounted for.
>  	 */
> @@ -1659,13 +1667,8 @@ do_bo_emit_reloc(drm_intel_bo *bo, uint32_t offset,
>  	if (target_bo_gem != bo_gem) {
>  		target_bo_gem->used_as_reloc_target = true;
>  		bo_gem->reloc_tree_size += target_bo_gem->reloc_tree_size;
> +		bo_gem->reloc_tree_fences += target_bo_gem->reloc_tree_fences;
>  	}
> -	/* An object needing a fence is a tiled buffer, so it won't have
> -	 * relocs to other buffers.
> -	 */
> -	if (need_fence)
> -		target_bo_gem->reloc_tree_fences = 1;
> -	bo_gem->reloc_tree_fences += target_bo_gem->reloc_tree_fences;
>  
>  	bo_gem->relocs[bo_gem->reloc_count].offset = offset;
>  	bo_gem->relocs[bo_gem->reloc_count].delta = target_offset;
> -- 
> 1.7.10.4
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch


[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux