summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--overlay/gpu-perf.c4
-rw-r--r--overlay/gpu-perf.h2
-rw-r--r--overlay/overlay.c19
3 files changed, 21 insertions, 4 deletions
diff --git a/overlay/gpu-perf.c b/overlay/gpu-perf.c
index 642d20c9..d30d2125 100644
--- a/overlay/gpu-perf.c
+++ b/overlay/gpu-perf.c
@@ -264,7 +264,9 @@ static int busy_end(struct gpu_perf *gp, const void *event)
static int flip_complete(struct gpu_perf *gp, const void *event)
{
- gp->flip_complete++;
+ const struct sample_event *sample = event;
+
+ gp->flip_complete[sample->raw[0]]++;
return 1;
}
diff --git a/overlay/gpu-perf.h b/overlay/gpu-perf.h
index c0e00301..c23d3de5 100644
--- a/overlay/gpu-perf.h
+++ b/overlay/gpu-perf.h
@@ -11,7 +11,7 @@ struct gpu_perf {
int (*func)(struct gpu_perf *, const void *);
} *sample;
- int flip_complete;
+ int flip_complete[4];
struct gpu_perf_comm {
struct gpu_perf_comm *next;
char name[256];
diff --git a/overlay/overlay.c b/overlay/overlay.c
index 42327111..2ff9e9ca 100644
--- a/overlay/overlay.c
+++ b/overlay/overlay.c
@@ -321,8 +321,23 @@ static void show_gpu_perf(struct overlay_context *ctx, struct overlay_gpu_perf *
prev = &comm->next;
}
- sprintf(buf, "Flips: %d", gp->gpu_perf.flip_complete);
- gp->gpu_perf.flip_complete = 0;
+ {
+ int has_flips = 0, len;
+ for (n = 0; n < 4; n++) {
+ if (gp->gpu_perf.flip_complete[n])
+ has_flips = n + 1;
+ }
+ if (has_flips) {
+ len = sprintf(buf, "Flips:");
+ for (n = 0; n < has_flips; n++)
+ len += sprintf(buf + len, "%s %d",
+ n ? "," : "",
+ gp->gpu_perf.flip_complete[n]);
+ } else {
+ sprintf(buf, "Flips: 0");
+ }
+ memset(gp->gpu_perf.flip_complete, 0, sizeof(gp->gpu_perf.flip_complete));
+ }
cairo_set_source_rgba(ctx->cr, 1, 1, 1, 1);
cairo_move_to(ctx->cr, 12, y);
cairo_show_text(ctx->cr, buf);