summaryrefslogtreecommitdiff
path: root/lib/intel_batchbuffer.c
diff options
context:
space:
mode:
authorZbigniew Kempczyński <zbigniew.kempczynski@intel.com>2022-03-04 10:02:00 +0100
committerZbigniew Kempczyński <zbigniew.kempczynski@intel.com>2022-03-07 10:22:45 +0100
commit7f21cd5dca0b575d7cfd1b7303aac65bbfa3f7b9 (patch)
tree5804e7b402636001ea855fac77d9bae704aec785 /lib/intel_batchbuffer.c
parent06de04209b6aa8232694382556a7b3f21103c45c (diff)
lib/intel_batchbuffer: Use safe alignment for intel-bb
Discrete cards can have different memory alignment requirements when objects used in execbuffer comes from different memory regions. Lets use safe alignment which should be fine regardless objects location. v2: ensure passed alignment is power of two (Kamil) Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com> Cc: Ashutosh Dixit <ashutosh.dixit@intel.com> Cc: Kamil Konieczny <kamil.konieczny@linux.intel.com> Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>
Diffstat (limited to 'lib/intel_batchbuffer.c')
-rw-r--r--lib/intel_batchbuffer.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c
index ddb8d8c1..460f5f2b 100644
--- a/lib/intel_batchbuffer.c
+++ b/lib/intel_batchbuffer.c
@@ -1370,7 +1370,7 @@ __intel_bb_create(int i915, uint32_t ctx, uint32_t size, bool do_relocs,
ibb->enforce_relocs = do_relocs;
ibb->handle = gem_create(i915, size);
ibb->size = size;
- ibb->alignment = 4096;
+ ibb->alignment = gem_detect_safe_alignment(i915);
ibb->ctx = ctx;
ibb->vm_id = 0;
ibb->batch = calloc(1, size);
@@ -1925,9 +1925,10 @@ intel_bb_add_object(struct intel_bb *ibb, uint32_t handle, uint64_t size,
igt_assert(INVALID_ADDR(offset) || alignment == 0
|| ALIGN(offset, alignment) == offset);
+ igt_assert(is_power_of_two(alignment));
object = __add_to_cache(ibb, handle);
- alignment = alignment ?: 4096;
+ alignment = max_t(uint64_t, alignment, gem_detect_safe_alignment(ibb->i915));
__add_to_objects(ibb, object);
/*