[PATCH igt 06/10] igt/gem_ringfill: Prime execbuf before measuring ring size

Chris Wilson
2017-07-28T12:14:15Z

Make sure that our buffers are ready and loaded to reduce the initial
stall.
---
tests/gem_ringfill.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/tests/gem_ringfill.c b/tests/gem_ringfill.c
index b52996a4..01cbd0a9 100644
--- a/tests/gem_ringfill.c
+++ b/tests/gem_ringfill.c
@@ -288,10 +288,15 @@ static unsigned int measure_ring_size(int fd)
obj[1].handle = gem_create(fd, 4096);
gem_write(fd, obj[1].handle, 0, &bbe, sizeof(bbe));

+ memset(&execbuf, 0, sizeof(execbuf));
+ execbuf.buffers_ptr = to_user_pointer(obj + 1);
+ execbuf.buffer_count = 1;
+ gem_execbuf(fd, &execbuf);
+ gem_sync(fd, obj[1].handle);
+
plug(fd, &c);
obj[0].handle = c.handle;

- memset(&execbuf, 0, sizeof(execbuf));
execbuf.buffers_ptr = to_user_pointer(obj);
execbuf.buffer_count = 2;

@@ -302,7 +307,8 @@ static unsigned int measure_ring_size(int fd)
itv.it_value.tv_usec = 1000;
setitimer(ITIMER_REAL, &itv, NULL);

- last = count = 0;
+ last = -1;
+ count = 0;
do {
if (__execbuf(fd, &execbuf) == 0) {
count++;
--
2.13.3