On 7/13/2018 3:02 AM, Tvrtko Ursulin wrote: > From: Tvrtko Ursulin > > vis library has a limited precision compared to our trace data which > prevents zooming into the timeline and seeing the fine detail. > > Scale the HTML view by a thousand to work around it. > > v2: Rebase for time axis changes. > v3: Another tweak for time axis changes. > > Signed-off-by: Tvrtko Ursulin > Suggested-by: John Harrison > Cc: John Harrison > Reviewed-by: John Harrison # v2 > --- > scripts/trace.pl | 54 ++++++++++++++++++++++++++++++++++++++++++++---- > 1 file changed, 50 insertions(+), 4 deletions(-) > > diff --git a/scripts/trace.pl b/scripts/trace.pl > index 41f10749a153..4b5f4ef77aef 100755 > --- a/scripts/trace.pl > +++ b/scripts/trace.pl > @@ -40,6 +40,7 @@ my $trace = 0; > my $avg_delay_stats = 0; > my $gpu_timeline = 0; > my $colour_contexts = 0; > +my $no_timeline_scaling = 0; > > my @args; > > @@ -281,6 +282,18 @@ sub arg_colour_contexts > return @_; > } > > +sub arg_no_timeline_scaling > +{ > + return unless scalar(@_); > + > + if ($_[0] eq '--no-timeline-scaling') { > + shift @_; > + $no_timeline_scaling = 1; > + } > + > + return @_; > +} > + > @args = @ARGV; > while (@args) { > my $left = scalar(@args); > @@ -296,6 +309,7 @@ while (@args) { > @args = arg_ignore_ring(@args); > @args = arg_skip_box(@args); > @args = arg_colour_contexts(@args); > + @args = arg_no_timeline_scaling(@args); > > last if $left == scalar(@args); > } > @@ -334,6 +348,8 @@ sub ts > my ($us) = @_; > my ($y, $mo, $d, $h, $m, $s); > > + $us *= 1000 unless $no_timeline_scaling; > + > $s = int($us / 1000000); > $us = $us % 1000000; > > @@ -999,11 +1015,28 @@ $first_ts = ts($first_ts); > > print < ]); > +ENDHTML > > +if ($html) { > + if ($no_timeline_scaling) { > + say " timeDiv = 1;"; > + } else { > + say " timeDiv = 1000;"; > + } > +} > + > +print < function majorAxis(date, scale, step) { > - var s = date / 1000; > + var s = date / 1000 / timeDiv; > var precision; > > + if (timeDiv == 1000) { > + if (scale == 'second') > + scale = 'millisecond'; > + else if (scale == 'minute') > + scale = 'second' > + } > + > if (scale == 'millisecond') > precision = 6; > else if (scale == 'second') > @@ -1015,14 +1048,27 @@ print < } > > function minorAxis(date, scale, step) { > - var ms = date; > + var ms = date / timeDiv; > + var orig_scale = scale; > var precision; > var unit; > > + if (timeDiv == 1000) { > + if (scale == 'second') > + scale = 'millisecond'; > + else if (scale == 'minute') > + scale = 'second' > + } > + > if (scale == 'millisecond') { > - ms %= 1000; > precision = 0; > - unit = 'ms'; > + if (orig_scale == 'millisecond' && step <= 200) { > + ms = date % 1000; > + unit = 'us'; > + } else { > + ms %= 1000; > + unit = 'ms'; > + } > } else if (scale == 'second') { > ms /= 1000; > precision = 1; Reviewed-by: John Harrison