gem_gtt_speed: Use a memset() to test streaming performance
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 13 Sep 2012 13:55:53 +0000 (14:55 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 13 Sep 2012 13:59:09 +0000 (14:59 +0100)
This make the reasonable assumption that the libc code for memset() can
saturate the memory bandwidth -- at any rate it should do better than
the copy.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
tests/gem_gtt_speed.c

index 73a3c6d..824eca3 100644 (file)
@@ -133,6 +133,16 @@ int main(int argc, char **argv)
                                gettimeofday(&end, NULL);
                                printf("Time to write %dk through a CPU map:            %7.3fµs\n",
                                       size/1024, elapsed(&start, &end, loop));
+
+                               gettimeofday(&start, NULL);
+                               for (loop = 0; loop < 1000; loop++) {
+                                       base = gem_mmap__cpu(fd, handle, size, PROT_READ | PROT_WRITE);
+                                       memset(base, 0, size);
+                                       munmap(base, size);
+                               }
+                               gettimeofday(&end, NULL);
+                               printf("Time to clear %dk through a CPU map:            %7.3fµs\n",
+                                      size/1024, elapsed(&start, &end, loop));
                        }
 
                        /* CPU pwrite */
@@ -200,6 +210,17 @@ int main(int argc, char **argv)
                printf("Time to write %dk through a GTT map:            %7.3fµs\n",
                       size/1024, elapsed(&start, &end, loop));
 
+               /* mmap clear */
+               gettimeofday(&start, NULL);
+               for (loop = 0; loop < 1000; loop++) {
+                       uint32_t *base = gem_mmap(fd, handle, size, PROT_READ | PROT_WRITE);
+                       memset(base, 0, size);
+                       munmap(base, size);
+               }
+               gettimeofday(&end, NULL);
+               printf("Time to clear %dk through a GTT map:            %7.3fµs\n",
+                      size/1024, elapsed(&start, &end, loop));
+
                /* mmap read */
                gettimeofday(&start, NULL);
                for (loop = 0; loop < 1000; loop++) {