summaryrefslogtreecommitdiff
path: root/etnaviv
diff options
context:
space:
mode:
authorChristian Gmeiner <christian.gmeiner@gmail.com>2016-11-23 22:09:11 +0100
committerChristian Gmeiner <christian.gmeiner@gmail.com>2016-11-24 20:08:50 +0100
commitd15515aea3c3e51336f9ab29691162c69acc9807 (patch)
treee7928f3cac45ea6e4e7d67991d2e7dec63f2ce1c /etnaviv
parent4f750ec756e66e1012b312dbc7f2d11fc9848ce2 (diff)
etnaviv: add etna_pipe_wait_ns(..)
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@gmail.com> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Diffstat (limited to 'etnaviv')
-rwxr-xr-xetnaviv/etnaviv-symbol-check1
-rw-r--r--etnaviv/etnaviv_drmif.h1
-rw-r--r--etnaviv/etnaviv_pipe.c9
3 files changed, 9 insertions, 2 deletions
diff --git a/etnaviv/etnaviv-symbol-check b/etnaviv/etnaviv-symbol-check
index 72f2bc50..22afd168 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 fe9d5dbf..8119baad 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 1157fa6c..94c5d377 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) {