[Intel-gfx] [PATCH 1/2] tests: Exercise new API for using a LUT with the execbuffer

Daniel Vetter daniel at ffwll.ch
Wed Jan 16 16:44:44 CET 2013


On Wed, Jan 16, 2013 at 04:42:35PM +0100, Daniel Vetter wrote:
> On Wed, Dec 05, 2012 at 02:02:21PM +0000, Chris Wilson wrote:
> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> > ---
> >  tests/Makefile.am      |    1 +
> >  tests/gem_lut_handle.c |  109 ++++++++++++++++++++++++++++++++++++++++++++++++
> >  2 files changed, 110 insertions(+)
> >  create mode 100644 tests/gem_lut_handle.c
> > 
> > diff --git a/tests/Makefile.am b/tests/Makefile.am
> > index 18f7148..16d187f 100644
> > --- a/tests/Makefile.am
> > +++ b/tests/Makefile.am
> > @@ -37,6 +37,7 @@ TESTS_progs = \
> >  	gem_exec_blt \
> >  	gem_exec_faulting_reloc \
> >  	gem_readwrite \
> > +	gem_lut_handle \
> >  	gem_mmap \
> >  	gem_mmap_offset_exhaustion \
> >  	gem_hangcheck_forcewake \
> > diff --git a/tests/gem_lut_handle.c b/tests/gem_lut_handle.c
> > new file mode 100644
> > index 0000000..64676f2
> > --- /dev/null
> > +++ b/tests/gem_lut_handle.c
> > @@ -0,0 +1,109 @@
> > +/*
> > + * Copyright © 20012 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:
> > + *    Chris Wilson <chris at chris-wilson.co.uk>
> > + *
> > + */
> > +
> > +/* Exercises the basic execbuffer using theh andle LUT interface */
> > +
> > +#include <stdlib.h>
> > +#include <stdio.h>
> > +#include <string.h>
> > +#include <assert.h>
> > +#include <fcntl.h>
> > +#include <inttypes.h>
> > +#include <errno.h>
> > +#include <sys/stat.h>
> > +#include <sys/time.h>
> > +#include "drm.h"
> > +#include "i915_drm.h"
> > +#include "drmtest.h"
> > +
> > +#define MI_BATCH_BUFFER_END	(0xA<<23)
> > +#define BATCH_SIZE		(1024*1024)
> > +
> > +#define LOCAL_I915_EXEC_HANDLE_LUT (1<<11)
> > +
> > +#define USE_LUT 0x1
> > +#define BROKEN 0x2
> > +
> > +static int exec(int fd, uint32_t handle, unsigned int flags)
> > +{
> > +	struct drm_i915_gem_execbuffer2 execbuf;
> > +	struct drm_i915_gem_exec_object2 gem_exec[1];
> > +	struct drm_i915_gem_relocation_entry gem_reloc[1];
> > +
> > +	gem_reloc[0].offset = 1024;
> > +	gem_reloc[0].delta = 0;
> > +	gem_reloc[0].target_handle =
> > +		!!(flags & USE_LUT) ^ !!(flags & BROKEN) ? 0 : handle;
> 
> For added fun, can you pls add a few more USE_LUT cases with funny indexes
> like -1, num_exec_bos, num_exec_bos + 1?

Even more fun: scale the relocs and exec_bufs array a bit - 2**k {-1, +0,
+1} seem to be favourites for blowing things up ...
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch



More information about the Intel-gfx mailing list