timeline: Add GPU timestamp timepoint argument

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@collabora.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
dev
Alexandros Frantzis 7 years ago committed by Pekka Paalanen
parent 3052bc7e6d
commit 75d38ef1ed
  1. 12
      libweston/timeline.c
  2. 2
      libweston/timeline.h

@ -232,12 +232,24 @@ emit_vblank_timestamp(struct timeline_emit_context *ctx, void *obj)
return 1; 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); typedef int (*type_func)(struct timeline_emit_context *ctx, void *obj);
static const type_func type_dispatch[] = { static const type_func type_dispatch[] = {
[TLT_OUTPUT] = emit_weston_output, [TLT_OUTPUT] = emit_weston_output,
[TLT_SURFACE] = emit_weston_surface, [TLT_SURFACE] = emit_weston_surface,
[TLT_VBLANK] = emit_vblank_timestamp, [TLT_VBLANK] = emit_vblank_timestamp,
[TLT_GPU] = emit_gpu_timestamp,
}; };
WL_EXPORT void WL_EXPORT void

@ -42,6 +42,7 @@ enum timeline_type {
TLT_OUTPUT, TLT_OUTPUT,
TLT_SURFACE, TLT_SURFACE,
TLT_VBLANK, TLT_VBLANK,
TLT_GPU,
}; };
#define TYPEVERIFY(type, arg) ({ \ #define TYPEVERIFY(type, arg) ({ \
@ -53,6 +54,7 @@ enum timeline_type {
#define TLP_OUTPUT(o) TLT_OUTPUT, TYPEVERIFY(struct weston_output *, (o)) #define TLP_OUTPUT(o) TLT_OUTPUT, TYPEVERIFY(struct weston_output *, (o))
#define TLP_SURFACE(s) TLT_SURFACE, TYPEVERIFY(struct weston_surface *, (s)) #define TLP_SURFACE(s) TLT_SURFACE, TYPEVERIFY(struct weston_surface *, (s))
#define TLP_VBLANK(t) TLT_VBLANK, TYPEVERIFY(const struct timespec *, (t)) #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 { \ #define TL_POINT(...) do { \
if (weston_timeline_enabled_) \ if (weston_timeline_enabled_) \

Loading…
Cancel
Save