From: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> 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.ursulin@xxxxxxxxx> --- 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@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx