diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-05-10 20:25:33 +0200 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-05-10 20:25:33 +0200 |
commit | 544e35785198045d76d8f11ee414c7f1661ffc77 (patch) | |
tree | 134bf9c357f5726bdd5713f9841893d7bd016c1c /tests/gem_gtt_speed.c | |
parent | 78c38dcddb79052a964081c470bb2641fb3daf95 (diff) |
tests/gtt_speed: try to outwit gcc
It optimized away the read loops ;-)
Also fix up the size to not be 1/4th of the one we want for tiled
buffer tests.
Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'tests/gem_gtt_speed.c')
-rw-r--r-- | tests/gem_gtt_speed.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/tests/gem_gtt_speed.c b/tests/gem_gtt_speed.c index 8c66aee9..69cd1ff3 100644 --- a/tests/gem_gtt_speed.c +++ b/tests/gem_gtt_speed.c @@ -102,23 +102,29 @@ int main(int argc, char **argv) /* prefault into gtt */ { - uint32_t *ptr = gem_mmap(fd, handle, size, PROT_READ); + uint32_t *ptr = gem_mmap(fd, handle, size, PROT_READ | PROT_WRITE); int x = 0; for (i = 0; i < size/sizeof(*ptr); i++) x += ptr[i]; + /* force overtly clever gcc to actually compute x */ + ptr[0] = x; + munmap(ptr, size); } /* mmap read */ gettimeofday(&start, NULL); for (loop = 0; loop < 1000; loop++) { - uint32_t *ptr = gem_mmap(fd, handle, size, PROT_READ); + uint32_t *ptr = gem_mmap(fd, handle, size, PROT_READ | PROT_WRITE); int x = 0; for (i = 0; i < size/sizeof(*ptr); i++) x += ptr[i]; + /* force overtly clever gcc to actually compute x */ + ptr[0] = x; + munmap(ptr, size); } gettimeofday(&end, NULL); @@ -142,12 +148,15 @@ int main(int argc, char **argv) /* mmap read */ gettimeofday(&start, NULL); for (loop = 0; loop < 1000; loop++) { - uint32_t *ptr = gem_mmap(fd, handle, size, PROT_READ); + uint32_t *ptr = gem_mmap(fd, handle, size, PROT_READ | PROT_WRITE); int x = 0; for (i = 0; i < size/sizeof(*ptr); i++) x += ptr[i]; + /* force overtly clever gcc to actually compute x */ + ptr[0] = x; + munmap(ptr, size); } gettimeofday(&end, NULL); @@ -214,6 +223,8 @@ int main(int argc, char **argv) gettimeofday(&end, NULL); printf("Time to pread %dk through the GTT (clflush): %7.3fµs\n", size/1024, elapsed(&start, &end, loop)); + + size *= 4; } } |