[PATCH i-g-t v7 22/33] tests/api_intel_bb: Check destroy path
Zbigniew Kempczyński
zbigniew.kempczynski at intel.com
Mon Oct 19 11:31:32 UTC 2020
Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
---
tests/i915/api_intel_bb.c | 65 +++++++++++++++++++++++++++++++++++++--
1 file changed, 63 insertions(+), 2 deletions(-)
diff --git a/tests/i915/api_intel_bb.c b/tests/i915/api_intel_bb.c
index 7b312576..5d9d7a86 100644
--- a/tests/i915/api_intel_bb.c
+++ b/tests/i915/api_intel_bb.c
@@ -397,6 +397,8 @@ static void add_remove_objects(struct buf_ops *bops)
intel_bb_add_intel_buf(ibb, src, false);
intel_bb_add_intel_buf(ibb, mid, true);
intel_bb_remove_intel_buf(ibb, mid);
+ intel_bb_remove_intel_buf(ibb, mid);
+ intel_bb_remove_intel_buf(ibb, mid);
intel_bb_add_intel_buf(ibb, dst, true);
offset = intel_bb_emit_bbe(ibb);
@@ -409,6 +411,58 @@ static void add_remove_objects(struct buf_ops *bops)
intel_bb_destroy(ibb);
}
+static void destroy_bb(struct buf_ops *bops)
+{
+ int i915 = buf_ops_get_fd(bops);
+ struct intel_bb *ibb;
+ struct intel_buf *src, *mid, *dst;
+ uint32_t offset;
+ const uint32_t width = 512;
+ const uint32_t height = 512;
+
+ ibb = intel_bb_create(i915, PAGE_SIZE);
+ if (debug_bb)
+ intel_bb_set_debug(ibb, true);
+
+ src = intel_buf_create(bops, width, height, 32, 0,
+ I915_TILING_NONE, I915_COMPRESSION_NONE);
+ mid = intel_buf_create(bops, width, height, 32, 0,
+ I915_TILING_NONE, I915_COMPRESSION_NONE);
+ dst = intel_buf_create(bops, width, height, 32, 0,
+ I915_TILING_NONE, I915_COMPRESSION_NONE);
+
+ intel_bb_add_intel_buf(ibb, src, false);
+ intel_bb_add_intel_buf(ibb, mid, true);
+ intel_bb_add_intel_buf(ibb, dst, true);
+
+ offset = intel_bb_emit_bbe(ibb);
+ intel_bb_exec(ibb, offset,
+ I915_EXEC_DEFAULT | I915_EXEC_NO_RELOC, true);
+
+ /* Check destroy will detach intel_bufs */
+ intel_bb_destroy(ibb);
+ igt_assert(src->addr.offset == INTEL_BUF_INVALID_ADDRESS);
+ igt_assert(src->ibb == NULL);
+ igt_assert(mid->addr.offset == INTEL_BUF_INVALID_ADDRESS);
+ igt_assert(mid->ibb == NULL);
+ igt_assert(dst->addr.offset == INTEL_BUF_INVALID_ADDRESS);
+ igt_assert(dst->ibb == NULL);
+
+ ibb = intel_bb_create(i915, PAGE_SIZE);
+ if (debug_bb)
+ intel_bb_set_debug(ibb, true);
+
+ intel_bb_add_intel_buf(ibb, src, false);
+ offset = intel_bb_emit_bbe(ibb);
+ intel_bb_exec(ibb, offset,
+ I915_EXEC_DEFAULT | I915_EXEC_NO_RELOC, true);
+
+ intel_bb_destroy(ibb);
+ intel_buf_destroy(src);
+ intel_buf_destroy(mid);
+ intel_buf_destroy(dst);
+}
+
static void object_reloc(struct buf_ops *bops, enum obj_cache_ops cache_op)
{
int i915 = buf_ops_get_fd(bops);
@@ -669,8 +723,12 @@ static void blit(struct buf_ops *bops,
intel_bb_add_intel_buf(ibb, src, false);
intel_bb_add_intel_buf(ibb, dst, true);
- igt_assert(poff_src == src->addr.offset);
- igt_assert(poff_dst == dst->addr.offset);
+ igt_assert_f(poff_src == src->addr.offset,
+ "prev src addr: %" PRIx64 " <> src addr %" PRIx64 "\n",
+ poff_src, src->addr.offset);
+ igt_assert_f(poff_dst == dst->addr.offset,
+ "prev dst addr: %" PRIx64 " <> dst addr %" PRIx64 "\n",
+ poff_dst, dst->addr.offset);
fill_buf(src, COLOR_77);
fill_buf(dst, COLOR_00);
@@ -1317,6 +1375,9 @@ igt_main_args("dpib", NULL, help_str, opt_handler, NULL)
igt_subtest("add-remove-objects")
add_remove_objects(bops);
+ igt_subtest("destroy-bb")
+ destroy_bb(bops);
+
igt_subtest("object-reloc-purge-cache")
object_reloc(bops, PURGE_CACHE);
--
2.26.0
More information about the Intel-gfx-trybot
mailing list