On 24 July 2015 at 14:35, Derek Morton <derek.j.morton@xxxxxxxxx> wrote: > There are two versions of gem_exec_nop.c in benchmarks and tests > which causes the build system to have two build modules with > the same name. > This patch renames benchmarks/gem_exec_nop.c to > benchmarks/gem_exec_nop_benchmark.c using the existing > gem_userptr_benchmark.c as a naming convention. Would using LOCAL_MODULE_FILENAME help here, allowing an alternative output name for Android? https://developer.android.com/ndk/guides/android_mk.html#mdv > > v2: Also rename gem_mmap to gem_mmap_benchmark. Another file > which breaks android which was added after this patch was 1st > submitted. > > Signed-off-by: Derek Morton <derek.j.morton@xxxxxxxxx> > --- > benchmarks/Makefile.sources | 9 +- > benchmarks/gem_exec_nop.c | 153 --------------------------------- > benchmarks/gem_exec_nop_benchmark.c | 153 +++++++++++++++++++++++++++++++++ > benchmarks/gem_mmap.c | 165 ------------------------------------ > benchmarks/gem_mmap_benchmark.c | 165 ++++++++++++++++++++++++++++++++++++ > 5 files changed, 325 insertions(+), 320 deletions(-) > delete mode 100644 benchmarks/gem_exec_nop.c > create mode 100644 benchmarks/gem_exec_nop_benchmark.c > delete mode 100644 benchmarks/gem_mmap.c > create mode 100644 benchmarks/gem_mmap_benchmark.c > > diff --git a/benchmarks/Makefile.sources b/benchmarks/Makefile.sources > index 7ad95a5..35722b5 100644 > --- a/benchmarks/Makefile.sources > +++ b/benchmarks/Makefile.sources > @@ -1,11 +1,16 @@ > +# If you copy a test to benckmarks, rename it _benchmark > +# The andriod build will fail when trying to build multiple binaries with > +# the same name. > + > bin_PROGRAMS = \ > intel_upload_blit_large \ > intel_upload_blit_large_gtt \ > intel_upload_blit_large_map \ > intel_upload_blit_small \ > - gem_exec_nop \ > - gem_mmap \ > + gem_exec_nop_benchmark \ > + gem_mmap_benchmark \ > gem_prw \ > gem_userptr_benchmark \ > kms_vblank \ > $(NULL) > + > diff --git a/benchmarks/gem_exec_nop.c b/benchmarks/gem_exec_nop.c > deleted file mode 100644 > index 2a3abd2..0000000 > --- a/benchmarks/gem_exec_nop.c > +++ /dev/null > @@ -1,153 +0,0 @@ > -/* > - * Copyright © 2011 Intel Corporation > - * > - * Permission is hereby granted, free of charge, to any person obtaining a > - * copy of this software and associated documentation files (the "Software"), > - * to deal in the Software without restriction, including without limitation > - * the rights to use, copy, modify, merge, publish, distribute, sublicense, > - * and/or sell copies of the Software, and to permit persons to whom the > - * Software is furnished to do so, subject to the following conditions: > - * > - * The above copyright notice and this permission notice (including the next > - * paragraph) shall be included in all copies or substantial portions of the > - * Software. > - * > - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR > - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, > - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL > - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER > - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING > - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS > - * IN THE SOFTWARE. > - * > - * Authors: > - * Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > - * > - */ > - > -#include <unistd.h> > -#include <stdlib.h> > -#include <stdint.h> > -#include <stdio.h> > -#include <string.h> > -#include <fcntl.h> > -#include <inttypes.h> > -#include <errno.h> > -#include <sys/stat.h> > -#include <sys/ioctl.h> > -#include <sys/time.h> > -#include <time.h> > - > -#include "drm.h" > -#include "ioctl_wrappers.h" > -#include "drmtest.h" > -#include "intel_io.h" > -#include "igt_stats.h" > - > -#define LOCAL_I915_EXEC_NO_RELOC (1<<11) > -#define LOCAL_I915_EXEC_HANDLE_LUT (1<<12) > - > -static uint64_t elapsed(const struct timespec *start, > - const struct timespec *end, > - int loop) > -{ > - return (1000000000ULL*(end->tv_sec - start->tv_sec) + (end->tv_nsec - start->tv_nsec))/loop; > -} > - > -static int __gem_execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf) > -{ > - int err = 0; > - if (drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, execbuf)) > - err = -errno; > - return err; > -} > - > -static uint32_t batch(int fd) > -{ > - const uint32_t buf[] = {MI_BATCH_BUFFER_END}; > - uint32_t handle = gem_create(fd, 4096); > - gem_write(fd, handle, 0, buf, sizeof(buf)); > - return handle; > -} > - > -static int loop(unsigned ring, int reps) > -{ > - struct drm_i915_gem_execbuffer2 execbuf; > - struct drm_i915_gem_exec_object2 gem_exec; > - int count, fd; > - > - fd = drm_open_any(); > - > - memset(&gem_exec, 0, sizeof(gem_exec)); > - gem_exec.handle = batch(fd); > - > - memset(&execbuf, 0, sizeof(execbuf)); > - execbuf.buffers_ptr = (uintptr_t)&gem_exec; > - execbuf.buffer_count = 1; > - execbuf.flags = ring; > - execbuf.flags |= LOCAL_I915_EXEC_HANDLE_LUT; > - execbuf.flags |= LOCAL_I915_EXEC_NO_RELOC; > - if (__gem_execbuf(fd, &execbuf)) { > - execbuf.flags = ring; > - if (__gem_execbuf(fd, &execbuf)) > - return 77; > - } > - > - for (count = 1; count <= 1<<16; count <<= 1) { > - igt_stats_t stats; > - int n; > - > - igt_stats_init_with_size(&stats, reps); > - > - for (n = 0; n < reps; n++) { > - struct timespec start, end; > - int loops = count; > - sleep(1); /* wait for the hw to go back to sleep */ > - clock_gettime(CLOCK_MONOTONIC, &start); > - while (loops--) > - do_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf); > - gem_sync(fd, gem_exec.handle); > - clock_gettime(CLOCK_MONOTONIC, &end); > - igt_stats_push(&stats, elapsed(&start, &end, count)); > - } > - > - printf("%7.3f\n", igt_stats_get_trimean(&stats)/1000); > - igt_stats_fini(&stats); > - } > - return 0; > -} > - > -int main(int argc, char **argv) > -{ > - unsigned ring = I915_EXEC_RENDER; > - int reps = 13; > - int c; > - > - while ((c = getopt (argc, argv, "e:r:")) != -1) { > - switch (c) { > - case 'e': > - if (strcmp(optarg, "rcs") == 0) > - ring = I915_EXEC_RENDER; > - else if (strcmp(optarg, "vcs") == 0) > - ring = I915_EXEC_BSD; > - else if (strcmp(optarg, "bcs") == 0) > - ring = I915_EXEC_BLT; > - else if (strcmp(optarg, "vecs") == 0) > - ring = I915_EXEC_VEBOX; > - else > - ring = atoi(optarg); > - break; > - > - case 'r': > - reps = atoi(optarg); > - if (reps < 1) > - reps = 1; > - break; > - > - default: > - break; > - } > - } > - > - return loop(ring, reps); > -} > diff --git a/benchmarks/gem_exec_nop_benchmark.c b/benchmarks/gem_exec_nop_benchmark.c > new file mode 100644 > index 0000000..2a3abd2 > --- /dev/null > +++ b/benchmarks/gem_exec_nop_benchmark.c > @@ -0,0 +1,153 @@ > +/* > + * Copyright © 2011 Intel Corporation > + * > + * Permission is hereby granted, free of charge, to any person obtaining a > + * copy of this software and associated documentation files (the "Software"), > + * to deal in the Software without restriction, including without limitation > + * the rights to use, copy, modify, merge, publish, distribute, sublicense, > + * and/or sell copies of the Software, and to permit persons to whom the > + * Software is furnished to do so, subject to the following conditions: > + * > + * The above copyright notice and this permission notice (including the next > + * paragraph) shall be included in all copies or substantial portions of the > + * Software. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, > + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL > + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER > + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING > + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS > + * IN THE SOFTWARE. > + * > + * Authors: > + * Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > + * > + */ > + > +#include <unistd.h> > +#include <stdlib.h> > +#include <stdint.h> > +#include <stdio.h> > +#include <string.h> > +#include <fcntl.h> > +#include <inttypes.h> > +#include <errno.h> > +#include <sys/stat.h> > +#include <sys/ioctl.h> > +#include <sys/time.h> > +#include <time.h> > + > +#include "drm.h" > +#include "ioctl_wrappers.h" > +#include "drmtest.h" > +#include "intel_io.h" > +#include "igt_stats.h" > + > +#define LOCAL_I915_EXEC_NO_RELOC (1<<11) > +#define LOCAL_I915_EXEC_HANDLE_LUT (1<<12) > + > +static uint64_t elapsed(const struct timespec *start, > + const struct timespec *end, > + int loop) > +{ > + return (1000000000ULL*(end->tv_sec - start->tv_sec) + (end->tv_nsec - start->tv_nsec))/loop; > +} > + > +static int __gem_execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf) > +{ > + int err = 0; > + if (drmIoctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, execbuf)) > + err = -errno; > + return err; > +} > + > +static uint32_t batch(int fd) > +{ > + const uint32_t buf[] = {MI_BATCH_BUFFER_END}; > + uint32_t handle = gem_create(fd, 4096); > + gem_write(fd, handle, 0, buf, sizeof(buf)); > + return handle; > +} > + > +static int loop(unsigned ring, int reps) > +{ > + struct drm_i915_gem_execbuffer2 execbuf; > + struct drm_i915_gem_exec_object2 gem_exec; > + int count, fd; > + > + fd = drm_open_any(); > + > + memset(&gem_exec, 0, sizeof(gem_exec)); > + gem_exec.handle = batch(fd); > + > + memset(&execbuf, 0, sizeof(execbuf)); > + execbuf.buffers_ptr = (uintptr_t)&gem_exec; > + execbuf.buffer_count = 1; > + execbuf.flags = ring; > + execbuf.flags |= LOCAL_I915_EXEC_HANDLE_LUT; > + execbuf.flags |= LOCAL_I915_EXEC_NO_RELOC; > + if (__gem_execbuf(fd, &execbuf)) { > + execbuf.flags = ring; > + if (__gem_execbuf(fd, &execbuf)) > + return 77; > + } > + > + for (count = 1; count <= 1<<16; count <<= 1) { > + igt_stats_t stats; > + int n; > + > + igt_stats_init_with_size(&stats, reps); > + > + for (n = 0; n < reps; n++) { > + struct timespec start, end; > + int loops = count; > + sleep(1); /* wait for the hw to go back to sleep */ > + clock_gettime(CLOCK_MONOTONIC, &start); > + while (loops--) > + do_ioctl(fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf); > + gem_sync(fd, gem_exec.handle); > + clock_gettime(CLOCK_MONOTONIC, &end); > + igt_stats_push(&stats, elapsed(&start, &end, count)); > + } > + > + printf("%7.3f\n", igt_stats_get_trimean(&stats)/1000); > + igt_stats_fini(&stats); > + } > + return 0; > +} > + > +int main(int argc, char **argv) > +{ > + unsigned ring = I915_EXEC_RENDER; > + int reps = 13; > + int c; > + > + while ((c = getopt (argc, argv, "e:r:")) != -1) { > + switch (c) { > + case 'e': > + if (strcmp(optarg, "rcs") == 0) > + ring = I915_EXEC_RENDER; > + else if (strcmp(optarg, "vcs") == 0) > + ring = I915_EXEC_BSD; > + else if (strcmp(optarg, "bcs") == 0) > + ring = I915_EXEC_BLT; > + else if (strcmp(optarg, "vecs") == 0) > + ring = I915_EXEC_VEBOX; > + else > + ring = atoi(optarg); > + break; > + > + case 'r': > + reps = atoi(optarg); > + if (reps < 1) > + reps = 1; > + break; > + > + default: > + break; > + } > + } > + > + return loop(ring, reps); > +} > diff --git a/benchmarks/gem_mmap.c b/benchmarks/gem_mmap.c > deleted file mode 100644 > index 7593e12..0000000 > --- a/benchmarks/gem_mmap.c > +++ /dev/null > @@ -1,165 +0,0 @@ > -/* > - * Copyright © 2011-2015 Intel Corporation > - * > - * Permission is hereby granted, free of charge, to any person obtaining a > - * copy of this software and associated documentation files (the "Software"), > - * to deal in the Software without restriction, including without limitation > - * the rights to use, copy, modify, merge, publish, distribute, sublicense, > - * and/or sell copies of the Software, and to permit persons to whom the > - * Software is furnished to do so, subject to the following conditions: > - * > - * The above copyright notice and this permission notice (including the next > - * paragraph) shall be included in all copies or substantial portions of the > - * Software. > - * > - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR > - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, > - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL > - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER > - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING > - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS > - * IN THE SOFTWARE. > - * > - * Authors: > - * Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > - * > - */ > - > -#include <unistd.h> > -#include <stdlib.h> > -#include <stdint.h> > -#include <stdio.h> > -#include <string.h> > -#include <fcntl.h> > -#include <inttypes.h> > -#include <errno.h> > -#include <sys/stat.h> > -#include <sys/ioctl.h> > -#include <sys/time.h> > -#include <time.h> > - > -#include "drm.h" > -#include "ioctl_wrappers.h" > -#include "drmtest.h" > -#include "igt_aux.h" > -#include "igt_stats.h" > - > -#define OBJECT_SIZE (1<<23) > - > -static uint64_t elapsed(const struct timespec *start, > - const struct timespec *end) > -{ > - return 1000000000ULL*(end->tv_sec - start->tv_sec) + (end->tv_nsec - start->tv_nsec); > -} > - > -int main(int argc, char **argv) > -{ > - int fd = drm_open_any(); > - enum map {CPU, GTT, WC} map = CPU; > - enum dir {READ, WRITE, CLEAR} dir = READ; > - int tiling = I915_TILING_NONE; > - void *buf = malloc(OBJECT_SIZE); > - uint32_t handle; > - void *ptr, *src, *dst; > - int reps = 13; > - int c, size; > - > - while ((c = getopt (argc, argv, "m:d:r:t:")) != -1) { > - switch (c) { > - case 'm': > - if (strcmp(optarg, "cpu") == 0) > - map = CPU; > - else if (strcmp(optarg, "gtt") == 0) > - map = GTT; > - else if (strcmp(optarg, "wc") == 0) > - map = WC; > - else > - abort(); > - break; > - > - case 'd': > - if (strcmp(optarg, "read") == 0) > - dir = READ; > - else if (strcmp(optarg, "write") == 0) > - dir = WRITE; > - else if (strcmp(optarg, "clear") == 0) > - dir = CLEAR; > - else > - abort(); > - break; > - > - case 't': > - if (strcmp(optarg, "x") == 0) > - tiling = I915_TILING_X; > - else if (strcmp(optarg, "y") == 0) > - tiling = I915_TILING_Y; > - else if (strcmp(optarg, "none") == 0) > - tiling = I915_TILING_NONE; > - else > - abort(); > - break; > - > - case 'r': > - reps = atoi(optarg); > - if (reps < 1) > - reps = 1; > - break; > - > - default: > - break; > - } > - } > - > - handle = gem_create(fd, OBJECT_SIZE); > - switch (map) { > - case CPU: > - ptr = gem_mmap__cpu(fd, handle, 0, OBJECT_SIZE, PROT_WRITE); > - gem_set_domain(fd, handle, I915_GEM_DOMAIN_CPU, I915_GEM_DOMAIN_CPU); > - break; > - case GTT: > - ptr = gem_mmap__gtt(fd, handle, OBJECT_SIZE, PROT_WRITE); > - gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT); > - break; > - case WC: > - ptr = gem_mmap__wc(fd, handle, 0, OBJECT_SIZE, PROT_WRITE); > - gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT); > - break; > - default: > - abort(); > - } > - > - gem_set_tiling(fd, handle, tiling, 512); > - > - if (dir == READ) { > - src = ptr; > - dst = buf; > - } else { > - src = buf; > - dst = ptr; > - } > - > - for (size = 1; size <= OBJECT_SIZE; size <<= 1) { > - igt_stats_t stats; > - int n; > - > - igt_stats_init_with_size(&stats, reps); > - > - for (n = 0; n < reps; n++) { > - struct timespec start, end; > - > - clock_gettime(CLOCK_MONOTONIC, &start); > - if (dir == CLEAR) > - memset(dst, 0, size); > - else > - memcpy(dst, src, size); > - clock_gettime(CLOCK_MONOTONIC, &end); > - > - igt_stats_push(&stats, elapsed(&start, &end)); > - } > - > - printf("%7.3f\n", igt_stats_get_trimean(&stats)/1000); > - igt_stats_fini(&stats); > - } > - > - return 0; > -} > diff --git a/benchmarks/gem_mmap_benchmark.c b/benchmarks/gem_mmap_benchmark.c > new file mode 100644 > index 0000000..7593e12 > --- /dev/null > +++ b/benchmarks/gem_mmap_benchmark.c > @@ -0,0 +1,165 @@ > +/* > + * Copyright © 2011-2015 Intel Corporation > + * > + * Permission is hereby granted, free of charge, to any person obtaining a > + * copy of this software and associated documentation files (the "Software"), > + * to deal in the Software without restriction, including without limitation > + * the rights to use, copy, modify, merge, publish, distribute, sublicense, > + * and/or sell copies of the Software, and to permit persons to whom the > + * Software is furnished to do so, subject to the following conditions: > + * > + * The above copyright notice and this permission notice (including the next > + * paragraph) shall be included in all copies or substantial portions of the > + * Software. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, > + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL > + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER > + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING > + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS > + * IN THE SOFTWARE. > + * > + * Authors: > + * Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > + * > + */ > + > +#include <unistd.h> > +#include <stdlib.h> > +#include <stdint.h> > +#include <stdio.h> > +#include <string.h> > +#include <fcntl.h> > +#include <inttypes.h> > +#include <errno.h> > +#include <sys/stat.h> > +#include <sys/ioctl.h> > +#include <sys/time.h> > +#include <time.h> > + > +#include "drm.h" > +#include "ioctl_wrappers.h" > +#include "drmtest.h" > +#include "igt_aux.h" > +#include "igt_stats.h" > + > +#define OBJECT_SIZE (1<<23) > + > +static uint64_t elapsed(const struct timespec *start, > + const struct timespec *end) > +{ > + return 1000000000ULL*(end->tv_sec - start->tv_sec) + (end->tv_nsec - start->tv_nsec); > +} > + > +int main(int argc, char **argv) > +{ > + int fd = drm_open_any(); > + enum map {CPU, GTT, WC} map = CPU; > + enum dir {READ, WRITE, CLEAR} dir = READ; > + int tiling = I915_TILING_NONE; > + void *buf = malloc(OBJECT_SIZE); > + uint32_t handle; > + void *ptr, *src, *dst; > + int reps = 13; > + int c, size; > + > + while ((c = getopt (argc, argv, "m:d:r:t:")) != -1) { > + switch (c) { > + case 'm': > + if (strcmp(optarg, "cpu") == 0) > + map = CPU; > + else if (strcmp(optarg, "gtt") == 0) > + map = GTT; > + else if (strcmp(optarg, "wc") == 0) > + map = WC; > + else > + abort(); > + break; > + > + case 'd': > + if (strcmp(optarg, "read") == 0) > + dir = READ; > + else if (strcmp(optarg, "write") == 0) > + dir = WRITE; > + else if (strcmp(optarg, "clear") == 0) > + dir = CLEAR; > + else > + abort(); > + break; > + > + case 't': > + if (strcmp(optarg, "x") == 0) > + tiling = I915_TILING_X; > + else if (strcmp(optarg, "y") == 0) > + tiling = I915_TILING_Y; > + else if (strcmp(optarg, "none") == 0) > + tiling = I915_TILING_NONE; > + else > + abort(); > + break; > + > + case 'r': > + reps = atoi(optarg); > + if (reps < 1) > + reps = 1; > + break; > + > + default: > + break; > + } > + } > + > + handle = gem_create(fd, OBJECT_SIZE); > + switch (map) { > + case CPU: > + ptr = gem_mmap__cpu(fd, handle, 0, OBJECT_SIZE, PROT_WRITE); > + gem_set_domain(fd, handle, I915_GEM_DOMAIN_CPU, I915_GEM_DOMAIN_CPU); > + break; > + case GTT: > + ptr = gem_mmap__gtt(fd, handle, OBJECT_SIZE, PROT_WRITE); > + gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT); > + break; > + case WC: > + ptr = gem_mmap__wc(fd, handle, 0, OBJECT_SIZE, PROT_WRITE); > + gem_set_domain(fd, handle, I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT); > + break; > + default: > + abort(); > + } > + > + gem_set_tiling(fd, handle, tiling, 512); > + > + if (dir == READ) { > + src = ptr; > + dst = buf; > + } else { > + src = buf; > + dst = ptr; > + } > + > + for (size = 1; size <= OBJECT_SIZE; size <<= 1) { > + igt_stats_t stats; > + int n; > + > + igt_stats_init_with_size(&stats, reps); > + > + for (n = 0; n < reps; n++) { > + struct timespec start, end; > + > + clock_gettime(CLOCK_MONOTONIC, &start); > + if (dir == CLEAR) > + memset(dst, 0, size); > + else > + memcpy(dst, src, size); > + clock_gettime(CLOCK_MONOTONIC, &end); > + > + igt_stats_push(&stats, elapsed(&start, &end)); > + } > + > + printf("%7.3f\n", igt_stats_get_trimean(&stats)/1000); > + igt_stats_fini(&stats); > + } > + > + return 0; > +} > -- > 1.9.1 > _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx