[igt-dev] [PATCH i-g-t 5/6] tests/i915/gem_exec_schedule: Avoid cmdparser dependencies in deep()
Jason Ekstrand
jason at jlekstrand.net
Mon Jul 12 16:00:35 UTC 2021
On Mon, Jul 12, 2021 at 9:58 AM Daniel Vetter <daniel at ffwll.ch> wrote:
>
> On Sat, Jul 10, 2021 at 10:52:03PM -0500, Jason Ekstrand wrote:
> > When we have a command parser which runs synchronously, it blocks until
> > the batch is idle. For most userspace, this doesn't matter as they
> > never re-use a batch. With IGT, this can be a problem because it means
> > we can't queue up multiple instances of the same batch. The easy
> > solution is to create a new batch BO for each execbuf.
> >
> > Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
>
> I'm way behind on all the reloc work I've done, but should we instead do
> my patch (which you reviewed):
>
> https://patchwork.freedesktop.org/patch/437683/
Yup. I've replaced this patch with a rebased version of yours.
--Jason
> Or does that not work? Asking since you're papering over the same issue I
> spotted already ...
> -Daniel
>
> > ---
> > tests/i915/gem_exec_schedule.c | 10 +++++++---
> > 1 file changed, 7 insertions(+), 3 deletions(-)
> >
> > diff --git a/tests/i915/gem_exec_schedule.c b/tests/i915/gem_exec_schedule.c
> > index a75faeb68..ee7b10f7f 100644
> > --- a/tests/i915/gem_exec_schedule.c
> > +++ b/tests/i915/gem_exec_schedule.c
> > @@ -1891,7 +1891,6 @@ static void deep(int fd, const intel_ctx_cfg_t *cfg,
> > reloc.delta = sizeof(uint32_t) * n;
> > reloc.read_domains = I915_GEM_DOMAIN_RENDER;
> > reloc.write_domain = I915_GEM_DOMAIN_RENDER;
> > - obj[2].handle = gem_create(fd, 4096);
> > obj[2].relocs_ptr = to_user_pointer(&reloc);
> > obj[2].relocation_count = 1;
> >
> > @@ -1910,15 +1909,20 @@ static void deep(int fd, const intel_ctx_cfg_t *cfg,
> > }
> > batch[++i] = eb.rsvd1;
> > batch[++i] = MI_BATCH_BUFFER_END;
> > - gem_write(fd, obj[2].handle, 0, batch, sizeof(batch));
> >
> > gem_context_set_priority(fd, eb.rsvd1, MAX_PRIO - nreq + n);
> > for (int m = 0; m < XS; m++) {
> > obj[1].handle = dep[m];
> > reloc.target_handle = obj[1].handle;
> > +
> > + /* Create a new batch BO every time so we don't end
> > + * up with extra dependencies
> > + */
> > + obj[2].handle = gem_create(fd, 4096);
> > + gem_write(fd, obj[2].handle, 0, batch, sizeof(batch));
> > gem_execbuf(fd, &eb);
> > + gem_close(fd, obj[2].handle);
> > }
> > - gem_close(fd, obj[2].handle);
> > }
> > igt_info("First deptree: %d requests [%.3fs]\n",
> > n * XS, 1e-9*igt_nsec_elapsed(&tv));
> > --
> > 2.31.1
> >
> > _______________________________________________
> > igt-dev mailing list
> > igt-dev at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/igt-dev
>
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch
More information about the igt-dev
mailing list