diff options
author | Zbigniew Kempczyński <zbigniew.kempczynski@intel.com> | 2022-03-04 10:02:00 +0100 |
---|---|---|
committer | Zbigniew Kempczyński <zbigniew.kempczynski@intel.com> | 2022-03-07 10:22:45 +0100 |
commit | 7f21cd5dca0b575d7cfd1b7303aac65bbfa3f7b9 (patch) | |
tree | 5804e7b402636001ea855fac77d9bae704aec785 /lib/intel_batchbuffer.c | |
parent | 06de04209b6aa8232694382556a7b3f21103c45c (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.c | 5 |
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); /* |