From: Tvrtko Ursulin <tvrtko.ursu...@intel.com>

We add stripes for different stages of request execution so it is easier
to follow one context in the multi-colour mode.

Vertical stripe pattern indicates pipeline "blockages" - requests waiting
for dependencies before they are runnable.

Diagonal stripes indicate runnable requests waiting for GPU time.

Horizontal strips are requests executing on the GPU.

Also use this new multi-coloured mode from media-bench.pl.

v2:
 John Harrison:
 * Mention media-bench.pl in the commit.
 * Fix HTML for single colour mode.

v3:
 * Rebase.
 * Apply stripes to legacy colouring as well.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursu...@intel.com>
---
 scripts/media-bench.pl |  2 +-
 scripts/trace.pl       | 56 +++++++++++++++++++++++++++++++-----------
 2 files changed, 42 insertions(+), 16 deletions(-)

diff --git a/scripts/media-bench.pl b/scripts/media-bench.pl
index c5628c7f2836..375844d9cdf6 100755
--- a/scripts/media-bench.pl
+++ b/scripts/media-bench.pl
@@ -207,7 +207,7 @@ sub trace_workload
        show_cmd($cmd);
        system($cmd);
 
-       $cmd = "perf script | $tracepl --html -x ctxsave -s ";
+       $cmd = "perf script | $tracepl --html -x ctxsave -s -c ";
        $cmd .= join ' ', map("-i $_", @skip_engine);
        $cmd .= " > ${file}.html";
        show_cmd($cmd);
diff --git a/scripts/trace.pl b/scripts/trace.pl
index fd414f5a4b1e..7d5c19ffd2e7 100755
--- a/scripts/trace.pl
+++ b/scripts/trace.pl
@@ -727,9 +727,9 @@ foreach my $key (keys %reqwait) {
 say sprintf('GPU: %.2f%% idle, %.2f%% busy',
             $flat_busy{'gpu-idle'}, $flat_busy{'gpu-busy'}) unless $html;
 
-my $queued_colour = $colour_contexts ? 'multi-colour light' : 'blue';
-my $runnable_colour = $colour_contexts ? 'multi-colour dark' : 'grey';
-my $execute_colour = $colour_contexts ? 'multi-colour' : 'pink';
+my $queued_colour = $colour_contexts ? 'multi-colour light, vertical stripes' 
: 'blue';
+my $runnable_colour = $colour_contexts ? 'multi-colour dark, angled stripes' : 
'grey';
+my $execute_colour = $colour_contexts ? 'multi-colour, horizontal stripes' : 
'pink';
 
 print <<ENDHTML if $html;
 <!DOCTYPE HTML>
@@ -873,17 +873,23 @@ sub sortQueue {
 
 sub ctx_colour
 {
-       my ($ctx, $stage) = (@_);
+       my ($ctx, $stage, $lfac) = (@_);
        my ($s, $l);
        my $val;
 
        unless ($colour_contexts) {
                if ($stage eq 'queue') {
-                       return 'lightblue;';
+                       $val = 210;
+                       $s = 65;
+                       $l = 52;
                } elsif ($stage eq 'ready') {
-                       return 'lightgrey;';
+                       $val = 0;
+                       $s = 0;
+                       $l = 47;
                } elsif ($stage eq 'execute') {
-                       return 'pink;';
+                       $val = 346;
+                       $s = 68;
+                       $l = 65;
                }
        } else {
                if ($stage eq 'queue') {
@@ -896,11 +902,34 @@ sub ctx_colour
                        $s = 80;
                        $l = 65;
                }
+
+               $val = int(360 / ($max_ctx - $min_ctx + 1)) * ($ctx - $min_ctx);
        }
 
-       $val = int(360 / ($max_ctx - $min_ctx + 1)) * ($ctx - $min_ctx);
+       $l = int($l * $lfac);
+
+       return "hsl($val, $s%, $l%)";
+}
+
+sub box_style
+{
+       my ($ctx, $stage) = @_;
+       my $deg;
+
+       if ($stage eq 'queue') {
+               $deg = 90;
+       } elsif ($stage eq 'ready') {
+               $deg = 45;
+       } elsif ($stage eq 'execute') {
+               $deg = 0;
+       }
 
-       return "hsl($val, $s%, $l%);";
+       return 'color: black; background: repeating-linear-gradient(' .
+               $deg . 'deg, ' .
+               ctx_colour($ctx, $stage, 1.0) . ', ' .
+               ctx_colour($ctx, $stage, 1.0) . ' 10px, ' .
+               ctx_colour($ctx, $stage, 0.90) . ' 10px, ' .
+               ctx_colour($ctx, $stage, 0.90) . ' 20px);';
 }
 
 my $i = 0;
@@ -917,8 +946,7 @@ foreach my $key (sort sortQueue keys %db) {
        # submit to execute
        unless (exists $skip_box{'queue'}) {
                $skey = 2 * $max_seqno * $ctx + 2 * $seqno;
-               $style = 'color: black; background-color: ' .
-                        ctx_colour($ctx, 'queue');
+               $style = box_style($ctx, 'queue');
                $content = "$name<br>$db{$key}->{'submit-delay'}us 
<small>($db{$key}->{'execute-delay'}us)</small>";
                $startend = 'start: \'' . ts($queue) . '\', end: \'' . 
ts($submit) . '\'';
                print "\t{id: $i, key: $skey, $type group: $group, subgroup: 1, 
subgroupOrder: 1, content: '$content', $startend, style: \'$style\'},\n";
@@ -928,8 +956,7 @@ foreach my $key (sort sortQueue keys %db) {
        # execute to start
        unless (exists $skip_box{'ready'}) {
                $skey = 2 * $max_seqno * $ctx + 2 * $seqno + 1;
-               $style = 'color: black; background-color: ' .
-                        ctx_colour($ctx, 'ready');
+               $style = box_style($ctx, 'ready');
                $content = 
"<small>$name<br>$db{$key}->{'execute-delay'}us</small>";
                $startend = 'start: \'' . ts($submit) . '\', end: \'' . 
ts($start) . '\'';
                print "\t{id: $i, key: $skey, $type group: $group, subgroup: 1, 
subgroupOrder: 2, content: '$content', $startend, style: \'$style\'},\n";
@@ -942,8 +969,7 @@ foreach my $key (sort sortQueue keys %db) {
                if (exists $db{$key}->{'incomplete'}) {
                        $style = 'color: white; background-color: red;';
                } else {
-                       $style = 'color: black; background-color: ' .
-                                 ctx_colour($ctx, 'execute');
+                       $style = box_style($ctx, 'execute');
                }
                $content = "$name <small>$db{$key}->{'port'}</small>";
                $content .= ' <small><i>???</i></small> ' if exists 
$db{$key}->{'incomplete'};
-- 
2.17.0

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

Reply via email to