Am 10.04.2013 02:22, schrieb Zack Rusin: > We were missing the implementation of PIPE_QUERY_SO_STATISTICS > query, this change implements it on top of the existing > facilities. > > Signed-off-by: Zack Rusin <za...@vmware.com> > --- > src/gallium/drivers/llvmpipe/lp_query.c | 19 +++++++++++++++++++ > src/gallium/drivers/llvmpipe/lp_rast.c | 3 +++ > 2 files changed, 22 insertions(+) > > diff --git a/src/gallium/drivers/llvmpipe/lp_query.c > b/src/gallium/drivers/llvmpipe/lp_query.c > index 01d5201..013d192 100644 > --- a/src/gallium/drivers/llvmpipe/lp_query.c > +++ b/src/gallium/drivers/llvmpipe/lp_query.c > @@ -137,6 +137,13 @@ llvmpipe_get_query_result(struct pipe_context *pipe, > case PIPE_QUERY_PRIMITIVES_EMITTED: > *result = pq->num_primitives_written; > break; > + case PIPE_QUERY_SO_STATISTICS: { > + struct pipe_query_data_so_statistics *stats = > + (struct pipe_query_data_so_statistics *)vresult; > + stats->num_primitives_written = pq->num_primitives_written; > + stats->primitives_storage_needed = pq->num_primitives_generated; > + } > + break; > default: > assert(0); > break; > @@ -174,6 +181,13 @@ llvmpipe_begin_query(struct pipe_context *pipe, struct > pipe_query *q) > llvmpipe->num_primitives_generated = 0; > } > > + if (pq->type == PIPE_QUERY_SO_STATISTICS) { > + pq->num_primitives_written = 0; > + llvmpipe->so_stats.num_primitives_written = 0; > + pq->num_primitives_generated = 0; > + llvmpipe->num_primitives_generated = 0; > + } > + > if (pq->type == PIPE_QUERY_OCCLUSION_COUNTER) { > llvmpipe->active_occlusion_query = TRUE; > llvmpipe->dirty |= LP_NEW_OCCLUSION_QUERY; > @@ -197,6 +211,11 @@ llvmpipe_end_query(struct pipe_context *pipe, struct > pipe_query *q) > pq->num_primitives_generated = llvmpipe->num_primitives_generated; > } > > + if (pq->type == PIPE_QUERY_SO_STATISTICS) { > + pq->num_primitives_written = llvmpipe->so_stats.num_primitives_written; > + pq->num_primitives_generated = llvmpipe->num_primitives_generated; > + } > + > if (pq->type == PIPE_QUERY_OCCLUSION_COUNTER) { > assert(llvmpipe->active_occlusion_query); > llvmpipe->active_occlusion_query = FALSE; > diff --git a/src/gallium/drivers/llvmpipe/lp_rast.c > b/src/gallium/drivers/llvmpipe/lp_rast.c > index 6183f41..903cb448 100644 > --- a/src/gallium/drivers/llvmpipe/lp_rast.c > +++ b/src/gallium/drivers/llvmpipe/lp_rast.c > @@ -476,6 +476,8 @@ lp_rast_begin_query(struct lp_rasterizer_task *task, > break; > case PIPE_QUERY_PRIMITIVES_GENERATED: > case PIPE_QUERY_PRIMITIVES_EMITTED: > + case PIPE_QUERY_SO_STATISTICS: > + break; > break; double break?
> default: > assert(0); > @@ -507,6 +509,7 @@ lp_rast_end_query(struct lp_rasterizer_task *task, > break; > case PIPE_QUERY_PRIMITIVES_GENERATED: > case PIPE_QUERY_PRIMITIVES_EMITTED: > + case PIPE_QUERY_SO_STATISTICS: > break; > default: > assert(0); > Otherwise Reviewed-by: Roland Scheidegger <srol...@vmware.com> _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev