[igt-dev] [PATCH i-g-t v2 07/20] i915/gem_unfence_active_buffers.c: Remove librdm dependency
Dominik Grzegorzek
dominik.grzegorzek at intel.com
Thu Sep 17 13:06:58 UTC 2020
Use intel_bb / intel_buf to remove libdrm dependency.
Signed-off-by: Dominik Grzegorzek <dominik.grzegorzek at intel.com>
Cc: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
Cc: Chris Wilson <chris at chris-wilson.co.uk>
---
tests/i915/gem_unfence_active_buffers.c | 134 ++++++++++++------------
1 file changed, 69 insertions(+), 65 deletions(-)
diff --git a/tests/i915/gem_unfence_active_buffers.c b/tests/i915/gem_unfence_active_buffers.c
index 1e69c70d..fc30755f 100644
--- a/tests/i915/gem_unfence_active_buffers.c
+++ b/tests/i915/gem_unfence_active_buffers.c
@@ -51,23 +51,22 @@
#include "drm.h"
#include "i915/gem.h"
#include "igt.h"
-#include "intel_bufmgr.h"
IGT_TEST_DESCRIPTION("Check for use-after-free in the fence stealing code.");
-static drm_intel_bufmgr *bufmgr;
-struct intel_batchbuffer *batch;
-uint32_t devid;
-
-#define TEST_SIZE (1024*1024)
-#define TEST_STRIDE (4*1024)
+#define WIDTH 1024
+#define HEIGHT 1024
+#define TEST_SIZE (WIDTH*HEIGHT)
+#define TEST_STRIDE (4*WIDTH)
uint32_t data[TEST_SIZE/4];
igt_simple_main
{
int i, ret, fd, num_fences;
- drm_intel_bo *busy_bo, *test_bo;
+ struct intel_bb *ibb;
+ struct buf_ops *bops;
+ struct intel_buf *busy_buf, *test_buf;
uint32_t tiling = I915_TILING_X;
for (i = 0; i < 1024*256; i++)
@@ -77,86 +76,91 @@ igt_simple_main
igt_require_gem(fd);
gem_require_blitter(fd);
- bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
- drm_intel_bufmgr_gem_enable_reuse(bufmgr);
- devid = intel_get_drm_devid(fd);
- batch = intel_batchbuffer_alloc(bufmgr, devid);
+ bops = buf_ops_create(fd);
+ ibb = intel_bb_create(fd, 4 * 4096);
igt_info("filling ring\n");
- busy_bo = drm_intel_bo_alloc(bufmgr, "busy bo bo", 16*1024*1024, 4096);
+ busy_buf = intel_buf_create(bops, WIDTH, HEIGHT, 16, 4096, I915_TILING_NONE,
+ I915_COMPRESSION_NONE);
for (i = 0; i < 250; i++) {
- BLIT_COPY_BATCH_START(0);
- OUT_BATCH((3 << 24) | /* 32 bits */
+ intel_bb_blit_start(ibb, 0);
+ intel_bb_out(ibb, (3 << 24) | /* 32 bits */
(0xcc << 16) | /* copy ROP */
2*1024*4);
- OUT_BATCH(0 << 16 | 1024);
- OUT_BATCH((2048) << 16 | (2048));
- OUT_RELOC_FENCED(busy_bo, I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, 0);
- OUT_BATCH(0 << 16 | 0);
- OUT_BATCH(2*1024*4);
- OUT_RELOC_FENCED(busy_bo, I915_GEM_DOMAIN_RENDER, 0, 0);
- ADVANCE_BATCH();
-
- if (batch->gen >= 6) {
- BEGIN_BATCH(3, 0);
- OUT_BATCH(XY_SETUP_CLIP_BLT_CMD);
- OUT_BATCH(0);
- OUT_BATCH(0);
- ADVANCE_BATCH();
+ intel_bb_out(ibb, 0 << 16 | 1024);
+ intel_bb_out(ibb, (2048) << 16 | (2048));
+ intel_bb_emit_reloc_fenced(ibb, busy_buf->handle,
+ I915_GEM_DOMAIN_RENDER,
+ I915_GEM_DOMAIN_RENDER, 0, 0x0);
+ intel_bb_out(ibb, 0 << 16 | 0);
+ intel_bb_out(ibb, 2*1024*4);
+ intel_bb_emit_reloc_fenced(ibb, busy_buf->handle,
+ I915_GEM_DOMAIN_RENDER, 0, 0, 0x0);
+
+ if (ibb->gen >= 6) {
+ intel_bb_out(ibb, XY_SETUP_CLIP_BLT_CMD);
+ intel_bb_out(ibb, 0);
+ intel_bb_out(ibb, 0);
}
}
- intel_batchbuffer_flush(batch);
+ intel_bb_flush_blit(ibb);
num_fences = gem_available_fences(fd);
igt_info("creating havoc on %i fences\n", num_fences);
for (i = 0; i < num_fences*2; i++) {
- test_bo = drm_intel_bo_alloc(bufmgr, "test_bo",
- TEST_SIZE, 4096);
- ret = drm_intel_bo_set_tiling(test_bo, &tiling, TEST_STRIDE);
+ test_buf = intel_buf_create(bops, WIDTH, HEIGHT, 32, 4096,
+ tiling, I915_COMPRESSION_NONE);
igt_assert(ret == 0);
- drm_intel_bo_disable_reuse(test_bo);
-
- BLIT_COPY_BATCH_START(0);
- OUT_BATCH((3 << 24) | /* 32 bits */
+ intel_bb_blit_start(ibb, 0);
+ intel_bb_out(ibb, (3 << 24) | /* 32 bits */
(0xcc << 16) | /* copy ROP */
TEST_STRIDE);
- OUT_BATCH(0 << 16 | 0);
- OUT_BATCH((1) << 16 | (1));
- OUT_RELOC_FENCED(test_bo, I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, 0);
- OUT_BATCH(0 << 16 | 0);
- OUT_BATCH(TEST_STRIDE);
- OUT_RELOC_FENCED(test_bo, I915_GEM_DOMAIN_RENDER, 0, 0);
- ADVANCE_BATCH();
- intel_batchbuffer_flush(batch);
- igt_info("test bo offset: %#lx\n", test_bo->offset);
-
- drm_intel_bo_unreference(test_bo);
+ intel_bb_out(ibb, 0 << 16 | 0);
+ intel_bb_out(ibb, (1) << 16 | (1));
+ intel_bb_emit_reloc_fenced(ibb, test_buf->handle,
+ I915_GEM_DOMAIN_RENDER,
+ I915_GEM_DOMAIN_RENDER, 0, 0x0);
+ intel_bb_out(ibb, 0 << 16 | 0);
+ intel_bb_out(ibb, TEST_STRIDE);
+ intel_bb_emit_reloc_fenced(ibb, test_buf->handle,
+ I915_GEM_DOMAIN_RENDER, 0, 0, 0x0);
+
+ intel_bb_flush_blit(ibb);
+ igt_info("test bo offset: %#lx\n",
+ intel_bb_get_object_offset(ibb, test_buf->handle));
+
+ intel_buf_destroy(test_buf);
+ intel_bb_reset(ibb, true);
}
/* launch a few batchs to ensure the damaged slab objects get reused. */
for (i = 0; i < 10; i++) {
- BLIT_COPY_BATCH_START(0);
- OUT_BATCH((3 << 24) | /* 32 bits */
+ intel_bb_blit_start(ibb, 0);
+ intel_bb_out(ibb, (3 << 24) | /* 32 bits */
(0xcc << 16) | /* copy ROP */
2*1024*4);
- OUT_BATCH(0 << 16 | 1024);
- OUT_BATCH((1) << 16 | (1));
- OUT_RELOC_FENCED(busy_bo, I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, 0);
- OUT_BATCH(0 << 16 | 0);
- OUT_BATCH(2*1024*4);
- OUT_RELOC_FENCED(busy_bo, I915_GEM_DOMAIN_RENDER, 0, 0);
- ADVANCE_BATCH();
-
- if (batch->gen >= 8) {
- BEGIN_BATCH(3, 0);
- OUT_BATCH(XY_SETUP_CLIP_BLT_CMD);
- OUT_BATCH(0);
- OUT_BATCH(0);
- ADVANCE_BATCH();
+ intel_bb_out(ibb, 0 << 16 | 1024);
+ intel_bb_out(ibb, (1) << 16 | (1));
+ intel_bb_emit_reloc_fenced(ibb, busy_buf->handle,
+ I915_GEM_DOMAIN_RENDER,
+ I915_GEM_DOMAIN_RENDER, 0, 0x0);
+ intel_bb_out(ibb, 0 << 16 | 0);
+ intel_bb_out(ibb, 2*1024*4);
+ intel_bb_emit_reloc_fenced(ibb, busy_buf->handle,
+ I915_GEM_DOMAIN_RENDER, 0, 0, 0x0);
+
+ if (ibb->gen >= 8) {
+ intel_bb_out(ibb, XY_SETUP_CLIP_BLT_CMD);
+ intel_bb_out(ibb, 0);
+ intel_bb_out(ibb, 0);
}
}
- intel_batchbuffer_flush(batch);
+ intel_bb_flush_blit(ibb);
+
+ intel_buf_destroy(busy_buf);
+ intel_bb_destroy(ibb);
+ buf_ops_destroy(bops);
}
--
2.20.1
More information about the igt-dev
mailing list