lib/igt.cocci: Add stanza for for_each_pipe
[platform/upstream/intel-gpu-tools.git] / tests / gen3_mixed_blits.c
index 637b8a2..75d61a5 100644 (file)
 #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 <sys/mman.h>
 #include <sys/ioctl.h>
 #include "drm.h"
-#include "i915_drm.h"
+#include "ioctl_wrappers.h"
 #include "drmtest.h"
-#include "intel_gpu_tools.h"
+#include "intel_io.h"
+#include "intel_chipset.h"
 
 #include "i915_reg.h"
 #include "i915_3d.h"
@@ -65,28 +64,6 @@ static inline uint32_t pack_float(float f)
        return u.dw;
 }
 
-static uint32_t gem_create(int fd, int size)
-{
-       struct drm_i915_gem_create create;
-
-       create.handle = 0;
-       create.size = size;
-       (void)drmIoctl(fd, DRM_IOCTL_I915_GEM_CREATE, &create);
-       assert(create.handle);
-
-       return create.handle;
-}
-
-static uint64_t
-gem_aperture_size(int fd)
-{
-       struct drm_i915_gem_get_aperture aperture;
-
-       aperture.aper_size = 512*1024*1024;
-       (void)drmIoctl(fd, DRM_IOCTL_I915_GEM_GET_APERTURE, &aperture);
-       return aperture.aper_size;
-}
-
 static uint32_t fill_reloc(struct drm_i915_gem_relocation_entry *reloc,
                           uint32_t offset,
                           uint32_t handle,
@@ -290,11 +267,11 @@ render_copy(int fd,
        if ((b - batch) & 1)
                *b++ = 0;
 
-       assert(b - batch <= 1024);
+       igt_assert(b - batch <= 1024);
        handle = gem_create(fd, 4096);
        gem_write(fd, handle, 0, batch, (b-batch)*sizeof(batch[0]));
 
-       assert(r-reloc == 2);
+       igt_assert(r-reloc == 2);
 
        tiling_bits = 0;
        if (use_fence)
@@ -334,14 +311,15 @@ render_copy(int fd,
        exec.num_cliprects = 0;
        exec.cliprects_ptr = 0;
        exec.flags = 0;
-       exec.rsvd1 = exec.rsvd2 = 0;
+       i915_execbuffer2_set_context_id(exec, 0);
+       exec.rsvd2 = 0;
 
        ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
        while (ret && errno == EBUSY) {
                drmCommandNone(fd, DRM_I915_GEM_THROTTLE);
                ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
        }
-       assert(ret == 0);
+       igt_assert(ret == 0);
 
        gem_close(fd, handle);
 }
@@ -357,7 +335,7 @@ static void blt_copy(int fd, uint32_t dst, uint32_t src)
 
        *b++ = (XY_SRC_COPY_BLT_CMD |
                XY_SRC_COPY_BLT_WRITE_ALPHA |
-               XY_SRC_COPY_BLT_WRITE_RGB);
+               XY_SRC_COPY_BLT_WRITE_RGB | 6);
        *b++ = 3 << 24 | 0xcc << 16 | WIDTH * 4;
        *b++ = 0;
        *b++ = HEIGHT << 16 | WIDTH;
@@ -371,11 +349,11 @@ static void blt_copy(int fd, uint32_t dst, uint32_t src)
        if ((b - batch) & 1)
                *b++ = 0;
 
-       assert(b - batch <= 1024);
+       igt_assert(b - batch <= 1024);
        handle = gem_create(fd, 4096);
        gem_write(fd, handle, 0, batch, (b-batch)*sizeof(batch[0]));
 
-       assert(r-reloc == 2);
+       igt_assert(r-reloc == 2);
 
        obj[0].handle = dst;
        obj[0].relocation_count = 0;
@@ -411,14 +389,15 @@ static void blt_copy(int fd, uint32_t dst, uint32_t src)
        exec.num_cliprects = 0;
        exec.cliprects_ptr = 0;
        exec.flags = 0;
-       exec.rsvd1 = exec.rsvd2 = 0;
+       i915_execbuffer2_set_context_id(exec, 0);
+       exec.rsvd2 = 0;
 
        ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
        while (ret && errno == EBUSY) {
                drmCommandNone(fd, DRM_I915_GEM_THROTTLE);
                ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &exec);
        }
-       assert(ret == 0);
+       igt_assert(ret == 0);
 
        gem_close(fd, handle);
 }
@@ -440,26 +419,6 @@ retry:
        }
 }
 
