diff --git a/tests/Makefile.am b/tests/Makefile.am index cc8de8bb..5d0ed3e3 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -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 \ diff --git a/tests/gem_pwrite_pread.c b/tests/gem_pwrite_pread.c index 9f7c227a..09a1f005 100644 --- a/tests/gem_pwrite_pread.c +++ b/tests/gem_pwrite_pread.c @@ -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; + 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); + 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; + 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); + 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; + 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); + 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; + 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); + 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);