[PATCH weston v3 1/4] timeline: Add GPU timestamp timepoint argument

Alexandros Frantzis alexandros.frantzis at collabora.com
Wed Sep 27 12:09:13 UTC 2017


The purpose of this argument is to hold timestamp information about
events that occurred on the GPU. This argument allows us to include GPU
timestamps in timepoints such as the beginning and end of frame
rendering.

Signed-off-by: Alexandros Frantzis <alexandros.frantzis at collabora.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
---

Changes in v3:
 - No changes.

Changes in v2:
 - Added Signed-off-by.
 - Clarified purpose of commit in commit message.

 libweston/timeline.c | 12 ++++++++++++
 libweston/timeline.h |  2 ++
 2 files changed, 14 insertions(+)

diff --git a/libweston/timeline.c b/libweston/timeline.c
index cf82428e..8234c27c 100644
--- a/libweston/timeline.c
+++ b/libweston/timeline.c
@@ -232,12 +232,24 @@ emit_vblank_timestamp(struct timeline_emit_context *ctx, void *obj)
 	return 1;
 }
 
+static int
+emit_gpu_timestamp(struct timeline_emit_context *ctx, void *obj)
+{
+	struct timespec *ts = obj;
+
+	fprintf(ctx->cur, "\"gpu\":[%" PRId64 ", %ld]",
+		(int64_t)ts->tv_sec, ts->tv_nsec);
+
+	return 1;
+}
+
 typedef int (*type_func)(struct timeline_emit_context *ctx, void *obj);
 
 static const type_func type_dispatch[] = {
 	[TLT_OUTPUT] = emit_weston_output,
 	[TLT_SURFACE] = emit_weston_surface,
 	[TLT_VBLANK] = emit_vblank_timestamp,
+	[TLT_GPU] = emit_gpu_timestamp,
 };
 
 WL_EXPORT void
diff --git a/libweston/timeline.h b/libweston/timeline.h
index b10a8157..9599d813 100644
--- a/libweston/timeline.h
+++ b/libweston/timeline.h
@@ -42,6 +42,7 @@ enum timeline_type {
 	TLT_OUTPUT,
 	TLT_SURFACE,
 	TLT_VBLANK,
+	TLT_GPU,
 };
 
 #define TYPEVERIFY(type, arg) ({			\
@@ -53,6 +54,7 @@ enum timeline_type {
 #define TLP_OUTPUT(o) TLT_OUTPUT, TYPEVERIFY(struct weston_output *, (o))
 #define TLP_SURFACE(s) TLT_SURFACE, TYPEVERIFY(struct weston_surface *, (s))
 #define TLP_VBLANK(t) TLT_VBLANK, TYPEVERIFY(const struct timespec *, (t))
+#define TLP_GPU(t) TLT_GPU, TYPEVERIFY(const struct timespec *, (t))
 
 #define TL_POINT(...) do { \
 	if (weston_timeline_enabled_) \
-- 
2.14.1



More information about the wayland-devel mailing list