summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2012-05-10 20:25:33 +0200
committerDaniel Vetter <daniel.vetter@ffwll.ch>2012-05-10 20:25:33 +0200
commit544e35785198045d76d8f11ee414c7f1661ffc77 (patch)
tree134bf9c357f5726bdd5713f9841893d7bd016c1c
parent78c38dcddb79052a964081c470bb2641fb3daf95 (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>
-rw-r--r--tests/gem_gtt_speed.c17
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;
}
}