All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH libdrm v4 0/2] etna_pipe_wait_ns(..)
@ 2016-11-24  8:46 Christian Gmeiner
  2016-11-24  8:46 ` [PATCH libdrm v4 1/2] etnaviv: change get_abs_timeout(..) to use ns Christian Gmeiner
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Christian Gmeiner @ 2016-11-24  8:46 UTC (permalink / raw)
  To: dri-devel

Add an API to pass the timeout value (ns) from pipe->fence_finish(..)
to the kernel. The current API accepts ms and special handling is needed
for PIPE_TIMEOUT_INFINITE.

The idea is not to break old mesa (out-of-tree) + new libdrm.

Changes from v2 to v3:
 - Builds at each step
 - Keep the _ns postfix of get_abs_timeout_ns(..)
 
Changes from v3 to v4:
 - Rework the patches based on Emil's suggestion.
 
Christian Gmeiner (2):
  etnaviv: change get_abs_timeout(..) to use ns.
  etnaviv: add etna_pipe_wait_ns(..)

 etnaviv/etnaviv-symbol-check | 1 +
 etnaviv/etnaviv_bo.c         | 2 +-
 etnaviv/etnaviv_drmif.h      | 1 +
 etnaviv/etnaviv_pipe.c       | 9 +++++++--
 etnaviv/etnaviv_priv.h       | 6 +++---
 5 files changed, 13 insertions(+), 6 deletions(-)

-- 
2.7.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH libdrm v4 1/2] etnaviv: change get_abs_timeout(..) to use ns.
  2016-11-24  8:46 [PATCH libdrm v4 0/2] etna_pipe_wait_ns(..) Christian Gmeiner
@ 2016-11-24  8:46 ` Christian Gmeiner
  2016-11-24  8:46 ` [PATCH libdrm v4 2/2] etnaviv: add etna_pipe_wait_ns(..) Christian Gmeiner
  2016-11-24 12:26 ` [PATCH libdrm v4 0/2] etna_pipe_wait_ns(..) Emil Velikov
  2 siblings, 0 replies; 4+ messages in thread
From: Christian Gmeiner @ 2016-11-24  8:46 UTC (permalink / raw)
  To: dri-devel

Also update all callers.

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
---
 etnaviv/etnaviv_bo.c   | 2 +-
 etnaviv/etnaviv_pipe.c | 2 +-
 etnaviv/etnaviv_priv.h | 6 +++---
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/etnaviv/etnaviv_bo.c b/etnaviv/etnaviv_bo.c
index 833f8bd..4ad0434 100644
--- a/etnaviv/etnaviv_bo.c
+++ b/etnaviv/etnaviv_bo.c
@@ -330,7 +330,7 @@ int etna_bo_cpu_prep(struct etna_bo *bo, uint32_t op)
 		.op = op,
 	};
 
-	get_abs_timeout(&req.timeout, 5000);
+	get_abs_timeout(&req.timeout, 5000000000);
 
 	return drmCommandWrite(bo->dev->fd, DRM_ETNAVIV_GEM_CPU_PREP,
 			&req, sizeof(req));
diff --git a/etnaviv/etnaviv_pipe.c b/etnaviv/etnaviv_pipe.c
index 402b71d..1157fa6 100644
--- a/etnaviv/etnaviv_pipe.c
+++ b/etnaviv/etnaviv_pipe.c
@@ -43,7 +43,7 @@ int etna_pipe_wait(struct etna_pipe *pipe, uint32_t timestamp, uint32_t ms)
 	if (ms == 0)
 		req.flags |= ETNA_WAIT_NONBLOCK;
 
