mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-12 02:16:17 +00:00
overlay: Autohide Flip counter after a period of inactivity
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
474ce5396e
commit
2f297ed2b7
@ -103,6 +103,7 @@ struct overlay_gpu_top {
|
|||||||
struct overlay_gpu_perf {
|
struct overlay_gpu_perf {
|
||||||
struct gpu_perf gpu_perf;
|
struct gpu_perf gpu_perf;
|
||||||
time_t show_ctx;
|
time_t show_ctx;
|
||||||
|
time_t show_flips;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct overlay_gpu_freq {
|
struct overlay_gpu_freq {
|
||||||
@ -275,6 +276,7 @@ static void init_gpu_perf(struct overlay_context *ctx,
|
|||||||
gpu_perf_init(&gp->gpu_perf, 0);
|
gpu_perf_init(&gp->gpu_perf, 0);
|
||||||
|
|
||||||
gp->show_ctx = 0;
|
gp->show_ctx = 0;
|
||||||
|
gp->show_flips = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *get_comm(pid_t pid, char *comm, int len)
|
static char *get_comm(pid_t pid, char *comm, int len)
|
||||||
@ -316,14 +318,15 @@ static void show_gpu_perf(struct overlay_context *ctx, struct overlay_gpu_perf *
|
|||||||
cairo_pattern_t *linear;
|
cairo_pattern_t *linear;
|
||||||
int x, y, y1, y2, n;
|
int x, y, y1, y2, n;
|
||||||
int has_ctx = 0;
|
int has_ctx = 0;
|
||||||
|
int has_flips = 0;
|
||||||
|
|
||||||
gpu_perf_update(&gp->gpu_perf);
|
gpu_perf_update(&gp->gpu_perf);
|
||||||
|
|
||||||
for (n = 4; n > 0; n--) {
|
for (n = 0; n < 4; n++) {
|
||||||
if (gp->gpu_perf.ctx_switch[n-1]) {
|
if (gp->gpu_perf.ctx_switch[n])
|
||||||
has_ctx = n;
|
has_ctx = n + 1;
|
||||||
break;
|
if (gp->gpu_perf.flip_complete[n])
|
||||||
}
|
has_flips = n + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
cairo_rectangle(ctx->cr, ctx->width/2+HALF_PAD-.5, PAD-.5, ctx->width/2-SIZE_PAD+1, ctx->height/2-SIZE_PAD+1);
|
cairo_rectangle(ctx->cr, ctx->width/2+HALF_PAD-.5, PAD-.5, ctx->width/2-SIZE_PAD+1, ctx->height/2-SIZE_PAD+1);
|
||||||
@ -381,10 +384,12 @@ static void show_gpu_perf(struct overlay_context *ctx, struct overlay_gpu_perf *
|
|||||||
chart_draw(comm->user_data, ctx->cr);
|
chart_draw(comm->user_data, ctx->cr);
|
||||||
y2 += 14;
|
y2 += 14;
|
||||||
}
|
}
|
||||||
|
if (has_flips || gp->show_flips)
|
||||||
|
y2 += 14;
|
||||||
if (has_ctx || gp->show_ctx)
|
if (has_ctx || gp->show_ctx)
|
||||||
y2 += 14;
|
y2 += 14;
|
||||||
y1 += -12 - 2;
|
y1 += -12 - 2;
|
||||||
y2 += 14 - 14 + 4;
|
y2 += -14 + 4;
|
||||||
|
|
||||||
cairo_rectangle(ctx->cr, x, y1, ctx->width/2-SIZE_PAD, y2-y1);
|
cairo_rectangle(ctx->cr, x, y1, ctx->width/2-SIZE_PAD, y2-y1);
|
||||||
linear = cairo_pattern_create_linear(x, 0, x + ctx->width/2-SIZE_PAD, 0);
|
linear = cairo_pattern_create_linear(x, 0, x + ctx->width/2-SIZE_PAD, 0);
|
||||||
@ -458,27 +463,25 @@ skip_comm:
|
|||||||
prev = &comm->next;
|
prev = &comm->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
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_set_source_rgba(ctx->cr, 1, 1, 1, 1);
|
||||||
cairo_move_to(ctx->cr, x, y);
|
cairo_move_to(ctx->cr, x, y);
|
||||||
cairo_show_text(ctx->cr, buf);
|
if (has_flips) {
|
||||||
y += 14;
|
int len = sprintf(buf, "Flips:");
|
||||||
|
for (n = 0; n < has_flips; n++)
|
||||||
|
len += sprintf(buf + len, "%s %d",
|
||||||
|
n ? "," : "",
|
||||||
|
gp->gpu_perf.flip_complete[n]);
|
||||||
|
memset(gp->gpu_perf.flip_complete, 0, sizeof(gp->gpu_perf.flip_complete));
|
||||||
|
gp->show_flips = ctx->time;
|
||||||
|
|
||||||
|
cairo_show_text(ctx->cr, buf);
|
||||||
|
y += 14;
|
||||||
|
} else if (gp->show_flips) {
|
||||||
|
cairo_show_text(ctx->cr, "Flips: 0");
|
||||||
|
if (ctx->time - gp->show_flips > 10)
|
||||||
|
gp->show_flips = 0;
|
||||||
|
y += 14;
|
||||||
|
}
|
||||||
|
|
||||||
cairo_set_source_rgba(ctx->cr, 1, 1, 1, 1);
|
cairo_set_source_rgba(ctx->cr, 1, 1, 1, 1);
|
||||||
cairo_move_to(ctx->cr, x, y);
|
cairo_move_to(ctx->cr, x, y);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user