From 1f91f688e8c05f1d026e92234d768a5d361e0805 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Fri, 11 Jan 2019 13:39:04 -0800 Subject: [PATCH] iris: Switch to the new PIPELINE_STATISTICS_QUERY_SINGLE capability I had a hack in place earlier to pass the query type as q->index for the regular statistics query, but we ended up adjusting the interface and adding a new query type. Use that instead, fixing pipeline statistics queries since the rebase. --- src/gallium/drivers/iris/iris_query.c | 48 +++----------------------- src/gallium/drivers/iris/iris_screen.c | 2 +- 2 files changed, 6 insertions(+), 44 deletions(-) diff --git a/src/gallium/drivers/iris/iris_query.c b/src/gallium/drivers/iris/iris_query.c index 9d854f4bdcd..66169d1db05 100644 --- a/src/gallium/drivers/iris/iris_query.c +++ b/src/gallium/drivers/iris/iris_query.c @@ -235,7 +235,7 @@ write_value(struct iris_context *ice, struct iris_query *q, unsigned offset) SO_NUM_PRIMS_WRITTEN(q->index), q->bo, offset, false); break; - case PIPE_QUERY_PIPELINE_STATISTICS: { + case PIPE_QUERY_PIPELINE_STATISTICS_SINGLE: { static const uint32_t index_to_reg[] = { IA_VERTICES_COUNT, IA_PRIMITIVES_COUNT, @@ -334,7 +334,7 @@ calculate_result_on_cpu(const struct gen_device_info *devinfo, for (int i = 0; i < MAX_VERTEX_STREAMS; i++) q->result |= stream_overflowed((void *) q->map, i); break; - case PIPE_QUERY_PIPELINE_STATISTICS: + case PIPE_QUERY_PIPELINE_STATISTICS_SINGLE: q->result = q->map->end - q->map->start; /* WaDividePSInvocationCountBy4:HSW,BDW */ @@ -702,7 +702,7 @@ calculate_result_on_gpu(struct iris_context *ice, struct iris_query *q) /* WaDividePSInvocationCountBy4:HSW,BDW */ if (devinfo->gen == 8 && - q->type == PIPE_QUERY_PIPELINE_STATISTICS && + q->type == PIPE_QUERY_PIPELINE_STATISTICS_SINGLE && q->index == PIPE_STAT_QUERY_PS_INVOCATIONS) shr_gpr0_by_2_bits(ice); @@ -726,7 +726,7 @@ iris_create_query(struct pipe_context *ctx, q->type = query_type; q->index = index; - if (q->type == PIPE_QUERY_PIPELINE_STATISTICS && + if (q->type == PIPE_QUERY_PIPELINE_STATISTICS_SINGLE && q->index == PIPE_STAT_QUERY_CS_INVOCATIONS) q->batch_idx = IRIS_BATCH_COMPUTE; else @@ -848,45 +848,7 @@ iris_get_query_result(struct pipe_context *ctx, assert(q->ready); - if (q->type == PIPE_QUERY_PIPELINE_STATISTICS) { - switch (q->index) { - case 0: - result->pipeline_statistics.ia_vertices = q->result; - break; - case 1: - result->pipeline_statistics.ia_primitives = q->result; - break; - case 2: - result->pipeline_statistics.vs_invocations = q->result; - break; - case 3: - result->pipeline_statistics.gs_invocations = q->result; - break; - case 4: - result->pipeline_statistics.gs_primitives = q->result; - break; - case 5: - result->pipeline_statistics.c_invocations = q->result; - break; - case 6: - result->pipeline_statistics.c_primitives = q->result; - break; - case 7: - result->pipeline_statistics.ps_invocations = q->result; - break; - case 8: - result->pipeline_statistics.hs_invocations = q->result; - break; - case 9: - result->pipeline_statistics.ds_invocations = q->result; - break; - case 10: - result->pipeline_statistics.cs_invocations = q->result; - break; - } - } else { - result->u64 = q->result; - } + result->u64 = q->result; return true; } diff --git a/src/gallium/drivers/iris/iris_screen.c b/src/gallium/drivers/iris/iris_screen.c index 1976f6e949e..64514cddbc4 100644 --- a/src/gallium/drivers/iris/iris_screen.c +++ b/src/gallium/drivers/iris/iris_screen.c @@ -127,7 +127,7 @@ iris_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_TEXTURE_MULTISAMPLE: case PIPE_CAP_CUBE_MAP_ARRAY: case PIPE_CAP_TEXTURE_BUFFER_OBJECTS: - case PIPE_CAP_QUERY_PIPELINE_STATISTICS: + case PIPE_CAP_QUERY_PIPELINE_STATISTICS_SINGLE: case PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT: case PIPE_CAP_TEXTURE_QUERY_LOD: case PIPE_CAP_SAMPLE_SHADING: -- 2.30.2