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>
This commit is contained in:
Daniel Vetter 2012-05-10 20:25:33 +02:00
parent 78c38dcddb
commit 544e357851

View File

@ -102,23 +102,29 @@ int main(int argc, char **argv)
/* prefault into gtt */ /* 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; int x = 0;
for (i = 0; i < size/sizeof(*ptr); i++) for (i = 0; i < size/sizeof(*ptr); i++)
x += ptr[i]; x += ptr[i];
/* force overtly clever gcc to actually compute x */
ptr[0] = x;
munmap(ptr, size); munmap(ptr, size);
} }
/* mmap read */ /* mmap read */
gettimeofday(&start, NULL); gettimeofday(&start, NULL);
for (loop = 0; loop < 1000; loop++) { 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; int x = 0;
for (i = 0; i < size/sizeof(*ptr); i++) for (i = 0; i < size/sizeof(*ptr); i++)
x += ptr[i]; x += ptr[i];
/* force overtly clever gcc to actually compute x */
ptr[0] = x;
munmap(ptr, size); munmap(ptr, size);
} }
gettimeofday(&end, NULL); gettimeofday(&end, NULL);
@ -142,12 +148,15 @@ int main(int argc, char **argv)
/* mmap read */ /* mmap read */
gettimeofday(&start, NULL); gettimeofday(&start, NULL);
for (loop = 0; loop < 1000; loop++) { 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; int x = 0;
for (i = 0; i < size/sizeof(*ptr); i++) for (i = 0; i < size/sizeof(*ptr); i++)
x += ptr[i]; x += ptr[i];
/* force overtly clever gcc to actually compute x */
ptr[0] = x;
munmap(ptr, size); munmap(ptr, size);
} }
gettimeofday(&end, NULL); gettimeofday(&end, NULL);
@ -214,6 +223,8 @@ int main(int argc, char **argv)
gettimeofday(&end, NULL); gettimeofday(&end, NULL);
printf("Time to pread %dk through the GTT (clflush): %7.3fµs\n", printf("Time to pread %dk through the GTT (clflush): %7.3fµs\n",
size/1024, elapsed(&start, &end, loop)); size/1024, elapsed(&start, &end, loop));
size *= 4;
} }
} }