We need to pass through a timeout parameter to implement
pipe->fence_finish() properly. The new fxn accepts a timeout
in nanoseconds. Simplify etna_pipe_wait(..) by using
etna_pipe_wait_ns(..).

Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com>
---
 etnaviv/etnaviv-symbol-check | 1 +
 etnaviv/etnaviv_drmif.h      | 1 +
 etnaviv/etnaviv_pipe.c       | 9 +++++++--
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/etnaviv/etnaviv-symbol-check b/etnaviv/etnaviv-symbol-check
index 72f2bc5..22afd16 100755
--- a/etnaviv/etnaviv-symbol-check
+++ b/etnaviv/etnaviv-symbol-check
@@ -21,6 +21,7 @@ etna_gpu_get_param
 etna_pipe_new
 etna_pipe_del
 etna_pipe_wait
+etna_pipe_wait_ns
 etna_bo_new
 etna_bo_from_handle
 etna_bo_from_name
diff --git a/etnaviv/etnaviv_drmif.h b/etnaviv/etnaviv_drmif.h
index fe9d5db..8119baa 100644
--- a/etnaviv/etnaviv_drmif.h
+++ b/etnaviv/etnaviv_drmif.h
@@ -104,6 +104,7 @@ int etna_gpu_get_param(struct etna_gpu *gpu, enum 
etna_param_id param,
 struct etna_pipe *etna_pipe_new(struct etna_gpu *gpu, enum etna_pipe_id id);
 void etna_pipe_del(struct etna_pipe *pipe);
 int etna_pipe_wait(struct etna_pipe *pipe, uint32_t timestamp, uint32_t ms);
+int etna_pipe_wait_ns(struct etna_pipe *pipe, uint32_t timestamp, uint64_t ns);


 /* buffer-object functions:
diff --git a/etnaviv/etnaviv_pipe.c b/etnaviv/etnaviv_pipe.c
index 1157fa6..94c5d37 100644
--- a/etnaviv/etnaviv_pipe.c
+++ b/etnaviv/etnaviv_pipe.c
@@ -32,6 +32,11 @@

 int etna_pipe_wait(struct etna_pipe *pipe, uint32_t timestamp, uint32_t ms)
 {
+       return etna_pipe_wait_ns(pipe, timestamp, ms * 1000000);
+}
+
+int etna_pipe_wait_ns(struct etna_pipe *pipe, uint32_t timestamp, uint64_t ns)
+{
        struct etna_device *dev = pipe->gpu->dev;
        int ret;

@@ -40,10 +45,10 @@ int etna_pipe_wait(struct etna_pipe *pipe, uint32_t 
timestamp, uint32_t ms)
                .fence = timestamp,
        };

-       if (ms == 0)
+       if (ns == 0)
                req.flags |= ETNA_WAIT_NONBLOCK;

-       get_abs_timeout(&req.timeout, ms * 1000000);
+       get_abs_timeout(&req.timeout, ns);

        ret = drmCommandWrite(dev->fd, DRM_ETNAVIV_WAIT_FENCE, &req, 
sizeof(req));
        if (ret) {
-- 
2.7.4

Reply via email to