One suggestion below, otherwise :

Reviewed-by: Lionel Landwerlin <lionel.g.landwer...@intel.com>

On 06/03/18 04:43, Tvrtko Ursulin wrote:
From: Tvrtko Ursulin <tvrtko.ursu...@intel.com>

Add the command line switch which uses different colours for different
context execution boxes.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursu...@intel.com>
Cc: John Harrison <john.c.harri...@intel.com>
---
  scripts/trace.pl | 41 +++++++++++++++++++++++++++++++++++++++--
  1 file changed, 39 insertions(+), 2 deletions(-)

diff --git a/scripts/trace.pl b/scripts/trace.pl
index e7ce273ef26a..ff61dea0768d 100755
--- a/scripts/trace.pl
+++ b/scripts/trace.pl
@@ -40,6 +40,7 @@ my $trace = 0;
  my $avg_delay_stats = 0;
  my $squash_context_id = 0;
  my $gpu_timeline = 0;
+my $colour_contexts = 0;
my @args; @@ -110,6 +111,8 @@ Usage:
        --squash-ctx-id                 Squash context id by substracting engine
                                        id from ctx id.
        --gpu-timeline                  Draw overall GPU busy timeline.
+      --colour-contexts / -c           Use different colours for different
+                                       context execution boxes.
  ENDHELP
exit 0;
@@ -279,6 +282,20 @@ sub arg_skip_box
        return @_;
  }
+sub arg_colour_contexts
+{
+       return unless scalar(@_);
+
+       if ($_[0] eq '--colour-contexts' or
+           $_[0] eq '--color-contexts' or
+           $_[0] eq '-c') {
+               shift @_;
+               $colour_contexts = 1;
+       }
+
+       return @_;
+}
+
  @args = @ARGV;
  while (@args) {
        my $left = scalar(@args);
@@ -294,6 +311,7 @@ while (@args) {
        @args = arg_split_requests(@args);
        @args = arg_ignore_ring(@args);
        @args = arg_skip_box(@args);
+       @args = arg_colour_contexts(@args);
last if $left == scalar(@args);
  }
@@ -581,6 +599,7 @@ foreach my $key (@sorted_keys) {
my $last_ts = 0;
  my $first_ts;
+my $min_ctx;
foreach my $key (@sorted_keys) {
        my $ring = $db{$key}->{'ring'};
@@ -590,6 +609,8 @@ foreach my $key (@sorted_keys) {
$first_ts = $db{$key}->{'queue'} if not defined $first_ts or $db{$key}->{'queue'} < $first_ts;
        $last_ts = $end if $end > $last_ts;
+       $min_ctx = $db{$key}->{'ctx'} if not defined $min_ctx or
+                                        $db{$key}->{'ctx'} < $min_ctx;
$db{$key}->{'context-complete-delay'} = $end - $notify;
        $db{$key}->{'execute-delay'} = $start - $db{$key}->{'submit'};
@@ -721,6 +742,8 @@ foreach my $key (keys %reqwait) {
  say sprintf('GPU: %.2f%% idle, %.2f%% busy',
             $flat_busy{'gpu-idle'}, $flat_busy{'gpu-busy'}) unless $html;
+my $execute_colour = $colour_contexts ? 'multi-colour' : 'pink';
+
  print <<ENDHTML if $html;
  <!DOCTYPE HTML>
  <html>
@@ -741,7 +764,7 @@ print <<ENDHTML if $html;
  <button onclick="toggleStackSubgroups()">Toggle stacking</button>
<p>
-pink = requests executing on the GPU<br>
+$execute_colour = requests executing on the GPU<br>
  grey = runnable requests waiting for a slot on GPU<br>
  blue = requests waiting on fences and dependencies before they are 
runnable<br>
  </p>
@@ -861,6 +884,19 @@ sub sortQueue {
        return $val;
  }
+my @html_colours = ( 'Pink', 'Green', 'Purple', 'Gold', 'Cyan', 'Brown',
+                    'DeepPink', 'LightGreen', 'Plum', 'Orange', 'Teal', 'Peru',
+                    'Indigo', 'Khaki', 'Coral', 'Olive' );

One way to generate as many colors as you need is to use hsv and divide the hue range into as many colors you need.
Then the color for element X is X * 360 / n_colors (http://colorizer.org/)

Just a suggestion :)

+
+sub ctx_colour
+{
+       my ($ctx) = (@_);
+
+       return 'Pink' unless $colour_contexts;
+
+       return $html_colours[($ctx - $min_ctx) % scalar(@html_colours)];
+}
+
  my $i = 0;
  foreach my $key (sort sortQueue keys %db) {
        my ($name, $ctx, $seqno) = ($db{$key}->{'name'}, $db{$key}->{'ctx'}, 
$db{$key}->{'seqno'});
@@ -898,7 +934,8 @@ foreach my $key (sort sortQueue keys %db) {
                if (exists $db{$key}->{'incomplete'}) {
                        $style = 'color: white; background-color: red;';
                } else {
-                       $style = 'color: black; background-color: pink;';
+                       $style = 'color: black; background-color: ' .
+                                 ctx_colour($ctx) . ';';
                }
                $content = "$name <small>$db{$key}->{'port'}</small>";
                $content .= ' <small><i>???</i></small> ' if exists 
$db{$key}->{'incomplete'};


_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to