-static void *gem_mmap(int fd, uint32_t handle, int size, int prot)
-{
-       struct drm_i915_gem_mmap_gtt mmap_arg;
-       void *ptr;
-
-       mmap_arg.handle = handle;
-       if (drmIoctl(fd, DRM_IOCTL_I915_GEM_MMAP_GTT, &mmap_arg)) {
-               assert(0);
-               return NULL;
-       }
-
-       ptr = mmap(0, size, prot, MAP_SHARED, fd, mmap_arg.offset);
-       if (ptr == MAP_FAILED) {
-               assert(0);
-               ptr = NULL;
-       }
-
-       return ptr;
-}
-
 static uint32_t
 create_bo(int fd, uint32_t val, int tiling)
 {
@@ -472,6 +431,7 @@ create_bo(int fd, uint32_t val, int tiling)
 
        /* Fill the BO with dwords starting at val */
        v = gem_mmap(fd, handle, WIDTH*HEIGHT*4, PROT_READ | PROT_WRITE);
+       igt_assert(v);
        for (i = 0; i < WIDTH*HEIGHT; i++)
                v[i] = val++;
        munmap(v, WIDTH*HEIGHT*4);
@@ -486,13 +446,12 @@ check_bo(int fd, uint32_t handle, uint32_t val)
        int i;
 
        v = gem_mmap(fd, handle, WIDTH*HEIGHT*4, PROT_READ);
+       igt_assert(v);
        for (i = 0; i < WIDTH*HEIGHT; i++) {
-               if (v[i] != val) {
-                       fprintf(stderr, "Expected 0x%08x, found 0x%08x "
-                               "at offset 0x%08x\n",
-                               val, v[i], i * 4);
-                       abort();
-               }
+               igt_assert_f(v[i] == val,
+                            "Expected 0x%08x, found 0x%08x "
+                            "at offset 0x%08x\n",
+                            val, v[i], i * 4);
                val++;
        }
        munmap(v, WIDTH*HEIGHT*4);
@@ -504,19 +463,18 @@ int main(int argc, char **argv)
        uint32_t start = 0;
        int i, fd, count;
 
+       igt_simple_init();
+
        fd = drm_open_any();
 
-       if (!IS_GEN3(intel_get_drm_devid(fd))) {
-               printf("gen3-only test, doing nothing\n");
-               return 77;
-       }
+       igt_require(IS_GEN3(intel_get_drm_devid(fd)));
 
        count = 0;
        if (argc > 1)
                count = atoi(argv[1]);
        if (count == 0)
                count = 3 * gem_aperture_size(fd) / (1024*1024) / 2;
-       printf("Using %d 1MiB buffers\n", count);
+       igt_info("Using %d 1MiB buffers\n", count);
 
        handle = malloc(sizeof(uint32_t)*count*3);
        tiling = handle + count;
@@ -528,12 +486,12 @@ int main(int argc, char **argv)
                start += 1024 * 1024 / 4;
        }
 
-       printf("Verifying initialisation..."); fflush(stdout);
+       igt_info("Verifying initialisation..."); fflush(stdout);
        for (i = 0; i < count; i++)
                check_bo(fd, handle[i], start_val[i]);
-       printf("done\n");
+       igt_info("done\n");
 
-       printf("Cyclic blits, forward..."); fflush(stdout);
+       igt_info("Cyclic blits, forward..."); fflush(stdout);
        for (i = 0; i < count * 32; i++) {
                int src = i % count;
                int dst = (i + 1) % count;
@@ -541,12 +499,12 @@ int main(int argc, char **argv)
                copy(fd, handle[dst], tiling[dst], handle[src], tiling[src]);
                start_val[dst] = start_val[src];
        }
-       printf("verifying..."); fflush(stdout);
+       igt_info("verifying..."); fflush(stdout);
        for (i = 0; i < count; i++)
                check_bo(fd, handle[i], start_val[i]);
-       printf("done\n");
+       igt_info("done\n");
 
-       printf("Cyclic blits, backward..."); fflush(stdout);
+       igt_info("Cyclic blits, backward..."); fflush(stdout);
        for (i = 0; i < count * 32; i++) {
                int src = (i + 1) % count;
                int dst = i % count;
@@ -554,12 +512,12 @@ int main(int argc, char **argv)
                copy(fd, handle[dst], tiling[dst], handle[src], tiling[src]);
                start_val[dst] = start_val[src];
        }
-       printf("verifying..."); fflush(stdout);
+       igt_info("verifying..."); fflush(stdout);
        for (i = 0; i < count; i++)
                check_bo(fd, handle[i], start_val[i]);
-       printf("done\n");
+       igt_info("done\n");
 
-       printf("Random blits..."); fflush(stdout);
+       igt_info("Random blits..."); fflush(stdout);
        for (i = 0; i < count * 32; i++) {
                int src = random() % count;
                int dst = random() % count;
@@ -570,10 +528,10 @@ int main(int argc, char **argv)
                        copy(fd, handle[dst], tiling[dst], handle[src], tiling[src]);
                start_val[dst] = start_val[src];
        }
-       printf("verifying..."); fflush(stdout);
+       igt_info("verifying..."); fflush(stdout);
        for (i = 0; i < count; i++)
                check_bo(fd, handle[i], start_val[i]);
-       printf("done\n");
+       igt_info("done\n");
 
        return 0;
 }