From e760be08b45dd2d56058d7afc9048b99241fd1de Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Fri, 14 Dec 2018 21:09:32 -0800 Subject: [PATCH] st/mesa: Make an enum for pipeline statistics query result indices. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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. Reviewed-by: Marek Olšák Reviewed-by: Tapani Pälli --- 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 82c49c801e5..4480b54eb2f 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.30.2