[PATCH] etnaviv: add rs-operations sw query

Lucas Stach l.stach at pengutronix.de
Fri Jun 9 12:55:17 UTC 2017


Am Freitag, den 09.06.2017, 12:34 +0200 schrieb Christian Gmeiner:
> It could be useful to get the number of emited resolve operations when
> doing driver optimizations.
> 
> Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com>

Reviewed-by: Lucas Stach <l.stach at pengutronix.de>

> ---
>  src/gallium/drivers/etnaviv/etnaviv_context.h  | 1 +
>  src/gallium/drivers/etnaviv/etnaviv_emit.c     | 2 ++
>  src/gallium/drivers/etnaviv/etnaviv_query.c    | 1 +
>  src/gallium/drivers/etnaviv/etnaviv_query.h    | 1 +
>  src/gallium/drivers/etnaviv/etnaviv_query_sw.c | 3 +++
>  5 files changed, 8 insertions(+)
> 
> diff --git a/src/gallium/drivers/etnaviv/etnaviv_context.h b/src/gallium/drivers/etnaviv/etnaviv_context.h
> index 2bb8cf5..2c9b24d 100644
> --- a/src/gallium/drivers/etnaviv/etnaviv_context.h
> +++ b/src/gallium/drivers/etnaviv/etnaviv_context.h
> @@ -174,6 +174,7 @@ struct etna_context {
>     struct {
>        uint64_t prims_emitted;
>        uint64_t draw_calls;
> +      uint64_t rs_operations;
>     } stats;
>  
>     struct pipe_debug_callback debug;
> diff --git a/src/gallium/drivers/etnaviv/etnaviv_emit.c b/src/gallium/drivers/etnaviv/etnaviv_emit.c
> index 81aaca9..bfff699 100644
> --- a/src/gallium/drivers/etnaviv/etnaviv_emit.c
> +++ b/src/gallium/drivers/etnaviv/etnaviv_emit.c
> @@ -171,6 +171,8 @@ etna_submit_rs_state(struct etna_context *ctx,
>     struct etna_cmd_stream *stream = ctx->stream;
>     struct etna_coalesce coalesce;
>  
> +   ctx->stats.rs_operations++;
> +
>     if (screen->specs.pixel_pipes == 1) {
>        etna_cmd_stream_reserve(stream, 22);
>        etna_coalesce_start(stream, &coalesce);
> diff --git a/src/gallium/drivers/etnaviv/etnaviv_query.c b/src/gallium/drivers/etnaviv/etnaviv_query.c
> index b33e580..617e475 100644
> --- a/src/gallium/drivers/etnaviv/etnaviv_query.c
> +++ b/src/gallium/drivers/etnaviv/etnaviv_query.c
> @@ -84,6 +84,7 @@ etna_get_driver_query_info(struct pipe_screen *pscreen, unsigned index,
>     struct pipe_driver_query_info list[] = {
>        {"prims-emitted", PIPE_QUERY_PRIMITIVES_EMITTED, { 0 }},
>        {"draw-calls", ETNA_QUERY_DRAW_CALLS, { 0 }},
> +      {"rs-operations", ETNA_QUERY_RS_OPERATIONS, { 0 }},
>     };
>  
>     if (!info)
> diff --git a/src/gallium/drivers/etnaviv/etnaviv_query.h b/src/gallium/drivers/etnaviv/etnaviv_query.h
> index 9a8d579..cebd662 100644
> --- a/src/gallium/drivers/etnaviv/etnaviv_query.h
> +++ b/src/gallium/drivers/etnaviv/etnaviv_query.h
> @@ -54,6 +54,7 @@ etna_query(struct pipe_query *pq)
>  }
>  
>  #define ETNA_QUERY_DRAW_CALLS    (PIPE_QUERY_DRIVER_SPECIFIC + 0)
> +#define ETNA_QUERY_RS_OPERATIONS (PIPE_QUERY_DRIVER_SPECIFIC + 1)
>  
>  void
>  etna_query_screen_init(struct pipe_screen *pscreen);
> diff --git a/src/gallium/drivers/etnaviv/etnaviv_query_sw.c b/src/gallium/drivers/etnaviv/etnaviv_query_sw.c
> index d6420d9..213c61f 100644
> --- a/src/gallium/drivers/etnaviv/etnaviv_query_sw.c
> +++ b/src/gallium/drivers/etnaviv/etnaviv_query_sw.c
> @@ -50,6 +50,8 @@ read_counter(struct etna_context *ctx, int type)
>        return ctx->stats.prims_emitted;
>     case ETNA_QUERY_DRAW_CALLS:
>        return ctx->stats.draw_calls;
> +   case ETNA_QUERY_RS_OPERATIONS:
> +      return ctx->stats.rs_operations;
>     }
>  
>     return 0;
> @@ -106,6 +108,7 @@ etna_sw_create_query(struct etna_context *ctx, unsigned query_type)
>     switch (query_type) {
>     case PIPE_QUERY_PRIMITIVES_EMITTED:
>     case ETNA_QUERY_DRAW_CALLS:
> +   case ETNA_QUERY_RS_OPERATIONS:
>        break;
>     default:
>        return NULL;




More information about the etnaviv mailing list