summaryrefslogtreecommitdiff
path: root/tests/gem_pread_after_blit.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2013-08-06 15:03:40 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2013-08-06 16:58:59 +0100
commit24eade08ab49bc2e1e16260472c34365e1e26d50 (patch)
tree16635c6085a5872e7e6fe820b6ae546dc51f7c3b /tests/gem_pread_after_blit.c
parent3052fe2c91f927cce7f6b9340357ea14fed24c9a (diff)
gem_pread_after_blit: Exercise reading back through different cache levels
Diffstat (limited to 'tests/gem_pread_after_blit.c')
-rw-r--r--tests/gem_pread_after_blit.c29
1 files changed, 26 insertions, 3 deletions
diff --git a/tests/gem_pread_after_blit.c b/tests/gem_pread_after_blit.c
index 65bc3b1a..178357ed 100644
--- a/tests/gem_pread_after_blit.c
+++ b/tests/gem_pread_after_blit.c
@@ -124,11 +124,17 @@ verify_small_read(drm_intel_bo *bo, uint32_t val)
}
}
-static void do_test(drm_intel_bo *src[2],
+static void do_test(int fd, int cache_level,
+ drm_intel_bo *src[2],
const uint32_t start[2],
drm_intel_bo *tmp[2],
int loop)
{
+ if (cache_level != -1) {
+ gem_set_cacheing(fd, tmp[0]->handle, cache_level);
+ gem_set_cacheing(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);
@@ -184,14 +190,31 @@ main(int argc, char **argv)
dst[1] = drm_intel_bo_alloc(bufmgr, "dst bo", size, 4096);
if (drmtest_run_subtest("normal"))
- do_test(src, start, dst, 1);
+ do_test(fd, -1, src, start, dst, 1);
if (drmtest_run_subtest("interruptible")) {
drmtest_fork_signal_helper();
- do_test(src, start, dst, 100);
+ do_test(fd, -1, src, start, dst, 100);
drmtest_stop_signal_helper();
}
+ if (drmtest_run_subtest("normal-uncached"))
+ do_test(fd, 0, src, start, dst, 1);
+
+ if (drmtest_run_subtest("interruptible-uncached")) {
+ drmtest_fork_signal_helper();
+ do_test(fd, 0, src, start, dst, 100);
+ drmtest_stop_signal_helper();
+ }
+
+ if (drmtest_run_subtest("normal-snoop"))
+ do_test(fd, 1, src, start, dst, 1);
+
+ if (drmtest_run_subtest("interruptible-snoop")) {
+ drmtest_fork_signal_helper();
+ do_test(fd, 1, src, start, dst, 100);
+ drmtest_stop_signal_helper();
+ }
drm_intel_bo_unreference(src[0]);
drm_intel_bo_unreference(src[1]);
drm_intel_bo_unreference(dst[0]);