[Mesa-dev] [PATCH 1/3] st/mesa: Make an enum for pipeline statistics query result indices.
Kenneth Graunke
kenneth at whitecape.org
Sat Dec 15 09:44:54 UTC 2018
Gallium handles pipeline statistics queries as a single query
(PIPE_QUERY_PIPELINE_STATISTICS) which returns a struct with 11 values.
Sometimes it's useful to refer to each of those values individually,
rather than as a group. To avoid hardcoding numbers, we define a new
enum for each value. Here, the name and enum value correspond to the
index in the struct pipe_query_data_pipeline_statistics result.
Cc: Roland Scheidegger <sroland at vmware.com>
---
src/gallium/include/pipe/p_defines.h | 17 +++++++++++++++++
src/mesa/state_tracker/st_cb_queryobj.c | 22 +++++++++++-----------
2 files changed, 28 insertions(+), 11 deletions(-)
diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h
index 6d96f1ccb5b..21005955a36 100644
--- a/src/gallium/include/pipe/p_defines.h
+++ b/src/gallium/include/pipe/p_defines.h
@@ -568,6 +568,23 @@ enum pipe_query_type {
PIPE_QUERY_DRIVER_SPECIFIC = 256,
};
+/**
+ * Index for PIPE_QUERY_PIPELINE_STATISTICS subqueries.
+ */
+enum pipe_statistics_query_index {
+ PIPE_STAT_QUERY_IA_VERTICES,
+ PIPE_STAT_QUERY_IA_PRIMITIVES,
+ PIPE_STAT_QUERY_VS_INVOCATIONS,
+ PIPE_STAT_QUERY_GS_INVOCATIONS,
+ PIPE_STAT_QUERY_GS_PRIMITIVES,
+ PIPE_STAT_QUERY_C_INVOCATIONS,
+ PIPE_STAT_QUERY_C_PRIMITIVES,
+ PIPE_STAT_QUERY_PS_INVOCATIONS,
+ PIPE_STAT_QUERY_HS_INVOCATIONS,
+ PIPE_STAT_QUERY_DS_INVOCATIONS,
+ PIPE_STAT_QUERY_CS_INVOCATIONS,
+};
+
/**
* Conditional rendering modes
*/
diff --git a/src/mesa/state_tracker/st_cb_queryobj.c b/src/mesa/state_tracker/st_cb_queryobj.c
index 69e6004c3f1..82f53243336 100644
--- a/src/mesa/state_tracker/st_cb_queryobj.c
+++ b/src/mesa/state_tracker/st_cb_queryobj.c
@@ -386,37 +386,37 @@ st_StoreQueryResult(struct gl_context *ctx, struct gl_query_object *q,
} else if (stq->type == PIPE_QUERY_PIPELINE_STATISTICS) {
switch (q->Target) {
case GL_VERTICES_SUBMITTED_ARB:
- index = 0;
+ index = PIPE_STAT_QUERY_IA_VERTICES;
break;
case GL_PRIMITIVES_SUBMITTED_ARB:
- index = 1;
+ index = PIPE_STAT_QUERY_IA_PRIMITIVES;
break;
case GL_VERTEX_SHADER_INVOCATIONS_ARB:
- index = 2;
+ index = PIPE_STAT_QUERY_VS_INVOCATIONS;
break;
case GL_GEOMETRY_SHADER_INVOCATIONS:
- index = 3;
+ index = PIPE_STAT_QUERY_GS_INVOCATIONS;
break;
case GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB:
- index = 4;
+ index = PIPE_STAT_QUERY_GS_PRIMITIVES;
break;
case GL_CLIPPING_INPUT_PRIMITIVES_ARB:
- index = 5;
+ index = PIPE_STAT_QUERY_C_INVOCATIONS;
break;
case GL_CLIPPING_OUTPUT_PRIMITIVES_ARB:
- index = 6;
+ index = PIPE_STAT_QUERY_C_PRIMITIVES;
break;
case GL_FRAGMENT_SHADER_INVOCATIONS_ARB:
- index = 7;
+ index = PIPE_STAT_QUERY_PS_INVOCATIONS;
break;
case GL_TESS_CONTROL_SHADER_PATCHES_ARB:
- index = 8;
+ index = PIPE_STAT_QUERY_HS_INVOCATIONS;
break;
case GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB:
- index = 9;
+ index = PIPE_STAT_QUERY_DS_INVOCATIONS;
break;
case GL_COMPUTE_SHADER_INVOCATIONS_ARB:
- index = 10;
+ index = PIPE_STAT_QUERY_CS_INVOCATIONS;
break;
default:
unreachable("Unexpected target");
--
2.19.1
More information about the mesa-dev
mailing list