[igt-dev] [PATCH i-g-t 37/77] tests/i915/gem_exec_capture: Convert to intel_ctx_t
Zbigniew Kempczyński
zbigniew.kempczynski at intel.com
Tue Jun 15 06:38:42 UTC 2021
On Mon, Jun 14, 2021 at 11:36:52AM -0500, Jason Ekstrand wrote:
> Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
> ---
> tests/i915/gem_exec_capture.c | 30 ++++++++++++++++++------------
> 1 file changed, 18 insertions(+), 12 deletions(-)
>
> diff --git a/tests/i915/gem_exec_capture.c b/tests/i915/gem_exec_capture.c
> index a6b3d987f..edad62a9b 100644
> --- a/tests/i915/gem_exec_capture.c
> +++ b/tests/i915/gem_exec_capture.c
> @@ -61,7 +61,8 @@ static void check_error_state(int dir, struct drm_i915_gem_exec_object2 *obj)
> igt_assert(found);
> }
>
> -static void __capture1(int fd, int dir, unsigned ring, uint32_t target)
> +static void __capture1(int fd, int dir, const intel_ctx_t *ctx,
> + unsigned ring, uint32_t target)
> {
> const unsigned int gen = intel_gen(intel_get_drm_devid(fd));
> struct drm_i915_gem_exec_object2 obj[4];
> @@ -148,6 +149,7 @@ static void __capture1(int fd, int dir, unsigned ring, uint32_t target)
> execbuf.flags = ring;
> if (gen > 3 && gen < 6)
> execbuf.flags |= I915_EXEC_SECURE;
> + execbuf.rsvd1 = ctx->id;
>
> igt_assert(!READ_ONCE(*seqno));
> gem_execbuf(fd, &execbuf);
> @@ -168,12 +170,12 @@ static void __capture1(int fd, int dir, unsigned ring, uint32_t target)
> gem_close(fd, obj[SCRATCH].handle);
> }
>
> -static void capture(int fd, int dir, unsigned ring)
> +static void capture(int fd, int dir, const intel_ctx_t *ctx, unsigned ring)
> {
> uint32_t handle;
>
> handle = gem_create(fd, 4096);
> - __capture1(fd, dir, ring, handle);
> + __capture1(fd, dir, ctx, ring, handle);
> gem_close(fd, handle);
> }
>
> @@ -496,7 +498,8 @@ static void many(int fd, int dir, uint64_t size, unsigned int flags)
> free(offsets);
> }
>
> -static void prioinv(int fd, int dir, unsigned ring, const char *name)
> +static void prioinv(int fd, int dir, const intel_ctx_t *ctx,
> + unsigned ring, const char *name)
> {
> const uint32_t bbe = MI_BATCH_BUFFER_END;
> struct drm_i915_gem_exec_object2 obj = {
> @@ -506,6 +509,7 @@ static void prioinv(int fd, int dir, unsigned ring, const char *name)
> .buffers_ptr = to_user_pointer(&obj),
> .buffer_count = 1,
> .flags = ring,
> + .rsvd1 = ctx->id,
> };
> int64_t timeout = NSEC_PER_SEC; /* 1s, feeling generous, blame debug */
> uint64_t ram, gtt, size = 4 << 20;
> @@ -573,7 +577,7 @@ static void userptr(int fd, int dir)
> igt_assert(posix_memalign(&ptr, 4096, 4096) == 0);
> igt_require(__gem_userptr(fd, ptr, 4096, 0, 0, &handle) == 0);
>
> - __capture1(fd, dir, 0, handle);
> + __capture1(fd, dir, intel_ctx_0(fd), 0, handle);
>
> gem_close(fd, handle);
> free(ptr);
> @@ -596,14 +600,15 @@ static size_t safer_strlen(const char *s)
> return s ? strlen(s) : 0;
> }
>
> -#define test_each_engine(T, i915, e) \
> - igt_subtest_with_dynamic(T) __for_each_physical_engine(i915, e) \
> +#define test_each_engine(T, i915, ctx, e) \
> + igt_subtest_with_dynamic(T) for_each_ctx_engine(i915, ctx, e) \
> for_each_if(gem_class_can_store_dword(i915, (e)->class)) \
> igt_dynamic_f("%s", (e)->name)
>
> igt_main
> {
> const struct intel_execution_engine2 *e;
> + const intel_ctx_t *ctx = NULL;
Initialization not necessary.
> igt_hang_t hang;
> int fd = -1;
> int dir = -1;
> @@ -620,15 +625,16 @@ igt_main
> igt_require_gem(fd);
> gem_require_mmap_wc(fd);
> igt_require(has_capture(fd));
> - igt_allow_hang(fd, 0, HANG_ALLOW_CAPTURE);
> + ctx = intel_ctx_create_all_physical(fd);
> + igt_allow_hang(fd, ctx->id, HANG_ALLOW_CAPTURE);
>
> dir = igt_sysfs_open(fd);
> igt_require(igt_sysfs_set(dir, "error", "Begone!"));
> igt_require(safer_strlen(igt_sysfs_get(dir, "error")) > 0);
> }
>
> - test_each_engine("capture", fd, e)
> - capture(fd, dir, e->flags);
> + test_each_engine("capture", fd, ctx, e)
> + capture(fd, dir, ctx, e->flags);
>
> igt_subtest_f("many-4K-zero") {
> igt_require(gem_can_store_dword(fd, 0));
> @@ -662,8 +668,8 @@ igt_main
> userptr(fd, dir);
> }
>
> - test_each_engine("pi", fd, e)
> - prioinv(fd, dir, e->flags, e->name);
> + test_each_engine("pi", fd, ctx, e)
> + prioinv(fd, dir, ctx, e->flags, e->name);
>
> igt_fixture {
> close(dir);
Destroy for completeness.
With above:
Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
--
Zbigniew
> --
> 2.31.1
>
> _______________________________________________
> igt-dev mailing list
> igt-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev
More information about the igt-dev
mailing list