Mesa (main): aux/trace: fix PIPE_QUERY_PIPELINE_STATISTICS_SINGLE tracing
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Nov 5 19:01:19 UTC 2021
Module: Mesa
Branch: main
Commit: 58ba18474ba19c1306f0841805af41ae007f8f66
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=58ba18474ba19c1306f0841805af41ae007f8f66
Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date: Thu Oct 28 16:18:38 2021 -0400
aux/trace: fix PIPE_QUERY_PIPELINE_STATISTICS_SINGLE tracing
don't just crash, dump!
Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13582>
---
src/gallium/auxiliary/driver_trace/tr_context.c | 4 ++-
src/gallium/auxiliary/driver_trace/tr_dump_state.c | 42 +++++++++++++++++++++-
src/gallium/auxiliary/driver_trace/tr_dump_state.h | 2 +-
3 files changed, 45 insertions(+), 3 deletions(-)
diff --git a/src/gallium/auxiliary/driver_trace/tr_context.c b/src/gallium/auxiliary/driver_trace/tr_context.c
index b451a34d1ed..7702660e6b3 100644
--- a/src/gallium/auxiliary/driver_trace/tr_context.c
+++ b/src/gallium/auxiliary/driver_trace/tr_context.c
@@ -47,6 +47,7 @@ struct trace_query
{
struct threaded_query base;
unsigned type;
+ unsigned index;
struct pipe_query *query;
};
@@ -201,6 +202,7 @@ trace_context_create_query(struct pipe_context *_pipe,
if (tr_query) {
tr_query->type = query_type;
tr_query->query = query;
+ tr_query->index = index;
query = (struct pipe_query *)tr_query;
} else {
pipe->destroy_query(pipe, query);
@@ -305,7 +307,7 @@ trace_context_get_query_result(struct pipe_context *_pipe,
trace_dump_arg_begin("result");
if (ret) {
- trace_dump_query_result(tr_query->type, result);
+ trace_dump_query_result(tr_query->type, tr_query->index, result);
} else {
trace_dump_null();
}
diff --git a/src/gallium/auxiliary/driver_trace/tr_dump_state.c b/src/gallium/auxiliary/driver_trace/tr_dump_state.c
index 1f5da80193f..3cbee41210c 100644
--- a/src/gallium/auxiliary/driver_trace/tr_dump_state.c
+++ b/src/gallium/auxiliary/driver_trace/tr_dump_state.c
@@ -936,7 +936,7 @@ void trace_dump_blit_info(const struct pipe_blit_info *info)
}
void
-trace_dump_query_result(unsigned query_type,
+trace_dump_query_result(unsigned query_type, unsigned index,
const union pipe_query_result *result)
{
if (!trace_dumping_enabled_locked())
@@ -994,6 +994,46 @@ trace_dump_query_result(unsigned query_type,
trace_dump_struct_end();
break;
+ case PIPE_QUERY_PIPELINE_STATISTICS_SINGLE:
+ trace_dump_struct_begin("pipe_query_data_pipeline_statistics");
+ switch (index) {
+ case PIPE_STAT_QUERY_IA_VERTICES:
+ trace_dump_member(uint, &result->pipeline_statistics, ia_vertices);
+ break;
+ case PIPE_STAT_QUERY_IA_PRIMITIVES:
+ trace_dump_member(uint, &result->pipeline_statistics, ia_primitives);
+ break;
+ case PIPE_STAT_QUERY_VS_INVOCATIONS:
+ trace_dump_member(uint, &result->pipeline_statistics, vs_invocations);
+ break;
+ case PIPE_STAT_QUERY_GS_INVOCATIONS:
+ trace_dump_member(uint, &result->pipeline_statistics, gs_invocations);
+ break;
+ case PIPE_STAT_QUERY_GS_PRIMITIVES:
+ trace_dump_member(uint, &result->pipeline_statistics, gs_primitives);
+ break;
+ case PIPE_STAT_QUERY_C_INVOCATIONS:
+ trace_dump_member(uint, &result->pipeline_statistics, c_invocations);
+ break;
+ case PIPE_STAT_QUERY_C_PRIMITIVES:
+ trace_dump_member(uint, &result->pipeline_statistics, c_primitives);
+ break;
+ case PIPE_STAT_QUERY_PS_INVOCATIONS:
+ trace_dump_member(uint, &result->pipeline_statistics, ps_invocations);
+ break;
+ case PIPE_STAT_QUERY_HS_INVOCATIONS:
+ trace_dump_member(uint, &result->pipeline_statistics, hs_invocations);
+ break;
+ case PIPE_STAT_QUERY_DS_INVOCATIONS:
+ trace_dump_member(uint, &result->pipeline_statistics, ds_invocations);
+ break;
+ case PIPE_STAT_QUERY_CS_INVOCATIONS:
+ trace_dump_member(uint, &result->pipeline_statistics, cs_invocations);
+ break;
+ }
+ trace_dump_struct_end();
+ break;
+
default:
assert(query_type >= PIPE_QUERY_DRIVER_SPECIFIC);
trace_dump_uint(result->u64);
diff --git a/src/gallium/auxiliary/driver_trace/tr_dump_state.h b/src/gallium/auxiliary/driver_trace/tr_dump_state.h
index f5633b3be12..cef8a8274c7 100644
--- a/src/gallium/auxiliary/driver_trace/tr_dump_state.h
+++ b/src/gallium/auxiliary/driver_trace/tr_dump_state.h
@@ -94,7 +94,7 @@ void trace_dump_draw_indirect_info(const struct pipe_draw_indirect_info *state);
void trace_dump_blit_info(const struct pipe_blit_info *);
-void trace_dump_query_result(unsigned query_type,
+void trace_dump_query_result(unsigned query_type, unsigned index,
const union pipe_query_result *result);
void trace_dump_grid_info(const struct pipe_grid_info *state);
More information about the mesa-commit
mailing list