On Tue, Nov 18, 2014 at 09:50:23AM +0000, Chris Wilson wrote:
> We should be able to execute batches up to the full GTT size (give or
> take fragmentation), so let's try!
> 
> Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
> ---
>  tests/gem_exec_big.c | 28 ++++++++++++++++++----------
>  1 file changed, 18 insertions(+), 10 deletions(-)
> 
> diff --git a/tests/gem_exec_big.c b/tests/gem_exec_big.c
> index b82774f..b5ec71c 100644
> --- a/tests/gem_exec_big.c
> +++ b/tests/gem_exec_big.c
> @@ -46,10 +46,9 @@
>  #include "drm.h"
>  #include "ioctl_wrappers.h"
>  #include "drmtest.h"
> +#include "igt_aux.h"
>  
> -#define BATCH_SIZE           (1024*1024)
> -
> -static void exec(int fd, uint32_t handle, uint32_t reloc_ofs)
> +static void exec(int fd, uint32_t handle, uint32_t reloc_ofs, unsigned flags)
>  {
>       struct drm_i915_gem_execbuffer2 execbuf;
>       struct drm_i915_gem_exec_object2 gem_exec[1];
> @@ -80,7 +79,7 @@ static void exec(int fd, uint32_t handle, uint32_t 
> reloc_ofs)
>       execbuf.num_cliprects = 0;
>       execbuf.DR1 = 0;
>       execbuf.DR4 = 0;
> -     execbuf.flags = 0;
> +     execbuf.flags = flags;
>       i915_execbuffer2_set_context_id(execbuf, 0);
>       execbuf.rsvd2 = 0;
>  
> @@ -100,27 +99,36 @@ static void exec(int fd, uint32_t handle, uint32_t 
> reloc_ofs)
>  igt_simple_main
>  {
>       uint32_t batch[2] = {MI_BATCH_BUFFER_END};
> -     uint32_t handle;
>       int fd;
>       uint32_t reloc_ofs;
>       unsigned batch_size;
> +     int max;
>  
>       igt_skip_on_simulation();
>  
>       fd = drm_open_any();
> +     max = 3 * gem_aperture_size(fd) / 4;
> +
> +     igt_require(intel_check_memory(1, max, CHECK_RAM));

This might result in the testcase skipping and us loosing the coverage -
our QA tends to have puny machines. Better to have two subtests?
-Daniel

>  
> -     for (batch_size = BATCH_SIZE/4; batch_size <= BATCH_SIZE; batch_size += 
> 4096) {
> -             handle = gem_create(fd, batch_size);
> +     for (batch_size = 4096; batch_size <= max; ) {
> +             uint32_t handle = gem_create(fd, batch_size);
>               gem_write(fd, handle, 0, batch, sizeof(batch));
>  
>               for (reloc_ofs = 4096; reloc_ofs < batch_size; reloc_ofs += 
> 4096) {
>                       igt_debug("batch_size %u, reloc_ofs %u\n",
>                                 batch_size, reloc_ofs);
> -                     exec(fd, handle, reloc_ofs);
> +                     exec(fd, handle, reloc_ofs, 0);
> +                     exec(fd, handle, reloc_ofs, I915_EXEC_SECURE);
>               }
> -     }
>  
> -     gem_close(fd, handle);
> +             gem_madvise(fd, handle, I915_MADV_DONTNEED);
> +
> +             if (batch_size < max && 2*batch_size > max)
> +                     batch_size = max;
> +             else
> +                     batch_size *= 2;
> +     }
>  
>       close(fd);
>  }
> -- 
> 2.1.3
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to