[igt-dev] [PATCH] [PATCH i-g-t] i915/gem_ring_sync_copy: Removal of test
priyanka.dandamudi at intel.com
priyanka.dandamudi at intel.com
Tue Mar 17 05:32:47 UTC 2020
From: Priyanka Dandamudi <priyanka.dandamudi at intel.com>
Test is trying to verify the implicit order fencing. Similar scenario can
be found in gem_exec_schedule. This test doesn't add anything to other
tests. So, removing the test.
Cc: Tahvanainen Jari <jari.tahvanainen at intel.com>
Signed-off-by: Priyanka Dandamudi <priyanka.dandamudi at intel.com>
---
tests/Makefile.sources | 3 -
tests/i915/gem_ring_sync_copy.c | 375 --------------------------------
tests/meson.build | 1 -
3 files changed, 379 deletions(-)
delete mode 100644 tests/i915/gem_ring_sync_copy.c
diff --git a/tests/Makefile.sources b/tests/Makefile.sources
index 1793020e..75b49ec4 100644
--- a/tests/Makefile.sources
+++ b/tests/Makefile.sources
@@ -374,9 +374,6 @@ gem_request_retire_SOURCES = i915/gem_request_retire.c
TESTS_progs += gem_reset_stats
gem_reset_stats_SOURCES = i915/gem_reset_stats.c
-TESTS_progs += gem_ring_sync_copy
-gem_ring_sync_copy_SOURCES = i915/gem_ring_sync_copy.c
-
TESTS_progs += gem_ring_sync_loop
gem_ring_sync_loop_SOURCES = i915/gem_ring_sync_loop.c
diff --git a/tests/i915/gem_ring_sync_copy.c b/tests/i915/gem_ring_sync_copy.c
deleted file mode 100644
index ddf5f750..00000000
--- a/tests/i915/gem_ring_sync_copy.c
+++ /dev/null
@@ -1,375 +0,0 @@
-/*
- * Copyright © 2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Damien Lespiau <damien.lespiau at intel.com>
- */
-
-/*
- * The goal of this test is to ensure that we respect inter ring dependencies
- *
- * For each pair of rings R1, R2 where we have copy support (i.e. blt,
- * rendercpy and mediafill) do:
- * - Throw a busy load onto R1. gem_concurrent_blt just uses lots of buffers
- * for this effect.
- * - Fill three buffers A, B, C with unique data.
- * - Copy A to B on ring R1
- *
- * Then come the three different variants.
- * - Copy B to C on ring R2, check that C now contains what A originally
- * contained. This is the write->read hazard. gem_concurrent_blt calls this
- * early read.
- * - Copy C to A on ring R2, check that B now contains what A originally
- * contained. This is the read->write hazard, gem_concurrent_blt calls it
- * overwrite_source.
- * - Copy C to B on ring R2 and check that B contains what C originally
- * contained. This is the write/write hazard. gem_concurrent_blt doesn't
- * have that since for the cpu case it's too boring.
- *
- */
-
-#include "igt.h"
-#include <stdlib.h>
-#include <stdbool.h>
-
-
-IGT_TEST_DESCRIPTION("Ensure inter-ring dependencies are respected.");
-
-#define WIDTH 512
-#define HEIGHT 512
-#define NUM_BUSY_BUFFERS 32
-
-typedef struct {
- int drm_fd;
- uint32_t devid;
- drm_intel_bufmgr *bufmgr;
- struct intel_batchbuffer *batch;
-
- /* number of buffers to keep the ring busy for a while */
- unsigned int n_buffers_load;
-
- uint32_t linear[WIDTH * HEIGHT];
-
- struct {
- igt_render_copyfunc_t copy;
- struct igt_buf *srcs;
- struct igt_buf *dsts;
- } render;
-
- struct {
- drm_intel_bo **srcs;
- drm_intel_bo **dsts;
- } blitter;
-
-} data_t;
-
-enum ring {
- RENDER,
- BLITTER,
-};
-
-enum test {
- TEST_WRITE_READ,
- TEST_READ_WRITE,
- TEST_WRITE_WRITE,
-};
-
-static const char *ring_name(enum ring ring)
-{
- const char *names[] = {
- "render",
- "blitter",
- };
-
- return names[ring];
-}
-
-static drm_intel_bo *bo_create(data_t *data, int width, int height, int val)
-{
- drm_intel_bo *bo;
- int i;
-
- bo = drm_intel_bo_alloc(data->bufmgr, "", 4 * width * height, 4096);
- igt_assert(bo);
-
- for (i = 0; i < width * height; i++)
- data->linear[i] = val;
- gem_write(data->drm_fd, bo->handle, 0, data->linear,
- sizeof(data->linear));
-
- return bo;
-}
-
-static void bo_check(data_t *data, drm_intel_bo *bo, uint32_t val)
-{
- int i;
-
- gem_read(data->drm_fd, bo->handle, 0,
- data->linear, sizeof(data->linear));
- for (i = 0; i < WIDTH * HEIGHT; i++)
- igt_assert_eq_u32(data->linear[i], val);
-}
-
-static void scratch_buf_init_from_bo(struct igt_buf *buf, drm_intel_bo *bo)
-{
- memset(buf, 0, sizeof(*buf));
-
- buf->bo = bo;
- buf->surface[0].stride = 4 * WIDTH;
- buf->tiling = I915_TILING_NONE;
- buf->surface[0].size = 4 * WIDTH * HEIGHT;
- buf->bpp = 32;
-}
-
-static void scratch_buf_init(data_t *data, struct igt_buf *buf,
- int width, int height, uint32_t color)
-{
- drm_intel_bo *bo;
-
- bo = bo_create(data, width, height, color);
- scratch_buf_init_from_bo(buf, bo);
-}
-
-/*
- * Provide a few ring specific vfuncs for run_test().
- *
- * busy() Queue a n_buffers_load workloads onto the ring to keep it busy
- * busy_fini() Clean up after busy
- * copy() Copy one BO to another
- */
-
-/*
- * Render ring
- */
-
-static void render_busy(data_t *data)
-{
- size_t array_size;
- int i;
-
- /* allocate 32 buffer objects and re-use them as needed */
- array_size = NUM_BUSY_BUFFERS * sizeof(struct igt_buf);
-
- data->render.srcs = malloc(array_size);
- data->render.dsts = malloc(array_size);
-
- for (i = 0; i < NUM_BUSY_BUFFERS; i++) {
- scratch_buf_init(data, &data->render.srcs[i], WIDTH, HEIGHT,
- 0xdeadbeef);
- scratch_buf_init(data, &data->render.dsts[i], WIDTH, HEIGHT,
- 0xdeadbeef);
- }
-
- for (i = 0; i < data->n_buffers_load; i++) {
- data->render.copy(data->batch,
- NULL, /* context */
- &data->render.srcs[i % NUM_BUSY_BUFFERS],
- 0, 0, /* src_x, src_y */
- WIDTH, HEIGHT,
- &data->render.dsts[i % NUM_BUSY_BUFFERS],
- 0, 0 /* dst_x, dst_y */);
- }
-}
-
-static void render_busy_fini(data_t *data)
-{
- int i;
-
- for (i = 0; i < NUM_BUSY_BUFFERS; i++) {
- drm_intel_bo_unreference(data->render.srcs[i].bo);
- drm_intel_bo_unreference(data->render.dsts[i].bo);
- }
-
- free(data->render.srcs);
- free(data->render.dsts);
- data->render.srcs = NULL;
- data->render.dsts = NULL;
-}
-
-static void render_copy(data_t *data, drm_intel_bo *src, drm_intel_bo *dst)
-{
- struct igt_buf src_buf, dst_buf;
-
- scratch_buf_init_from_bo(&src_buf, src);
- scratch_buf_init_from_bo(&dst_buf, dst);
-
- data->render.copy(data->batch,
- NULL, /* context */
- &src_buf,
- 0, 0, /* src_x, src_y */
- WIDTH, HEIGHT,
- &dst_buf,
- 0, 0 /* dst_x, dst_y */);
-}
-
-/*
- * Blitter ring
- */
-
-static void blitter_busy(data_t *data)
-{
- size_t array_size;
- int i;
-
- /* allocate 32 buffer objects and re-use them as needed */
- array_size = NUM_BUSY_BUFFERS * sizeof(drm_intel_bo *);
-
- data->blitter.srcs = malloc(array_size);
- data->blitter.dsts = malloc(array_size);
-
- for (i = 0; i < NUM_BUSY_BUFFERS; i++) {
- data->blitter.srcs[i] = bo_create(data,
- WIDTH, HEIGHT,
- 0xdeadbeef);
- data->blitter.dsts[i] = bo_create(data,
- WIDTH, HEIGHT,
- 0xdeadbeef);
- }
-
- for (i = 0; i < data->n_buffers_load; i++) {
- intel_copy_bo(data->batch,
- data->blitter.srcs[i % NUM_BUSY_BUFFERS],
- data->blitter.dsts[i % NUM_BUSY_BUFFERS],
- WIDTH*HEIGHT*4);
- }
-}
-
-static void blitter_busy_fini(data_t *data)
-{
- int i;
-
- for (i = 0; i < NUM_BUSY_BUFFERS; i++) {
- drm_intel_bo_unreference(data->blitter.srcs[i]);
- drm_intel_bo_unreference(data->blitter.dsts[i]);
- }
-
- free(data->blitter.srcs);
- free(data->blitter.dsts);
- data->blitter.srcs = NULL;
- data->blitter.dsts = NULL;
-}
-
-static void blitter_copy(data_t *data, drm_intel_bo *src, drm_intel_bo *dst)
-{
- intel_copy_bo(data->batch, dst, src, WIDTH*HEIGHT*4);
-}
-
-struct ring_ops {
- void (*busy)(data_t *data);
- void (*busy_fini)(data_t *data);
- void (*copy)(data_t *data, drm_intel_bo *src, drm_intel_bo *dst);
-} ops [] = {
- {
- .busy = render_busy,
- .busy_fini = render_busy_fini,
- .copy = render_copy,
- },
- {
- .busy = blitter_busy,
- .busy_fini = blitter_busy_fini,
- .copy = blitter_copy,
- },
-};
-
-static void run_test(data_t *data, enum ring r1, enum ring r2, enum test test)
-{
- struct ring_ops *r1_ops = &ops[r1];
- struct ring_ops *r2_ops = &ops[r2];
- drm_intel_bo *a, *b, *c;
-
- a = bo_create(data, WIDTH, HEIGHT, 0xa);
- b = bo_create(data, WIDTH, HEIGHT, 0xb);
- c = bo_create(data, WIDTH, HEIGHT, 0xc);
-
- r1_ops->busy(data);
- r1_ops->copy(data, a, b);
-
- switch (test) {
- case TEST_WRITE_READ:
- r2_ops->copy(data, b, c);
- bo_check(data, c, 0xa);
- break;
- case TEST_READ_WRITE:
- r2_ops->copy(data, c, a);
- bo_check(data, b, 0xa);
- break;
- case TEST_WRITE_WRITE:
- r2_ops->copy(data, c, b);
- bo_check(data, b, 0xc);
- break;
- default:
- igt_fail(IGT_EXIT_FAILURE);
- }
-
- r1_ops->busy_fini(data);
-}
-
-igt_main
-{
- data_t data = {0, };
- int i;
- struct combination {
- int r1, r2;
- } ring_combinations [] = {
- { RENDER, BLITTER },
- { BLITTER, RENDER },
- };
-
- igt_fixture {
- data.drm_fd = drm_open_driver_render(DRIVER_INTEL);
- data.devid = intel_get_drm_devid(data.drm_fd);
-
- data.n_buffers_load = 1000;
-
- data.bufmgr = drm_intel_bufmgr_gem_init(data.drm_fd, 4096);
- igt_assert(data.bufmgr);
- drm_intel_bufmgr_gem_enable_reuse(data.bufmgr);
-
- data.render.copy = igt_get_render_copyfunc(data.devid);
- igt_require_f(data.render.copy,
- "no render-copy function\n");
-
- data.batch = intel_batchbuffer_alloc(data.bufmgr, data.devid);
- igt_assert(data.batch);
- }
-
- for (i = 0; i < ARRAY_SIZE(ring_combinations); i++) {
- struct combination *c = &ring_combinations[i];
-
- igt_subtest_f("sync-%s-%s-write-read",
- ring_name(c->r1), ring_name(c->r2))
- run_test(&data, c->r1, c->r2, TEST_WRITE_READ);
-
- igt_subtest_f("sync-%s-%s-read-write",
- ring_name(c->r1), ring_name(c->r2))
- run_test(&data, c->r1, c->r2, TEST_READ_WRITE);
- igt_subtest_f("sync-%s-%s-write-write",
- ring_name(c->r1), ring_name(c->r2))
- run_test(&data, c->r1, c->r2, TEST_WRITE_WRITE);
- }
-
- igt_fixture {
- intel_batchbuffer_free(data.batch);
- drm_intel_bufmgr_destroy(data.bufmgr);
- close(data.drm_fd);
- }
-}
diff --git a/tests/meson.build b/tests/meson.build
index 7629afde..cba5c137 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -187,7 +187,6 @@ i915_progs = [
'gem_render_tiled_blits',
'gem_request_retire',
'gem_reset_stats',
- 'gem_ring_sync_copy',
'gem_ring_sync_loop',
'gem_ringfill',
'gem_set_tiling_vs_blt',
--
2.25.0
More information about the igt-dev
mailing list