summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/gpgpu_fill.c6
-rw-r--r--lib/igt_draw.c5
-rw-r--r--lib/igt_fb.c2
-rw-r--r--lib/intel_batchbuffer.c205
-rw-r--r--lib/intel_batchbuffer.h18
-rw-r--r--lib/media_fill.c17
-rw-r--r--lib/media_spin.c4
-rw-r--r--lib/rendercopy.h9
-rw-r--r--lib/rendercopy_gen4.c8
-rw-r--r--lib/rendercopy_gen6.c8
-rw-r--r--lib/rendercopy_gen7.c8
-rw-r--r--lib/rendercopy_gen8.c8
-rw-r--r--lib/rendercopy_gen9.c17
-rw-r--r--lib/rendercopy_i830.c3
-rw-r--r--lib/rendercopy_i915.c3
-rw-r--r--lib/veboxcopy_gen12.c7
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);