diff options
author | Christian Gmeiner <christian.gmeiner@gmail.com> | 2016-11-23 22:09:11 +0100 |
---|---|---|
committer | Christian Gmeiner <christian.gmeiner@gmail.com> | 2016-11-24 20:08:50 +0100 |
commit | d15515aea3c3e51336f9ab29691162c69acc9807 (patch) | |
tree | e7928f3cac45ea6e4e7d67991d2e7dec63f2ce1c /etnaviv | |
parent | 4f750ec756e66e1012b312dbc7f2d11fc9848ce2 (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-x | etnaviv/etnaviv-symbol-check | 1 | ||||
-rw-r--r-- | etnaviv/etnaviv_drmif.h | 1 | ||||
-rw-r--r-- | 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 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) { |