[Mesa-dev] [PATCH 5/6] radeonsi: enable string markers and record apitrace call numbers

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Fri Jul 1 12:38:57 UTC 2016


On Fri, Jul 1, 2016 at 2:24 PM, Marek Olšák <maraeo at gmail.com> wrote:
> On Fri, Jul 1, 2016 at 2:16 PM, Bas Nieuwenhuizen
> <bas at basnieuwenhuizen.nl> wrote:
>> On Fri, Jul 1, 2016 at 1:21 AM, Marek Olšák <maraeo at gmail.com> wrote:
>>> From: Marek Olšák <marek.olsak at amd.com>
>>>
>>> ---
>>>  src/gallium/drivers/radeonsi/si_debug.c |  4 ++++
>>>  src/gallium/drivers/radeonsi/si_pipe.c  | 20 +++++++++++++++++++-
>>>  src/gallium/drivers/radeonsi/si_pipe.h  |  1 +
>>>  3 files changed, 24 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/src/gallium/drivers/radeonsi/si_debug.c b/src/gallium/drivers/radeonsi/si_debug.c
>>> index 112e686..220ce13 100644
>>> --- a/src/gallium/drivers/radeonsi/si_debug.c
>>> +++ b/src/gallium/drivers/radeonsi/si_debug.c
>>> @@ -814,6 +814,10 @@ void si_check_vm_faults(struct r600_common_context *ctx,
>>>         fprintf(f, "Device name: %s\n\n", screen->get_name(screen));
>>>         fprintf(f, "Failing VM page: 0x%08x\n\n", addr);
>>>
>>> +       if (sctx->apitrace_call_number)
>>> +               fprintf(f, "Last apitrace call: %u\n\n",
>>> +                       sctx->apitrace_call_number);
>>> +
>>>         switch (ring) {
>>>         case RING_GFX:
>>>                 si_dump_debug_state(&sctx->b.b, f, 0);
>>> diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c
>>> index 6c88fe3..f15e589 100644
>>> --- a/src/gallium/drivers/radeonsi/si_pipe.c
>>> +++ b/src/gallium/drivers/radeonsi/si_pipe.c
>>> @@ -31,6 +31,7 @@
>>>  #include "util/u_memory.h"
>>>  #include "util/u_suballoc.h"
>>>  #include "vl/vl_decoder.h"
>>> +#include "../ddebug/dd_util.h"
>>>
>>>  #define SI_LLVM_DEFAULT_FEATURES \
>>>         "+DumpCode,+vgpr-spilling,-fp32-denormals,+fp64-denormals"
>>> @@ -106,6 +107,22 @@ si_amdgpu_get_reset_status(struct pipe_context *ctx)
>>>         return sctx->b.ws->ctx_query_reset_status(sctx->b.ctx);
>>>  }
>>>
>>> +/* Apitrace profiling:
>>> + *   1) qapitrace : Tools -> Profile: Measure CPU & GPU times
>>> + *   2) In the middle panel, zoom in (mouse wheel) on some bad draw call
>>> + *      and remember its number.
>>> + *   3) In Mesa, enable queries and performance counters around that draw
>>> + *      call and print the results.
>>> + *   4) glretrace --benchmark --markers ..
>>> + */
>>
>> Were there issues that you hit with the existing apitrace performance
>> counters support?
>
> I didn't know apitrace had that. How to use it?

Use it with e.g.

apitrace replay --pdrawcalls="GL_AMD_performance_monitor:
SQ_080,SQ_081" test.trace

The only documentation I found is at
https://github.com/apitrace/apitrace/commit/87a07779ecc48249046d000ec87a57fd15112ff4

You can list available metrics with

apitrace replay --list-metrics test.trace (trace file is required for
some reason)

 - Bas


More information about the mesa-dev mailing list