tests/gem_pwrite_pread: subtest annotation
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 7 Aug 2013 09:59:05 +0000 (11:59 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 7 Aug 2013 09:59:05 +0000 (11:59 +0200)
This testcase mixes correctnes tests with performance tests, so it's
good to track the different correctness test separate for QA.

Together with pread_after_blt the pwrite->blt tests here exercise the
full cache coherency lifecycle of both snooped and uncached objects.

/me is happy

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
tests/Makefile.am
tests/gem_pwrite_pread.c

index cc8de8b..5d0ed3e 100644 (file)
@@ -32,6 +32,7 @@ TESTS_progs_M = \
        gem_partial_pwrite_pread \
        gem_pread_after_blit \
        gem_prw_concurrent_blit \
+       gem_pwrite_pread \
        gem_ringfill \
        gem_set_tiling_vs_blt \
        gem_suspend \
@@ -74,7 +75,6 @@ TESTS_progs = \
        gem_pipe_control_store_loop \
        gem_pread \
        gem_pwrite \
-       gem_pwrite_pread \
        gem_readwrite \
        gem_reg_read \
        gem_reloc_overflow \
index 9f7c227..09a1f00 100644 (file)
@@ -383,6 +383,7 @@ int main(int argc, char **argv)
        uint32_t *tmp, src, dst;
        int fd, count;
 
+       drmtest_subtest_init(argc, argv);
        drmtest_skip_on_simulation();
 
        if (argc > 1)
@@ -399,62 +400,74 @@ int main(int argc, char **argv)
 
        gem_set_cacheing(fd, src, 0);
        gem_set_cacheing(fd, dst, 0);
-       test_copy(fd, src, dst, tmp, object_size);
-       for (count = 1; count <= 1<<17; count <<= 1) {
-               struct timeval start, end;
-
-               gettimeofday(&start, NULL);
-               copy(fd, src, dst, tmp, object_size, count);
-               gettimeofday(&end, NULL);
-               printf("Time to uncached copy %d bytes x %6d:   %7.3fµs, %s\n",
-                      object_size, count,
-                      elapsed(&start, &end, count),
-                      bytes_per_sec((char *)buf, object_size/elapsed(&start, &end, count)*1e6));
-               fflush(stdout);
+       if (drmtest_run_subtest("uncached-copy-correctness"))
+               test_copy(fd, src, dst, tmp, object_size);
+       if (drmtest_run_subtest("uncached-copy-performance")) {
+               for (count = 1; count <= 1<<17; count <<= 1) {
+                       struct timeval start, end;
+
+                       gettimeofday(&start, NULL);
+                       copy(fd, src, dst, tmp, object_size, count);
+                       gettimeofday(&end, NULL);
+                       printf("Time to uncached copy %d bytes x %6d:   %7.3fµs, %s\n",
+                              object_size, count,
+                              elapsed(&start, &end, count),
+                              bytes_per_sec((char *)buf, object_size/elapsed(&start, &end, count)*1e6));
+                       fflush(stdout);
+               }
        }
 
-       test_as_gtt_mmap(fd, src, dst, object_size);
-       for (count = 1; count <= 1<<17; count <<= 1) {
-               struct timeval start, end;
-
-               gettimeofday(&start, NULL);
-               as_gtt_mmap(fd, src, dst, tmp, object_size, count);
-               gettimeofday(&end, NULL);
-               printf("** mmap uncached copy %d bytes x %6d:   %7.3fµs, %s\n",
-                      object_size, count,
-                      elapsed(&start, &end, count),
-                      bytes_per_sec((char *)buf, object_size/elapsed(&start, &end, count)*1e6));
-               fflush(stdout);
+       if (drmtest_run_subtest("uncached-pwrite-blt-gtt_mmap-correctness"))
+               test_as_gtt_mmap(fd, src, dst, object_size);
+       if (drmtest_run_subtest("uncached-pwrite-blt-gtt_mmap-performance")) {
+               for (count = 1; count <= 1<<17; count <<= 1) {
+                       struct timeval start, end;
+
+                       gettimeofday(&start, NULL);
+                       as_gtt_mmap(fd, src, dst, tmp, object_size, count);
+                       gettimeofday(&end, NULL);
+                       printf("** mmap uncached copy %d bytes x %6d:   %7.3fµs, %s\n",
+                              object_size, count,
+                              elapsed(&start, &end, count),
+                              bytes_per_sec((char *)buf, object_size/elapsed(&start, &end, count)*1e6));
+                       fflush(stdout);
+               }
        }
 
        gem_set_cacheing(fd, src, 1);
        gem_set_cacheing(fd, dst, 1);
-       test_copy(fd, src, dst, tmp, object_size);
-       for (count = 1; count <= 1<<17; count <<= 1) {
-               struct timeval start, end;
-
-               gettimeofday(&start, NULL);
-               copy(fd, src, dst, tmp, object_size, count);
-               gettimeofday(&end, NULL);
-               printf("Time to snooped copy %d bytes x %6d:    %7.3fµs, %s\n",
-                      object_size, count,
-                      elapsed(&start, &end, count),
-                      bytes_per_sec((char *)buf, object_size/elapsed(&start, &end, count)*1e6));
-               fflush(stdout);
+       if (drmtest_run_subtest("snooped-copy-correctness"))
+               test_copy(fd, src, dst, tmp, object_size);
+       if (drmtest_run_subtest("snooped-copy-performance")) {
+               for (count = 1; count <= 1<<17; count <<= 1) {
+                       struct timeval start, end;
+
+                       gettimeofday(&start, NULL);
+                       copy(fd, src, dst, tmp, object_size, count);
+                       gettimeofday(&end, NULL);
+                       printf("Time to snooped copy %d bytes x %6d:    %7.3fµs, %s\n",
+                              object_size, count,
+                              elapsed(&start, &end, count),
+                              bytes_per_sec((char *)buf, object_size/elapsed(&start, &end, count)*1e6));
+                       fflush(stdout);
+               }
        }
 
-       test_as_cpu_mmap(fd, src, dst, object_size);
-       for (count = 1; count <= 1<<17; count <<= 1) {
-               struct timeval start, end;
-
-               gettimeofday(&start, NULL);
-               as_cpu_mmap(fd, src, dst, tmp, object_size, count);
-               gettimeofday(&end, NULL);
-               printf("** mmap snooped copy %d bytes x %6d:    %7.3fµs, %s\n",
-                      object_size, count,
-                      elapsed(&start, &end, count),
-                      bytes_per_sec((char *)buf, object_size/elapsed(&start, &end, count)*1e6));
-               fflush(stdout);
+       if (drmtest_run_subtest("snooped-pwrite-blt-cpu_mmap-correctness"))
+               test_as_cpu_mmap(fd, src, dst, object_size);
+       if (drmtest_run_subtest("snooped-pwrite-blt-cpu_mmap-performance")) {
+               for (count = 1; count <= 1<<17; count <<= 1) {
+                       struct timeval start, end;
+
+                       gettimeofday(&start, NULL);
+                       as_cpu_mmap(fd, src, dst, tmp, object_size, count);
+                       gettimeofday(&end, NULL);
+                       printf("** mmap snooped copy %d bytes x %6d:    %7.3fµs, %s\n",
+                              object_size, count,
+                              elapsed(&start, &end, count),
+                              bytes_per_sec((char *)buf, object_size/elapsed(&start, &end, count)*1e6));
+                       fflush(stdout);
+               }
        }
 
        free(tmp);