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

Marek Olšák maraeo at gmail.com
Sat Jul 2 17:27:44 UTC 2016


Thanks.

BTW, this patch still qualifies as very useful to me, because it
enables the ddebug functionality by advertising support for string
markers.

Marek

On Fri, Jul 1, 2016 at 2:38 PM, Bas Nieuwenhuizen
<bas at basnieuwenhuizen.nl> wrote:
> 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