summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--benchmarks/gem_blt.c18
1 files changed, 5 insertions, 13 deletions
diff --git a/benchmarks/gem_blt.c b/benchmarks/gem_blt.c
index 424ce8e7..bd8264b4 100644
--- a/benchmarks/gem_blt.c
+++ b/benchmarks/gem_blt.c
@@ -57,29 +57,21 @@ elapsed(const struct timespec *start, const struct timespec *end)
return (end->tv_sec - start->tv_sec) + 1e-9*(end->tv_nsec - start->tv_nsec);
}
-static int baseline(uint64_t bytes, int milliseconds)
+static int baseline(int fd, struct drm_i915_gem_execbuffer2 execbuf, int milliseconds)
{
struct timespec start, end;
- const int size = 64*1024*1024;
int count = 0;
- void *mem;
-
- mem = malloc(size);
- if (mem == NULL)
- return 1;
clock_gettime(CLOCK_MONOTONIC, &start);
do {
- memset(mem, count, size);
+ gem_execbuf(fd, &execbuf);
count++;
clock_gettime(CLOCK_MONOTONIC, &end);
- if (elapsed(&start, &end) > 0.1)
+ if (elapsed(&start, &end) > (milliseconds / 1000.))
break;
} while (1);
- free(mem);
-
- return ceil(1e-3*milliseconds/elapsed(&start, &end) * count * size / bytes);
+ return count;
}
static int gem_linear_blt(int fd,
@@ -260,7 +252,7 @@ static int run(int object, int batch, int time, int reps, int ncpus, unsigned fl
execbuf.flags |= I915_EXEC_NO_RELOC;
/* Guess how many loops we need for 0.1s */
- count = baseline((uint64_t)object * batch, 100) / ncpus;
+ count = baseline(fd, execbuf, 100) / ncpus;
if (flags & SYNC) {
time *= count / 2;
count = 1;