diff options
| author | Zbigniew Kempczyński <zbigniew.kempczynski@intel.com> | 2020-10-23 09:30:26 +0200 |
|---|---|---|
| committer | Zbigniew Kempczyński <zbigniew.kempczynski@intel.com> | 2021-04-13 15:44:38 +0200 |
| commit | 64b4d48340fc324e63ecf333edde83f566c57b39 (patch) | |
| tree | d6384e075026d2aedc9d2ecace702dc23ba88382 | |
| parent | 326f0ea92a94ed233fc8df9d81ba2ef526486f00 (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.c | 24 |
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); } |
