#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 <drm.h>
+
+#include "ioctl_wrappers.h"
#include "drmtest.h"
-#include "intel_bufmgr.h"
-#include "intel_batchbuffer.h"
-#include "intel_gpu_tools.h"
+#include "intel_chipset.h"
+#include "intel_io.h"
+#include "igt_aux.h"
static drm_intel_bufmgr *bufmgr;
struct intel_batchbuffer *batch;
drm_intel_bo_get_subdata(bo, 0, size, buf);
for (i = 0; i < size / 4; i++) {
- if (buf[i] != val) {
- fprintf(stderr,
- "Unexpected value 0x%08x instead of "
- "0x%08x at offset 0x%08x (%p)\n",
- buf[i], val, i * 4, buf);
- abort();
- }
+ igt_assert_f(buf[i] == val,
+ "Unexpected value 0x%08x instead of "
+ "0x%08x at offset 0x%08x (%p)\n",
+ buf[i], val, i * 4, buf);
val++;
}
}
drm_intel_bo_get_subdata(bo, offset, PAGE_SIZE, buf);
for (i = 0; i < PAGE_SIZE; i += 4) {
- if (buf[i / 4] != val) {
- fprintf(stderr,
- "Unexpected value 0x%08x instead of "
- "0x%08x at offset 0x%08x\n",
- buf[i / 4], val, i * 4);
- abort();
- }
+ igt_assert_f(buf[i / 4] == val,
+ "Unexpected value 0x%08x instead of "
+ "0x%08x at offset 0x%08x\n",
+ buf[i / 4], val, i * 4);
val++;
}
}
int loop)
{
if (cache_level != -1) {
- if (gem_set_caching(fd, tmp[0]->handle, cache_level) ||
- gem_set_caching(fd, tmp[1]->handle, cache_level))
- return;
+ gem_set_caching(fd, tmp[0]->handle, cache_level);
+ gem_set_caching(fd, tmp[1]->handle, cache_level);
}
do {
/* First, do a full-buffer read after blitting */
- intel_copy_bo(batch, tmp[0], src[0], width, height);
+ intel_copy_bo(batch, tmp[0], src[0], width*height*4);
verify_large_read(tmp[0], start[0]);
- intel_copy_bo(batch, tmp[0], src[1], width, height);
+ intel_copy_bo(batch, tmp[0], src[1], width*height*4);
verify_large_read(tmp[0], start[1]);
- intel_copy_bo(batch, tmp[0], src[0], width, height);
+ intel_copy_bo(batch, tmp[0], src[0], width*height*4);
verify_small_read(tmp[0], start[0]);
- intel_copy_bo(batch, tmp[0], src[1], width, height);
+ intel_copy_bo(batch, tmp[0], src[1], width*height*4);
verify_small_read(tmp[0], start[1]);
- intel_copy_bo(batch, tmp[0], src[0], width, height);
+ intel_copy_bo(batch, tmp[0], src[0], width*height*4);
verify_large_read(tmp[0], start[0]);
- intel_copy_bo(batch, tmp[0], src[0], width, height);
- intel_copy_bo(batch, tmp[1], src[1], width, height);
+ intel_copy_bo(batch, tmp[0], src[0], width*height*4);
+ intel_copy_bo(batch, tmp[1], src[1], width*height*4);
verify_large_read(tmp[0], start[0]);
verify_large_read(tmp[1], start[1]);
- intel_copy_bo(batch, tmp[0], src[0], width, height);
- intel_copy_bo(batch, tmp[1], src[1], width, height);
+ intel_copy_bo(batch, tmp[0], src[0], width*height*4);
+ intel_copy_bo(batch, tmp[1], src[1], width*height*4);
verify_large_read(tmp[1], start[1]);
verify_large_read(tmp[0], start[0]);
- intel_copy_bo(batch, tmp[1], src[0], width, height);
- intel_copy_bo(batch, tmp[0], src[1], width, height);
+ intel_copy_bo(batch, tmp[1], src[0], width*height*4);
+ intel_copy_bo(batch, tmp[0], src[1], width*height*4);
verify_large_read(tmp[0], start[1]);
verify_large_read(tmp[1], start[0]);
} while (--loop);
}
-int
-main(int argc, char **argv)
+drm_intel_bo *src[2], *dst[2];
+int fd;
+
+igt_main
{
const uint32_t start[2] = {0, 1024 * 1024 / 4};
- drm_intel_bo *src[2], *dst[2];
- int fd;
- drmtest_subtest_init(argc, argv);
- drmtest_skip_on_simulation();
+ igt_skip_on_simulation();
- fd = drm_open_any();
+ igt_fixture {
+ fd = drm_open_any();
- bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
- drm_intel_bufmgr_gem_enable_reuse(bufmgr);
- batch = intel_batchbuffer_alloc(bufmgr, intel_get_drm_devid(fd));
+ bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
+ drm_intel_bufmgr_gem_enable_reuse(bufmgr);
+ batch = intel_batchbuffer_alloc(bufmgr, intel_get_drm_devid(fd));
- src[0] = create_bo(start[0]);
- src[1] = create_bo(start[1]);
+ src[0] = create_bo(start[0]);
+ src[1] = create_bo(start[1]);
- dst[0] = drm_intel_bo_alloc(bufmgr, "dst bo", size, 4096);
- dst[1] = drm_intel_bo_alloc(bufmgr, "dst bo", size, 4096);
+ dst[0] = drm_intel_bo_alloc(bufmgr, "dst bo", size, 4096);
+ dst[1] = drm_intel_bo_alloc(bufmgr, "dst bo", size, 4096);
+ }
- if (drmtest_run_subtest("normal"))
+ igt_subtest("normal")
do_test(fd, -1, src, start, dst, 1);
- if (drmtest_run_subtest("interruptible")) {
- drmtest_fork_signal_helper();
+ igt_subtest("interruptible") {
+ igt_fork_signal_helper();
do_test(fd, -1, src, start, dst, 100);
- drmtest_stop_signal_helper();
+ igt_stop_signal_helper();
}
- if (drmtest_run_subtest("normal-uncached"))
+ igt_subtest("normal-uncached")
do_test(fd, 0, src, start, dst, 1);
- if (drmtest_run_subtest("interruptible-uncached")) {
- drmtest_fork_signal_helper();
+ igt_subtest("interruptible-uncached") {
+ igt_fork_signal_helper();
do_test(fd, 0, src, start, dst, 100);
- drmtest_stop_signal_helper();
+ igt_stop_signal_helper();
}
- if (drmtest_run_subtest("normal-snoop"))
+ igt_subtest("normal-snoop")
do_test(fd, 1, src, start, dst, 1);
- if (drmtest_run_subtest("interruptible-snoop")) {
- drmtest_fork_signal_helper();
+ igt_subtest("interruptible-snoop") {
+ igt_fork_signal_helper();
do_test(fd, 1, src, start, dst, 100);
- drmtest_stop_signal_helper();
+ igt_stop_signal_helper();
}
- if (drmtest_run_subtest("normal-display"))
+ igt_subtest("normal-display")
do_test(fd, 2, src, start, dst, 1);
- if (drmtest_run_subtest("interruptible-display")) {
- drmtest_fork_signal_helper();
+ igt_subtest("interruptible-display") {
+ igt_fork_signal_helper();
do_test(fd, 2, src, start, dst, 100);
- drmtest_stop_signal_helper();
+ igt_stop_signal_helper();
}
- drm_intel_bo_unreference(src[0]);
- drm_intel_bo_unreference(src[1]);
- drm_intel_bo_unreference(dst[0]);
- drm_intel_bo_unreference(dst[1]);
- intel_batchbuffer_free(batch);
- drm_intel_bufmgr_destroy(bufmgr);
+ igt_fixture {
+ drm_intel_bo_unreference(src[0]);
+ drm_intel_bo_unreference(src[1]);
+ drm_intel_bo_unreference(dst[0]);
+ drm_intel_bo_unreference(dst[1]);
- close(fd);
+ intel_batchbuffer_free(batch);
+ drm_intel_bufmgr_destroy(bufmgr);
+ }
- return 0;
+ close(fd);
}