summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Kempczyński <zbigniew.kempczynski@intel.com>2020-10-23 09:30:26 +0200
committerZbigniew Kempczyński <zbigniew.kempczynski@intel.com>2021-04-13 15:44:38 +0200
commit64b4d48340fc324e63ecf333edde83f566c57b39 (patch)
treed6384e075026d2aedc9d2ecace702dc23ba88382
parent326f0ea92a94ed233fc8df9d81ba2ef526486f00 (diff)
tests/gem_render_copy_redux: Adopt to use with intel_bb and allocator
As intel_bb has some strong requirements when allocator is in use (addresses cannot move when simple allocator is used) ensure gem buffer which is created from flink will reacquire new address. Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com> Cc: Dominik Grzegorzek <dominik.grzegorzek@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Acked-by: Petri Latvala <petri.latvala@intel.com>
-rw-r--r--tests/i915/gem_render_copy_redux.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/tests/i915/gem_render_copy_redux.c b/tests/i915/gem_render_copy_redux.c
index 40308a6e..6c8d7f75 100644
--- a/tests/i915/gem_render_copy_redux.c
+++ b/tests/i915/gem_render_copy_redux.c
@@ -63,7 +63,6 @@ typedef struct {
int fd;
uint32_t devid;
struct buf_ops *bops;
- struct intel_bb *ibb;
igt_render_copyfunc_t render_copy;
uint32_t linear[WIDTH * HEIGHT];
} data_t;
@@ -77,13 +76,10 @@ static void data_init(data_t *data)
data->render_copy = igt_get_render_copyfunc(data->devid);
igt_require_f(data->render_copy,
"no render-copy function\n");
-
- data->ibb = intel_bb_create(data->fd, 4096);
}
static void data_fini(data_t *data)
{
- intel_bb_destroy(data->ibb);
buf_ops_destroy(data->bops);
close(data->fd);
}
@@ -126,15 +122,17 @@ scratch_buf_check(data_t *data, struct intel_buf *buf, int x, int y,
static void copy(data_t *data)
{
+ struct intel_bb *ibb;
struct intel_buf src, dst;
+ ibb = intel_bb_create(data->fd, 4096);
scratch_buf_init(data, &src, WIDTH, HEIGHT, STRIDE, SRC_COLOR);
scratch_buf_init(data, &dst, WIDTH, HEIGHT, STRIDE, DST_COLOR);
scratch_buf_check(data, &src, WIDTH / 2, HEIGHT / 2, SRC_COLOR);
scratch_buf_check(data, &dst, WIDTH / 2, HEIGHT / 2, DST_COLOR);
- data->render_copy(data->ibb,
+ data->render_copy(ibb,
&src, 0, 0, WIDTH, HEIGHT,
&dst, WIDTH / 2, HEIGHT / 2);
@@ -143,11 +141,13 @@ static void copy(data_t *data)
scratch_buf_fini(data, &src);
scratch_buf_fini(data, &dst);
+ intel_bb_destroy(ibb);
}
static void copy_flink(data_t *data)
{
data_t local;
+ struct intel_bb *ibb, *local_ibb;
struct intel_buf src, dst;
struct intel_buf local_src, local_dst;
struct intel_buf flink;
@@ -155,32 +155,36 @@ static void copy_flink(data_t *data)
data_init(&local);
+ ibb = intel_bb_create(data->fd, 4096);
+ local_ibb = intel_bb_create(local.fd, 4096);
scratch_buf_init(data, &src, WIDTH, HEIGHT, STRIDE, 0);
scratch_buf_init(data, &dst, WIDTH, HEIGHT, STRIDE, DST_COLOR);
- data->render_copy(data->ibb,
+ data->render_copy(ibb,
&src, 0, 0, WIDTH, HEIGHT,
&dst, WIDTH, HEIGHT);
scratch_buf_init(&local, &local_src, WIDTH, HEIGHT, STRIDE, 0);
scratch_buf_init(&local, &local_dst, WIDTH, HEIGHT, STRIDE, SRC_COLOR);
- local.render_copy(local.ibb,
+ local.render_copy(local_ibb,
&local_src, 0, 0, WIDTH, HEIGHT,
&local_dst, WIDTH, HEIGHT);
name = gem_flink(local.fd, local_dst.handle);
flink = local_dst;
flink.handle = gem_open(data->fd, name);
+ flink.ibb = ibb;
+ flink.addr.offset = INTEL_BUF_INVALID_ADDRESS;
- data->render_copy(data->ibb,
+ data->render_copy(ibb,
&flink, 0, 0, WIDTH, HEIGHT,
&dst, WIDTH / 2, HEIGHT / 2);
scratch_buf_check(data, &dst, 10, 10, DST_COLOR);
scratch_buf_check(data, &dst, WIDTH - 10, HEIGHT - 10, SRC_COLOR);
- intel_bb_reset(data->ibb, true);
+ intel_bb_reset(ibb, true);
scratch_buf_fini(data, &src);
scratch_buf_fini(data, &flink);
scratch_buf_fini(data, &dst);
@@ -188,6 +192,8 @@ static void copy_flink(data_t *data)
scratch_buf_fini(&local, &local_src);
scratch_buf_fini(&local, &local_dst);
+ intel_bb_destroy(local_ibb);
+ intel_bb_destroy(ibb);
data_fini(&local);
}