[igt-dev] [PATCH i-g-t 2/7] lib/intel_batchbuffer: Detect and use kernel alignment capability

Dixit, Ashutosh ashutosh.dixit at intel.com
Thu Oct 14 02:37:22 UTC 2021


On Thu, 07 Oct 2021 23:54:27 -0700, Zbigniew Kempczyński wrote:
>
> diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c
> index 9c26fe207..ed7c25015 100644
> --- a/lib/intel_batchbuffer.c
> +++ b/lib/intel_batchbuffer.c
> @@ -1335,6 +1335,7 @@ __intel_bb_create(int i915, uint32_t ctx, uint32_t size, bool do_relocs,
>
>	igt_assert(ibb);
>
> +	ibb->allows_passing_alignment = gem_allows_passing_alignment(i915);
>	ibb->uses_full_ppgtt = gem_uses_full_ppgtt(i915);
>	ibb->devid = intel_get_drm_devid(i915);
>	ibb->gen = intel_gen(ibb->devid);
> @@ -1783,6 +1784,7 @@ __add_to_cache(struct intel_bb *ibb, uint32_t handle)
>	igt_assert(object);
>
>	object->handle = handle;
> +	object->alignment = 0;
>	found = tsearch((void *) object, &ibb->root, __compare_objects);
>
>	if (*found == object) {
> @@ -1905,7 +1907,7 @@ intel_bb_add_object(struct intel_bb *ibb, uint32_t handle, uint64_t size,
>		   || ALIGN(offset, alignment) == offset);
>
>	object = __add_to_cache(ibb, handle);
> -	object->alignment = alignment ?: 4096;
> +	alignment = alignment ?: 4096;

Can't we do:
	if (ibb->allows_passing_alignment)
		object->alignment = alignment ?: 4096;
So we don't need further changes in this function? Or it breaks something?

>	__add_to_objects(ibb, object);
>
>	/*
> @@ -1917,7 +1919,7 @@ intel_bb_add_object(struct intel_bb *ibb, uint32_t handle, uint64_t size,
>	if (INVALID_ADDR(object->offset)) {
>		if (INVALID_ADDR(offset)) {
>			offset = __intel_bb_get_offset(ibb, handle, size,
> -						       object->alignment);
> +						       alignment);
>		} else {
>			offset = offset & (ibb->gtt_size - 1);
>
> @@ -1962,6 +1964,9 @@ intel_bb_add_object(struct intel_bb *ibb, uint32_t handle, uint64_t size,
>	if (ibb->uses_full_ppgtt && !ibb->enforce_relocs)
>		object->flags |= EXEC_OBJECT_PINNED;
>
> +	if (ibb->allows_passing_alignment)
> +		object->alignment = alignment;
> +
>	return object;
>  }


More information about the igt-dev mailing list