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

Alexandros Frantzis alexandros.frantzis at collabora.com
Thu Sep 14 11:07:33 UTC 2017


The purpose of this argument is to hold timestamp information about
events that occurred on the GPU.
---
 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