Message ID | 20231010110714.749239-3-tvrtko.ursulin@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Fix various intel_gpu_top UI layout issues | expand |
Hi Tvrtko, On 2023-10-10 at 12:07:12 +0100, Tvrtko Ursulin wrote: > From: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > > When I moved the client name to be last, I did not account for the fact > current code skips showing engine utilisation until at least two sampling > periods have passed. Consequence of this is that client name gets printed > as the second field and not under the "NAME" column header. > > Fix it by emitting spaces instead of engine utilisation until two samples > have been collected. > > Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com> > --- > tools/intel_gpu_top.c | 13 +++++++++---- > 1 file changed, 9 insertions(+), 4 deletions(-) > > diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c > index 60fe06917531..c5abd0c92155 100644 > --- a/tools/intel_gpu_top.c > +++ b/tools/intel_gpu_top.c > @@ -928,12 +928,14 @@ static void free_display_clients(struct igt_drm_clients *clients) > > static const char *bars[] = { " ", "▏", "▎", "▍", "▌", "▋", "▊", "▉", "█" }; > > -static void n_spaces(const unsigned int n) > +static unsigned int n_spaces(const unsigned int n) > { > unsigned int i; > > for (i = 0; i < n; i++) > putchar(' '); > + > + return n; > } > > static void > @@ -2043,14 +2045,17 @@ print_client(struct igt_drm_client *c, struct engines *engines, double t, int li > > len = printf("%*s ", clients->max_pid_len, c->pid_str); > > - for (i = 0; > - c->samples > 1 && i <= iclients->classes.max_engine_id; > - i++) { > + for (i = 0; i <= iclients->classes.max_engine_id; i++) { > double pct, max; > > if (!iclients->classes.capacity[i]) > continue; > > + if (c->samples < 2) { > + len += n_spaces(*class_w); > + continue; > + } > + > pct = (double)c->val[i] / period_us / 1e3 * 100; > > /* > -- > 2.39.2 >
diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c index 60fe06917531..c5abd0c92155 100644 --- a/tools/intel_gpu_top.c +++ b/tools/intel_gpu_top.c @@ -928,12 +928,14 @@ static void free_display_clients(struct igt_drm_clients *clients) static const char *bars[] = { " ", "▏", "▎", "▍", "▌", "▋", "▊", "▉", "█" }; -static void n_spaces(const unsigned int n) +static unsigned int n_spaces(const unsigned int n) { unsigned int i; for (i = 0; i < n; i++) putchar(' '); + + return n; } static void @@ -2043,14 +2045,17 @@ print_client(struct igt_drm_client *c, struct engines *engines, double t, int li len = printf("%*s ", clients->max_pid_len, c->pid_str); - for (i = 0; - c->samples > 1 && i <= iclients->classes.max_engine_id; - i++) { + for (i = 0; i <= iclients->classes.max_engine_id; i++) { double pct, max; if (!iclients->classes.capacity[i]) continue; + if (c->samples < 2) { + len += n_spaces(*class_w); + continue; + } + pct = (double)c->val[i] / period_us / 1e3 * 100; /*