ddebug: record and dump apitrace call numbers
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
@@ -665,9 +665,11 @@ static void
|
||||
dd_context_emit_string_marker(struct pipe_context *_pipe,
|
||||
const char *string, int len)
|
||||
{
|
||||
struct pipe_context *pipe = dd_context(_pipe)->pipe;
|
||||
struct dd_context *dctx = dd_context(_pipe);
|
||||
struct pipe_context *pipe = dctx->pipe;
|
||||
|
||||
pipe->emit_string_marker(pipe, string, len);
|
||||
dd_parse_apitrace_marker(string, len, &dctx->apitrace_call_number);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@@ -99,6 +99,10 @@ dd_get_file_stream(struct dd_context *dctx)
|
||||
fprintf(f, "Driver vendor: %s\n", screen->get_vendor(screen));
|
||||
fprintf(f, "Device vendor: %s\n", screen->get_device_vendor(screen));
|
||||
fprintf(f, "Device name: %s\n\n", screen->get_name(screen));
|
||||
|
||||
if (dctx->apitrace_call_number)
|
||||
fprintf(f, "Last apitrace call: %u\n\n",
|
||||
dctx->apitrace_call_number);
|
||||
return f;
|
||||
}
|
||||
|
||||
|
@@ -114,6 +114,7 @@ struct dd_context
|
||||
float tess_default_levels[6];
|
||||
|
||||
unsigned num_draw_calls;
|
||||
unsigned apitrace_call_number;
|
||||
};
|
||||
|
||||
|
||||
|
@@ -71,4 +71,27 @@ dd_get_debug_file(bool verbose)
|
||||
return f;
|
||||
}
|
||||
|
||||
static inline void
|
||||
dd_parse_apitrace_marker(const char *string, int len, unsigned *call_number)
|
||||
{
|
||||
unsigned num;
|
||||
char *s;
|
||||
|
||||
if (len <= 0)
|
||||
return;
|
||||
|
||||
/* Make it zero-terminated. */
|
||||
s = alloca(len + 1);
|
||||
memcpy(s, string, len);
|
||||
s[len] = 0;
|
||||
|
||||
/* Parse the number. */
|
||||
errno = 0;
|
||||
num = strtol(s, NULL, 10);
|
||||
if (errno)
|
||||
return;
|
||||
|
||||
*call_number = num;
|
||||
}
|
||||
|
||||
#endif /* DD_UTIL_H */
|
||||
|
Reference in New Issue
Block a user