diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gpgpu_fill.c | 6 | ||||
-rw-r--r-- | lib/igt_draw.c | 5 | ||||
-rw-r--r-- | lib/igt_fb.c | 2 | ||||
-rw-r--r-- | lib/intel_batchbuffer.c | 205 | ||||
-rw-r--r-- | lib/intel_batchbuffer.h | 18 | ||||
-rw-r--r-- | lib/media_fill.c | 17 | ||||
-rw-r--r-- | lib/media_spin.c | 4 | ||||
-rw-r--r-- | lib/rendercopy.h | 9 | ||||
-rw-r--r-- | lib/rendercopy_gen4.c | 8 | ||||
-rw-r--r-- | lib/rendercopy_gen6.c | 8 | ||||
-rw-r--r-- | lib/rendercopy_gen7.c | 8 | ||||
-rw-r--r-- | lib/rendercopy_gen8.c | 8 | ||||
-rw-r--r-- | lib/rendercopy_gen9.c | 17 | ||||
-rw-r--r-- | lib/rendercopy_i830.c | 3 | ||||
-rw-r--r-- | lib/rendercopy_i915.c | 3 | ||||
-rw-r--r-- | lib/veboxcopy_gen12.c | 7 |
16 files changed, 149 insertions, 179 deletions
diff --git a/lib/gpgpu_fill.c b/lib/gpgpu_fill.c index aa2ffa8d0..0f031a524 100644 --- a/lib/gpgpu_fill.c +++ b/lib/gpgpu_fill.c @@ -140,7 +140,7 @@ gen7_gpgpu_fillfunc(int i915, uint32_t curbe_buffer, interface_descriptor; ibb = intel_bb_create(i915, PAGE_SIZE); - intel_bb_add_object(ibb, buf->handle, 0, true); + intel_bb_add_intel_buf(ibb, buf, true); intel_bb_ptr_set(ibb, BATCH_STATE_SPLIT); @@ -190,7 +190,7 @@ gen8_gpgpu_fillfunc(int i915, uint32_t curbe_buffer, interface_descriptor; ibb = intel_bb_create(i915, PAGE_SIZE); - intel_bb_add_object(ibb, buf->handle, 0, true); + intel_bb_add_intel_buf(ibb, buf, true); intel_bb_ptr_set(ibb, BATCH_STATE_SPLIT); @@ -239,7 +239,7 @@ __gen9_gpgpu_fillfunc(int i915, uint32_t curbe_buffer, interface_descriptor; ibb = intel_bb_create(i915, PAGE_SIZE); - intel_bb_add_object(ibb, buf->handle, 0, true); + intel_bb_add_intel_buf(ibb, buf, true); intel_bb_ptr_set(ibb, BATCH_STATE_SPLIT); diff --git a/lib/igt_draw.c b/lib/igt_draw.c index 7a30340f3..353467a2d 100644 --- a/lib/igt_draw.c +++ b/lib/igt_draw.c @@ -601,10 +601,9 @@ static void draw_rect_render(int fd, struct cmd_data *cmd_data, src = create_buf(fd, cmd_data->bops, &tmp, I915_TILING_NONE); dst = create_buf(fd, cmd_data->bops, buf, tiling); - ibb = intel_bb_create(fd, PAGE_SIZE); + ibb = intel_bb_create_with_context(fd, cmd_data->ctx, PAGE_SIZE); - rendercopy(ibb, cmd_data->ctx, src, 0, 0, rect->w, - rect->h, dst, rect->x, rect->y); + rendercopy(ibb, src, 0, 0, rect->w, rect->h, dst, rect->x, rect->y); intel_bb_destroy(ibb); intel_buf_destroy(src); diff --git a/lib/igt_fb.c b/lib/igt_fb.c index 6c5fe8932..43f8c4759 100644 --- a/lib/igt_fb.c +++ b/lib/igt_fb.c @@ -2267,7 +2267,7 @@ static void copy_with_engine(struct fb_blit_upload *blit, dst_fb->plane_width[0], dst_fb->plane_height[0], dst); else - render_copy(blit->ibb, 0, + render_copy(blit->ibb, src, 0, 0, dst_fb->plane_width[0], dst_fb->plane_height[0], diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c index be764646e..60dbfe261 100644 --- a/lib/intel_batchbuffer.c +++ b/lib/intel_batchbuffer.c @@ -1220,7 +1220,10 @@ static uint64_t gen8_canonical_addr(uint64_t address) return (int64_t)(address << shift) >> shift; } -static inline uint64_t __intel_bb_propose_offset(struct intel_bb *ibb) +static inline uint64_t __intel_bb_get_offset(struct intel_bb *ibb, + uint32_t handle, + uint32_t size, + uint32_t alignment) { uint64_t offset; @@ -1247,7 +1250,7 @@ static inline uint64_t __intel_bb_propose_offset(struct intel_bb *ibb) * Pointer the intel_bb, asserts on failure. */ static struct intel_bb * -__intel_bb_create(int i915, uint32_t size, bool do_relocs) +__intel_bb_create(int i915, uint32_t ctx, uint32_t size, bool do_relocs) { struct intel_bb *ibb = calloc(1, sizeof(*ibb)); uint64_t gtt_size; @@ -1261,6 +1264,7 @@ __intel_bb_create(int i915, uint32_t size, bool do_relocs) ibb->handle = gem_create(i915, size); ibb->size = size; ibb->alignment = 4096; + ibb->ctx = ctx; ibb->batch = calloc(1, size); igt_assert(ibb->batch); ibb->ptr = ibb->batch; @@ -1287,8 +1291,12 @@ __intel_bb_create(int i915, uint32_t size, bool do_relocs) } ibb->gtt_size = gtt_size; - ibb->batch_offset = __intel_bb_propose_offset(ibb); - intel_bb_add_object(ibb, ibb->handle, ibb->batch_offset, false); + ibb->batch_offset = __intel_bb_get_offset(ibb, + ibb->handle, + ibb->size, + ibb->alignment); + intel_bb_add_object(ibb, ibb->handle, ibb->size, + ibb->batch_offset, false); ibb->refcount = 1; @@ -1300,13 +1308,33 @@ __intel_bb_create(int i915, uint32_t size, bool do_relocs) * @i915: drm fd * @size: size of the batchbuffer * + * Creates bb with default context. + * * Returns: * * Pointer the intel_bb, asserts on failure. */ struct intel_bb *intel_bb_create(int i915, uint32_t size) { - return __intel_bb_create(i915, size, false); + return __intel_bb_create(i915, 0, size, false); +} + +/** + * intel_bb_create_with_context: + * @i915: drm fd + * @ctx: context + * @size: size of the batchbuffer + * + * Creates bb with context passed in @ctx. + * + * Returns: + * + * Pointer the intel_bb, asserts on failure. + */ +struct intel_bb * +intel_bb_create_with_context(int i915, uint32_t ctx, uint32_t size) +{ + return __intel_bb_create(i915, ctx, size, false); } /** @@ -1314,8 +1342,8 @@ struct intel_bb *intel_bb_create(int i915, uint32_t size) * @i915: drm fd * @size: size of the batchbuffer * - * Disable passing or randomizing addresses. This will lead to relocations - * when objects are not previously pinned. + * Creates bb which will disable passing addresses. + * This will lead to relocations when objects are not previously pinned. * * Returns: * @@ -1323,7 +1351,26 @@ struct intel_bb *intel_bb_create(int i915, uint32_t size) */ struct intel_bb *intel_bb_create_with_relocs(int i915, uint32_t size) { - return __intel_bb_create(i915, size, true); + return __intel_bb_create(i915, 0, size, true); +} + +/** + * intel_bb_create_with_relocs_and_context: + * @i915: drm fd + * @ctx: context + * @size: size of the batchbuffer + * + * Creates bb with default context which will disable passing addresses. + * This will lead to relocations when objects are not previously pinned. + * + * Returns: + * + * Pointer the intel_bb, asserts on failure. + */ +struct intel_bb * +intel_bb_create_with_relocs_and_context(int i915, uint32_t ctx, uint32_t size) +{ + return __intel_bb_create(i915, ctx, size, true); } static void __intel_bb_destroy_relocations(struct intel_bb *ibb) @@ -1418,19 +1465,26 @@ void intel_bb_reset(struct intel_bb *ibb, bool purge_objects_cache) if (purge_objects_cache) { __intel_bb_destroy_cache(ibb); - ibb->batch_offset = __intel_bb_propose_offset(ibb); + ibb->batch_offset = __intel_bb_get_offset(ibb, + ibb->handle, + ibb->size, + ibb->alignment); } else { struct drm_i915_gem_exec_object2 *object; object = intel_bb_find_object(ibb, ibb->handle); ibb->batch_offset = object ? object->offset : - __intel_bb_propose_offset(ibb); + __intel_bb_get_offset(ibb, + ibb->handle, + ibb->size, + ibb->alignment); } gem_close(ibb->i915, ibb->handle); ibb->handle = gem_create(ibb->i915, ibb->size); - intel_bb_add_object(ibb, ibb->handle, ibb->batch_offset, false); + intel_bb_add_object(ibb, ibb->handle, ibb->size, + ibb->batch_offset, false); ibb->ptr = ibb->batch; memset(ibb->batch, 0, ibb->size); } @@ -1580,6 +1634,7 @@ static void __add_to_objects(struct intel_bb *ibb, * intel_bb_add_object: * @ibb: pointer to intel_bb * @handle: which handle to add to objects array + * @size: object size * @offset: presumed offset of the object when no relocation is enforced * @write: does a handle is a render target * @@ -1588,7 +1643,7 @@ static void __add_to_objects(struct intel_bb *ibb, * be marked with EXEC_OBJECT_WRITE flag. */ struct drm_i915_gem_exec_object2 * -intel_bb_add_object(struct intel_bb *ibb, uint32_t handle, +intel_bb_add_object(struct intel_bb *ibb, uint32_t handle, uint32_t size, uint64_t offset, bool write) { struct drm_i915_gem_exec_object2 *object; @@ -1602,7 +1657,9 @@ intel_bb_add_object(struct intel_bb *ibb, uint32_t handle, object->offset = gen8_canonical_addr(offset & (ibb->gtt_size - 1)); if (object->offset == INTEL_BUF_INVALID_ADDRESS) - object->offset = __intel_bb_propose_offset(ibb); + object->offset = __intel_bb_get_offset(ibb, + handle, size, + object->alignment); if (write) object->flags |= EXEC_OBJECT_WRITE; @@ -1618,7 +1675,9 @@ intel_bb_add_intel_buf(struct intel_bb *ibb, struct intel_buf *buf, bool write) { struct drm_i915_gem_exec_object2 *obj; - obj = intel_bb_add_object(ibb, buf->handle, buf->addr.offset, write); + obj = intel_bb_add_object(ibb, buf->handle, + intel_buf_bo_size(buf), + buf->addr.offset, write); /* For compressed surfaces ensure address is aligned to 64KB */ if (ibb->gen >= 12 && buf->compression) { @@ -1720,7 +1779,13 @@ static uint64_t intel_bb_add_reloc(struct intel_bb *ibb, struct drm_i915_gem_exec_object2 *object, *to_object; uint32_t i; - object = intel_bb_add_object(ibb, handle, presumed_offset, false); + if (ibb->enforce_relocs) { + object = intel_bb_add_object(ibb, handle, 0, + presumed_offset, false); + } else { + object = intel_bb_find_object(ibb, handle); + igt_assert(object); + } /* For ibb we have relocs allocated in chunks */ if (to_handle == ibb->handle) { @@ -2030,7 +2095,6 @@ static void update_offsets(struct intel_bb *ibb, * @ibb: pointer to intel_bb * @end_offset: offset of the last instruction in the bb * @flags: flags passed directly to execbuf - * @ctx: context * @sync: if true wait for execbuf completion, otherwise caller is responsible * to wait for completion * @@ -2039,8 +2103,8 @@ static void update_offsets(struct intel_bb *ibb, * Note: In this step execobj for bb is allocated and inserted to the objects * array. */ -int __intel_bb_exec(struct intel_bb *ibb, uint32_t end_offset, - uint32_t ctx, uint64_t flags, bool sync) +static int __intel_bb_exec(struct intel_bb *ibb, uint32_t end_offset, + uint64_t flags, bool sync) { struct drm_i915_gem_execbuffer2 execbuf; struct drm_i915_gem_exec_object2 *objects; @@ -2057,7 +2121,7 @@ int __intel_bb_exec(struct intel_bb *ibb, uint32_t end_offset, execbuf.buffers_ptr = (uintptr_t) objects; execbuf.buffer_count = ibb->num_objects; execbuf.batch_len = end_offset; - execbuf.rsvd1 = ibb->ctx = ctx; + execbuf.rsvd1 = ibb->ctx; execbuf.flags = flags | I915_EXEC_BATCH_FIRST | I915_EXEC_FENCE_OUT; if (ibb->enforce_relocs) execbuf.flags &= ~I915_EXEC_NO_RELOC; @@ -2112,29 +2176,12 @@ int __intel_bb_exec(struct intel_bb *ibb, uint32_t end_offset, * @sync: if true wait for execbuf completion, otherwise caller is responsible * to wait for completion * - * Do execbuf with default context. Asserts on failure. + * Do execbuf on context selected during bb creation. Asserts on failure. */ void intel_bb_exec(struct intel_bb *ibb, uint32_t end_offset, uint64_t flags, bool sync) { - igt_assert_eq(__intel_bb_exec(ibb, end_offset, 0, flags, sync), 0); -} - -/* - * intel_bb_exec_with_context: - * @ibb: pointer to intel_bb - * @end_offset: offset of the last instruction in the bb - * @flags: flags passed directly to execbuf - * @ctx: context - * @sync: if true wait for execbuf completion, otherwise caller is responsible - * to wait for completion - * - * Do execbuf with context @context. -*/ -void intel_bb_exec_with_context(struct intel_bb *ibb, uint32_t end_offset, - uint32_t ctx, uint64_t flags, bool sync) -{ - igt_assert_eq(__intel_bb_exec(ibb, end_offset, ctx, flags, sync), 0); + igt_assert_eq(__intel_bb_exec(ibb, end_offset, flags, sync), 0); } /** @@ -2185,7 +2232,7 @@ bool intel_bb_object_offset_to_buf(struct intel_bb *ibb, struct intel_buf *buf) found = tfind((void *)&object, &ibb->root, __compare_objects); if (!found) { buf->addr.offset = 0; - buf->addr.ctx = 0; + buf->addr.ctx = ibb->ctx; return false; } @@ -2242,41 +2289,27 @@ uint32_t intel_bb_emit_flush_common(struct intel_bb *ibb) return intel_bb_offset(ibb); } -static void intel_bb_exec_with_context_ring(struct intel_bb *ibb, - uint32_t ctx, uint32_t ring) +static void intel_bb_exec_with_ring(struct intel_bb *ibb,uint32_t ring) { - intel_bb_exec_with_context(ibb, intel_bb_offset(ibb), ctx, - ring | I915_EXEC_NO_RELOC, - false); + intel_bb_exec(ibb, intel_bb_offset(ibb), + ring | I915_EXEC_NO_RELOC, false); intel_bb_reset(ibb, false); } /* * intel_bb_flush: * @ibb: batchbuffer - * @ctx: context * @ring: ring * - * If batch is not empty emit batch buffer end, execute on specified - * context, ring then reset the batch. + * If batch is not empty emit batch buffer end, execute on ring, + * then reset the batch. */ -void intel_bb_flush(struct intel_bb *ibb, uint32_t ctx, uint32_t ring) +void intel_bb_flush(struct intel_bb *ibb, uint32_t ring) { if (intel_bb_emit_flush_common(ibb) == 0) return; - intel_bb_exec_with_context_ring(ibb, ctx, ring); -} - -static void __intel_bb_flush_render_with_context(struct intel_bb *ibb, - uint32_t ctx) -{ - uint32_t ring = I915_EXEC_RENDER; - - if (intel_bb_emit_flush_common(ibb) == 0) - return; - - intel_bb_exec_with_context_ring(ibb, ctx, ring); + intel_bb_exec_with_ring(ibb, ring); } /* @@ -2284,39 +2317,14 @@ static void __intel_bb_flush_render_with_context(struct intel_bb *ibb, * @ibb: batchbuffer * * If batch is not empty emit batch buffer end, execute on render ring - * and reset the batch. - * Context used to execute is previous batch context. + * and reset the batch. Context used to execute is batch context. */ void intel_bb_flush_render(struct intel_bb *ibb) { - __intel_bb_flush_render_with_context(ibb, ibb->ctx); -} - -/* - * intel_bb_flush_render_with_context: - * @ibb: batchbuffer - * @ctx: context - * - * If batch is not empty emit batch buffer end, execute on render ring with @ctx - * and reset the batch. - */ -void intel_bb_flush_render_with_context(struct intel_bb *ibb, uint32_t ctx) -{ - __intel_bb_flush_render_with_context(ibb, ctx); -} - -static void __intel_bb_flush_blit_with_context(struct intel_bb *ibb, - uint32_t ctx) -{ - uint32_t ring = I915_EXEC_DEFAULT; - if (intel_bb_emit_flush_common(ibb) == 0) return; - if (HAS_BLT_RING(ibb->devid)) - ring = I915_EXEC_BLT; - - intel_bb_exec_with_context_ring(ibb, ctx, ring); + intel_bb_exec_with_ring(ibb, I915_EXEC_RENDER); } /* @@ -2325,24 +2333,19 @@ static void __intel_bb_flush_blit_with_context(struct intel_bb *ibb, * * If batch is not empty emit batch buffer end, execute on default/blit ring * (depends on gen) and reset the batch. - * Context used to execute is previous batch context. + * Context used to execute is batch context. */ void intel_bb_flush_blit(struct intel_bb *ibb) { - __intel_bb_flush_blit_with_context(ibb, ibb->ctx); -} + uint32_t ring = I915_EXEC_DEFAULT; -/* - * intel_bb_flush_blit_with_context: - * @ibb: batchbuffer - * @ctx: context - * - * If batch is not empty emit batch buffer end, execute on default/blit ring - * (depends on gen) with @ctx and reset the batch. - */ -void intel_bb_flush_blit_with_context(struct intel_bb *ibb, uint32_t ctx) -{ - __intel_bb_flush_blit_with_context(ibb, ctx); + if (intel_bb_emit_flush_common(ibb) == 0) + return; + + if (HAS_BLT_RING(ibb->devid)) + ring = I915_EXEC_BLT; + + intel_bb_exec_with_ring(ibb, ring); } /* diff --git a/lib/intel_batchbuffer.h b/lib/intel_batchbuffer.h index 8b9c1ed93..d20b4e66a 100644 --- a/lib/intel_batchbuffer.h +++ b/lib/intel_batchbuffer.h @@ -341,7 +341,6 @@ struct intel_bb; struct intel_buf; typedef void (*igt_render_copyfunc_t)(struct intel_bb *ibb, - uint32_t ctx, struct intel_buf *src, uint32_t src_x, uint32_t src_y, uint32_t width, uint32_t height, @@ -478,7 +477,11 @@ struct intel_bb { }; struct intel_bb *intel_bb_create(int i915, uint32_t size); +struct intel_bb * +intel_bb_create_with_context(int i915, uint32_t ctx, uint32_t size); struct intel_bb *intel_bb_create_with_relocs(int i915, uint32_t size); +struct intel_bb * +intel_bb_create_with_relocs_and_context(int i915, uint32_t ctx, uint32_t size); void intel_bb_destroy(struct intel_bb *ibb); static inline void intel_bb_ref(struct intel_bb *ibb) @@ -562,9 +565,8 @@ static inline void intel_bb_out(struct intel_bb *ibb, uint32_t dword) igt_assert(intel_bb_offset(ibb) <= ibb->size); } - struct drm_i915_gem_exec_object2 * -intel_bb_add_object(struct intel_bb *ibb, uint32_t handle, +intel_bb_add_object(struct intel_bb *ibb, uint32_t handle, uint32_t size, uint64_t offset, bool write); struct drm_i915_gem_exec_object2 * intel_bb_add_intel_buf(struct intel_bb *ibb, struct intel_buf *buf, bool write); @@ -615,25 +617,17 @@ uint64_t intel_bb_offset_reloc_to_object(struct intel_bb *ibb, uint32_t offset, uint64_t presumed_offset); -int __intel_bb_exec(struct intel_bb *ibb, uint32_t end_offset, - uint32_t ctx, uint64_t flags, bool sync); - void intel_bb_exec(struct intel_bb *ibb, uint32_t end_offset, uint64_t flags, bool sync); -void intel_bb_exec_with_context(struct intel_bb *ibb, uint32_t end_offset, - uint32_t ctx, uint64_t flags, bool sync); - uint64_t intel_bb_get_object_offset(struct intel_bb *ibb, uint32_t handle); bool intel_bb_object_offset_to_buf(struct intel_bb *ibb, struct intel_buf *buf); uint32_t intel_bb_emit_bbe(struct intel_bb *ibb); uint32_t intel_bb_emit_flush_common(struct intel_bb *ibb); -void intel_bb_flush(struct intel_bb *ibb, uint32_t ctx, uint32_t ring); +void intel_bb_flush(struct intel_bb *ibb, uint32_t ring); void intel_bb_flush_render(struct intel_bb *ibb); -void intel_bb_flush_render_with_context(struct intel_bb *ibb, uint32_t ctx); void intel_bb_flush_blit(struct intel_bb *ibb); -void intel_bb_flush_blit_with_context(struct intel_bb *ibb, uint32_t ctx); uint32_t intel_bb_copy_data(struct intel_bb *ibb, const void *data, unsigned int bytes, diff --git a/lib/media_fill.c b/lib/media_fill.c index c21de54bb..8e4da4ec6 100644 --- a/lib/media_fill.c +++ b/lib/media_fill.c @@ -155,7 +155,7 @@ gen7_media_fillfunc(int i915, uint32_t curbe_buffer, interface_descriptor; ibb = intel_bb_create(i915, PAGE_SIZE); - intel_bb_add_object(ibb, buf->handle, 0, true); + intel_bb_add_intel_buf(ibb, buf, true); intel_bb_ptr_set(ibb, BATCH_STATE_SPLIT); @@ -198,7 +198,7 @@ gen8_media_fillfunc(int i915, uint32_t curbe_buffer, interface_descriptor; ibb = intel_bb_create(i915, PAGE_SIZE); - intel_bb_add_object(ibb, buf->handle, 0, true); + intel_bb_add_intel_buf(ibb, buf, true); intel_bb_ptr_set(ibb, BATCH_STATE_SPLIT); @@ -242,7 +242,7 @@ __gen9_media_fillfunc(int i915, uint32_t curbe_buffer, interface_descriptor; ibb = intel_bb_create(i915, PAGE_SIZE); - intel_bb_add_object(ibb, buf->handle, 0, true); + intel_bb_add_intel_buf(ibb, buf, true); /* setup states */ intel_bb_ptr_set(ibb, BATCH_STATE_SPLIT); @@ -310,9 +310,9 @@ __gen11_media_vme_func(int i915, struct intel_bb *ibb; uint32_t curbe_buffer, interface_descriptor; - ibb = intel_bb_create(i915, PAGE_SIZE); - intel_bb_add_object(ibb, dst->handle, 0, true); - intel_bb_add_object(ibb, src->handle, 0, false); + ibb = intel_bb_create_with_context(i915, ctx, PAGE_SIZE); + intel_bb_add_intel_buf(ibb, dst, true); + intel_bb_add_intel_buf(ibb, src, false); /* setup states */ intel_bb_ptr_set(ibb, BATCH_STATE_SPLIT); @@ -351,9 +351,8 @@ __gen11_media_vme_func(int i915, intel_bb_out(ibb, MI_BATCH_BUFFER_END); intel_bb_ptr_align(ibb, 32); - intel_bb_exec_with_context(ibb, intel_bb_offset(ibb), ctx, - I915_EXEC_DEFAULT | I915_EXEC_NO_RELOC, - false); + intel_bb_exec(ibb, intel_bb_offset(ibb), + I915_EXEC_DEFAULT | I915_EXEC_NO_RELOC, false); intel_bb_destroy(ibb); } diff --git a/lib/media_spin.c b/lib/media_spin.c index 6e81a13d2..5da469a52 100644 --- a/lib/media_spin.c +++ b/lib/media_spin.c @@ -102,7 +102,7 @@ gen8_media_spinfunc(int i915, struct intel_buf *buf, uint32_t spins) uint32_t curbe_buffer, interface_descriptor; ibb = intel_bb_create(i915, PAGE_SIZE); - intel_bb_add_object(ibb, buf->handle, 0, true); + intel_bb_add_intel_buf(ibb, buf, true); /* setup states */ intel_bb_ptr_set(ibb, BATCH_STATE_SPLIT); @@ -143,7 +143,7 @@ gen9_media_spinfunc(int i915, struct intel_buf *buf, uint32_t spins) uint32_t curbe_buffer, interface_descriptor; ibb = intel_bb_create(i915, PAGE_SIZE); - intel_bb_add_object(ibb, buf->handle, 0, true); + intel_bb_add_intel_buf(ibb, buf, true); /* setup states */ intel_bb_ptr_set(ibb, BATCH_STATE_SPLIT); diff --git a/lib/rendercopy.h b/lib/rendercopy.h index 1bf8859cb..7d5f08021 100644 --- a/lib/rendercopy.h +++ b/lib/rendercopy.h @@ -24,47 +24,38 @@ static inline void emit_vertex_normalized(struct intel_bb *ibb, } void gen12_render_copyfunc(struct intel_bb *ibb, - uint32_t ctx, struct intel_buf *src, uint32_t src_x, uint32_t src_y, uint32_t width, uint32_t height, struct intel_buf *dst, uint32_t dst_x, uint32_t dst_y); void gen11_render_copyfunc(struct intel_bb *ibb, - uint32_t ctx, struct intel_buf *src, uint32_t src_x, uint32_t src_y, uint32_t width, uint32_t height, struct intel_buf *dst, uint32_t dst_x, uint32_t dst_y); void gen9_render_copyfunc(struct intel_bb *ibb, - uint32_t ctx, struct intel_buf *src, uint32_t src_x, uint32_t src_y, uint32_t width, uint32_t height, struct intel_buf *dst, uint32_t dst_x, uint32_t dst_y); void gen8_render_copyfunc(struct intel_bb *ibb, - uint32_t ctx, struct intel_buf *src, uint32_t src_x, uint32_t src_y, uint32_t width, uint32_t height, struct intel_buf *dst, uint32_t dst_x, uint32_t dst_y); void gen7_render_copyfunc(struct intel_bb *ibb, - uint32_t ctx, struct intel_buf *src, uint32_t src_x, uint32_t src_y, uint32_t width, uint32_t height, struct intel_buf *dst, uint32_t dst_x, uint32_t dst_y); void gen6_render_copyfunc(struct intel_bb *ibb, - uint32_t ctx, struct intel_buf *src, uint32_t src_x, uint32_t src_y, uint32_t width, uint32_t height, struct intel_buf *dst, uint32_t dst_x, uint32_t dst_y); void gen4_render_copyfunc(struct intel_bb *ibb, - uint32_t ctx, struct intel_buf *src, uint32_t src_x, uint32_t src_y, uint32_t width, uint32_t height, struct intel_buf *dst, uint32_t dst_x, uint32_t dst_y); void gen3_render_copyfunc(struct intel_bb *ibb, - uint32_t ctx, struct intel_buf *src, uint32_t src_x, uint32_t src_y, uint32_t width, uint32_t height, struct intel_buf *dst, uint32_t dst_x, uint32_t dst_y); void gen2_render_copyfunc(struct intel_bb *ibb, - uint32_t ctx, struct intel_buf *src, uint32_t src_x, uint32_t src_y, uint32_t width, uint32_t height, struct intel_buf *dst, uint32_t dst_x, uint32_t dst_y); diff --git a/lib/rendercopy_gen4.c b/lib/rendercopy_gen4.c index 279067ce8..8536d6b63 100644 --- a/lib/rendercopy_gen4.c +++ b/lib/rendercopy_gen4.c @@ -626,7 +626,6 @@ static uint32_t gen4_emit_primitive(struct intel_bb *ibb) } void gen4_render_copyfunc(struct intel_bb *ibb, - uint32_t ctx, struct intel_buf *src, uint32_t src_x, uint32_t src_y, uint32_t width, uint32_t height, @@ -641,7 +640,7 @@ void gen4_render_copyfunc(struct intel_bb *ibb, igt_assert(src->bpp == dst->bpp); - intel_bb_flush_render_with_context(ibb, ctx); + intel_bb_flush_render(ibb); intel_bb_add_intel_buf(ibb, dst, true); intel_bb_add_intel_buf(ibb, src, false); @@ -699,8 +698,7 @@ void gen4_render_copyfunc(struct intel_bb *ibb, /* Position to valid batch end position for batch reuse */ intel_bb_ptr_set(ibb, batch_end); - intel_bb_exec_with_context(ibb, batch_end, ctx, - I915_EXEC_DEFAULT | I915_EXEC_NO_RELOC, - false); + intel_bb_exec(ibb, batch_end, + I915_EXEC_DEFAULT | I915_EXEC_NO_RELOC, false); intel_bb_reset(ibb, false); } diff --git a/lib/rendercopy_gen6.c b/lib/rendercopy_gen6.c index 4b7ed9662..e941257eb 100644 --- a/lib/rendercopy_gen6.c +++ b/lib/rendercopy_gen6.c @@ -510,7 +510,6 @@ static uint32_t gen6_emit_primitive(struct intel_bb *ibb) } void gen6_render_copyfunc(struct intel_bb *ibb, - uint32_t ctx, struct intel_buf *src, uint32_t src_x, uint32_t src_y, uint32_t width, uint32_t height, @@ -523,7 +522,7 @@ void gen6_render_copyfunc(struct intel_bb *ibb, igt_assert(src->bpp == dst->bpp); - intel_bb_flush_render_with_context(ibb, ctx); + intel_bb_flush_render(ibb); intel_bb_add_intel_buf(ibb, dst, true); intel_bb_add_intel_buf(ibb, src, false); @@ -585,8 +584,7 @@ void gen6_render_copyfunc(struct intel_bb *ibb, /* Position to valid batch end position for batch reuse */ intel_bb_ptr_set(ibb, batch_end); - intel_bb_exec_with_context(ibb, batch_end, ctx, - I915_EXEC_DEFAULT | I915_EXEC_NO_RELOC, - false); + intel_bb_exec(ibb, batch_end, + I915_EXEC_DEFAULT | I915_EXEC_NO_RELOC, false); intel_bb_reset(ibb, false); } diff --git a/lib/rendercopy_gen7.c b/lib/rendercopy_gen7.c index 62ef4325f..267f6f803 100644 --- a/lib/rendercopy_gen7.c +++ b/lib/rendercopy_gen7.c @@ -507,7 +507,6 @@ gen7_emit_null_depth_buffer(struct intel_bb *ibb) #define BATCH_STATE_SPLIT 2048 void gen7_render_copyfunc(struct intel_bb *ibb, - uint32_t ctx, struct intel_buf *src, uint32_t src_x, uint32_t src_y, uint32_t width, uint32_t height, @@ -520,7 +519,7 @@ void gen7_render_copyfunc(struct intel_bb *ibb, igt_assert(src->bpp == dst->bpp); - intel_bb_flush_render_with_context(ibb, ctx); + intel_bb_flush_render(ibb); intel_bb_add_intel_buf(ibb, dst, true); intel_bb_add_intel_buf(ibb, src, false); @@ -575,9 +574,8 @@ void gen7_render_copyfunc(struct intel_bb *ibb, intel_bb_out(ibb, 0); /* index buffer offset, ignored */ intel_bb_emit_bbe(ibb); - intel_bb_exec_with_context(ibb, intel_bb_offset(ibb), ctx, - I915_EXEC_DEFAULT | I915_EXEC_NO_RELOC, - false); + intel_bb_exec(ibb, intel_bb_offset(ibb), + I915_EXEC_DEFAULT | I915_EXEC_NO_RELOC, false); dump_batch(ibb); intel_bb_reset(ibb, false); } diff --git a/lib/rendercopy_gen8.c b/lib/rendercopy_gen8.c index 95c3c4975..ba7897fb4 100644 --- a/lib/rendercopy_gen8.c +++ b/lib/rendercopy_gen8.c @@ -780,7 +780,6 @@ static void gen8_emit_primitive(struct intel_bb *ibb, uint32_t offset) #define BATCH_STATE_SPLIT 2048 void gen8_render_copyfunc(struct intel_bb *ibb, - uint32_t ctx, struct intel_buf *src, unsigned int src_x, unsigned int src_y, unsigned int width, unsigned int height, @@ -793,7 +792,7 @@ void gen8_render_copyfunc(struct intel_bb *ibb, igt_assert(src->bpp == dst->bpp); - intel_bb_flush_render_with_context(ibb, ctx); + intel_bb_flush_render(ibb); intel_bb_add_intel_buf(ibb, dst, true); intel_bb_add_intel_buf(ibb, src, false); @@ -874,9 +873,8 @@ void gen8_render_copyfunc(struct intel_bb *ibb, gen8_emit_primitive(ibb, vertex_buffer); intel_bb_emit_bbe(ibb); - intel_bb_exec_with_context(ibb, intel_bb_offset(ibb), ctx, - I915_EXEC_DEFAULT | I915_EXEC_NO_RELOC, - false); + intel_bb_exec(ibb, intel_bb_offset(ibb), + I915_EXEC_DEFAULT | I915_EXEC_NO_RELOC, false); dump_batch(ibb); intel_bb_reset(ibb, false); } diff --git a/lib/rendercopy_gen9.c b/lib/rendercopy_gen9.c index 6bad7bb63..ef6855c98 100644 --- a/lib/rendercopy_gen9.c +++ b/lib/rendercopy_gen9.c @@ -877,7 +877,6 @@ static void gen8_emit_primitive(struct intel_bb *ibb, uint32_t offset) static void _gen9_render_copyfunc(struct intel_bb *ibb, - uint32_t ctx, struct intel_buf *src, unsigned int src_x, unsigned int src_y, unsigned int width, unsigned int height, @@ -894,7 +893,7 @@ void _gen9_render_copyfunc(struct intel_bb *ibb, igt_assert(src->bpp == dst->bpp); - intel_bb_flush_render_with_context(ibb, ctx); + intel_bb_flush_render(ibb); intel_bb_add_intel_buf(ibb, dst, true); intel_bb_add_intel_buf(ibb, src, false); @@ -978,15 +977,13 @@ void _gen9_render_copyfunc(struct intel_bb *ibb, gen8_emit_primitive(ibb, vertex_buffer); intel_bb_emit_bbe(ibb); - intel_bb_exec_with_context(ibb, intel_bb_offset(ibb), ctx, - I915_EXEC_RENDER | I915_EXEC_NO_RELOC, - false); + intel_bb_exec(ibb, intel_bb_offset(ibb), + I915_EXEC_RENDER | I915_EXEC_NO_RELOC, false); dump_batch(ibb); intel_bb_reset(ibb, false); } void gen9_render_copyfunc(struct intel_bb *ibb, - uint32_t ctx, struct intel_buf *src, unsigned int src_x, unsigned int src_y, unsigned int width, unsigned int height, @@ -994,26 +991,24 @@ void gen9_render_copyfunc(struct intel_bb *ibb, unsigned int dst_x, unsigned int dst_y) { - _gen9_render_copyfunc(ibb, ctx, src, src_x, src_y, + _gen9_render_copyfunc(ibb, src, src_x, src_y, width, height, dst, dst_x, dst_y, NULL, ps_kernel_gen9, sizeof(ps_kernel_gen9)); } void gen11_render_copyfunc(struct intel_bb *ibb, - uint32_t ctx, struct intel_buf *src, unsigned int src_x, unsigned int src_y, unsigned int width, unsigned int height, struct intel_buf *dst, unsigned int dst_x, unsigned int dst_y) { - _gen9_render_copyfunc(ibb, ctx, src, src_x, src_y, + _gen9_render_copyfunc(ibb, src, src_x, src_y, width, height, dst, dst_x, dst_y, NULL, ps_kernel_gen11, sizeof(ps_kernel_gen11)); } void gen12_render_copyfunc(struct intel_bb *ibb, - uint32_t ctx, struct intel_buf *src, unsigned int src_x, unsigned int src_y, unsigned int width, unsigned int height, @@ -1024,7 +1019,7 @@ void gen12_render_copyfunc(struct intel_bb *ibb, gen12_aux_pgtable_init(&pgtable_info, ibb, src, dst); - _gen9_render_copyfunc(ibb, ctx, src, src_x, src_y, + _gen9_render_copyfunc(ibb, src, src_x, src_y, width, height, dst, dst_x, dst_y, pgtable_info.pgtable_buf, gen12_render_copy, diff --git a/lib/rendercopy_i830.c b/lib/rendercopy_i830.c index e755706ef..4c4271493 100644 --- a/lib/rendercopy_i830.c +++ b/lib/rendercopy_i830.c @@ -235,7 +235,6 @@ static void gen2_emit_copy_pipeline(struct intel_bb *ibb) } void gen2_render_copyfunc(struct intel_bb *ibb, - uint32_t ctx, struct intel_buf *src, uint32_t src_x, uint32_t src_y, uint32_t width, uint32_t height, @@ -277,5 +276,5 @@ void gen2_render_copyfunc(struct intel_bb *ibb, emit_vertex_normalized(ibb, src_x, intel_buf_width(src)); emit_vertex_normalized(ibb, src_y, intel_buf_height(src)); - intel_bb_flush_blit_with_context(ibb, ctx); + intel_bb_flush_blit(ibb); } diff --git a/lib/rendercopy_i915.c b/lib/rendercopy_i915.c index b16d4f12a..3e421301e 100644 --- a/lib/rendercopy_i915.c +++ b/lib/rendercopy_i915.c @@ -20,7 +20,6 @@ #include "rendercopy.h" void gen3_render_copyfunc(struct intel_bb *ibb, - uint32_t ctx, struct intel_buf *src, uint32_t src_x, uint32_t src_y, uint32_t width, uint32_t height, @@ -229,5 +228,5 @@ void gen3_render_copyfunc(struct intel_bb *ibb, emit_vertex(ibb, src_x); emit_vertex(ibb, src_y); - intel_bb_flush_blit_with_context(ibb, ctx); + intel_bb_flush_blit(ibb); } diff --git a/lib/veboxcopy_gen12.c b/lib/veboxcopy_gen12.c index a44e2bff7..b4cd7bddb 100644 --- a/lib/veboxcopy_gen12.c +++ b/lib/veboxcopy_gen12.c @@ -248,7 +248,7 @@ void gen12_vebox_copyfunc(struct intel_bb *ibb, igt_assert(src->bpp == dst->bpp); - intel_bb_flush(ibb, ibb->ctx, I915_EXEC_VEBOX); + intel_bb_flush(ibb, I915_EXEC_VEBOX); intel_bb_add_intel_buf(ibb, dst, true); intel_bb_add_intel_buf(ibb, src, false); @@ -304,9 +304,8 @@ void gen12_vebox_copyfunc(struct intel_bb *ibb, intel_bb_out(ibb, MI_BATCH_BUFFER_END); intel_bb_ptr_align(ibb, 8); - intel_bb_exec_with_context(ibb, intel_bb_offset(ibb), 0, - I915_EXEC_VEBOX | I915_EXEC_NO_RELOC, - false); + intel_bb_exec(ibb, intel_bb_offset(ibb), + I915_EXEC_VEBOX | I915_EXEC_NO_RELOC, false); intel_bb_reset(ibb, false); |