-	get_abs_timeout(&req.timeout, ms);
+	get_abs_timeout(&req.timeout, ms * 1000000);
 
 	ret = drmCommandWrite(dev->fd, DRM_ETNAVIV_WAIT_FENCE, &req, sizeof(req));
 	if (ret) {
diff --git a/etnaviv/etnaviv_priv.h b/etnaviv/etnaviv_priv.h
index eb62ed3..feaa5ad 100644
--- a/etnaviv/etnaviv_priv.h
+++ b/etnaviv/etnaviv_priv.h
@@ -189,13 +189,13 @@ struct etna_cmd_stream_priv {
 
 #define VOID2U64(x) ((uint64_t)(unsigned long)(x))
 
-static inline void get_abs_timeout(struct drm_etnaviv_timespec *tv, uint32_t ms)
+static inline void get_abs_timeout(struct drm_etnaviv_timespec *tv, uint64_t ns)
 {
 	struct timespec t;
-	uint32_t s = ms / 1000;
+	uint32_t s = ns / 1000000000;
 	clock_gettime(CLOCK_MONOTONIC, &t);
 	tv->tv_sec = t.tv_sec + s;
-	tv->tv_nsec = t.tv_nsec + ((ms - (s * 1000)) * 1000000);
+	tv->tv_nsec = t.tv_nsec + ns - (s * 1000000000);
 }
 
 #endif /* ETNAVIV_PRIV_H_ */
-- 
2.7.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH libdrm v4 2/2] etnaviv: add etna_pipe_wait_ns(..)
  2016-11-24  8:46 [PATCH libdrm v4 0/2] etna_pipe_wait_ns(..) Christian Gmeiner
  2016-11-24  8:46 ` [PATCH libdrm v4 1/2] etnaviv: change get_abs_timeout(..) to use ns Christian Gmeiner
@ 2016-11-24  8:46 ` Christian Gmeiner
  2016-11-24 12:26 ` [PATCH libdrm v4 0/2] etna_pipe_wait_ns(..) Emil Velikov
  2 siblings, 0 replies; 4+ messages in thread
From: Christian Gmeiner @ 2016-11-24  8:46 UTC (permalink / raw)
  To: dri-devel

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>
---
 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

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH libdrm v4 0/2] etna_pipe_wait_ns(..)
  2016-11-24  8:46 [PATCH libdrm v4 0/2] etna_pipe_wait_ns(..) Christian Gmeiner
  2016-11-24  8:46 ` [PATCH libdrm v4 1/2] etnaviv: change get_abs_timeout(..) to use ns Christian Gmeiner
  2016-11-24  8:46 ` [PATCH libdrm v4 2/2] etnaviv: add etna_pipe_wait_ns(..) Christian Gmeiner
@ 2016-11-24 12:26 ` Emil Velikov
  2 siblings, 0 replies; 4+ messages in thread
From: Emil Velikov @ 2016-11-24 12:26 UTC (permalink / raw)
  To: Christian Gmeiner; +Cc: ML dri-devel

On 24 November 2016 at 08:46, Christian Gmeiner
<christian.gmeiner@gmail.com> wrote:
> Add an API to pass the timeout value (ns) from pipe->fence_finish(..)
> to the kernel. The current API accepts ms and special handling is needed
> for PIPE_TIMEOUT_INFINITE.
>
> The idea is not to break old mesa (out-of-tree) + new libdrm.
>
> Changes from v2 to v3:
>  - Builds at each step
>  - Keep the _ns postfix of get_abs_timeout_ns(..)
>
> Changes from v3 to v4:
>  - Rework the patches based on Emil's suggestion.
>
Fwiw v4 is
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>

Thanks
Emil
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-11-24 12:26 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-11-24  8:46 [PATCH libdrm v4 0/2] etna_pipe_wait_ns(..) Christian Gmeiner
2016-11-24  8:46 ` [PATCH libdrm v4 1/2] etnaviv: change get_abs_timeout(..) to use ns Christian Gmeiner
2016-11-24  8:46 ` [PATCH libdrm v4 2/2] etnaviv: add etna_pipe_wait_ns(..) Christian Gmeiner
2016-11-24 12:26 ` [PATCH libdrm v4 0/2] etna_pipe_wait_ns(..) Emil Velikov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.