OSDN Git Service

radeonsi: expose MRT-draw-calls to HUD
authorMarek Olšák <marek.olsak@amd.com>
Fri, 28 Jul 2017 04:35:41 +0000 (06:35 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Mon, 31 Jul 2017 10:46:43 +0000 (12:46 +0200)
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeon/r600_pipe_common.h
src/gallium/drivers/radeon/r600_query.c
src/gallium/drivers/radeon/r600_query.h
src/gallium/drivers/radeonsi/si_state_draw.c

index c2fb369..4e3b42a 100644 (file)
@@ -587,6 +587,7 @@ struct r600_common_context {
        unsigned                        num_cs_dw_queries_suspend;
        /* Misc stats. */
        unsigned                        num_draw_calls;
+       unsigned                        num_mrt_draw_calls;
        unsigned                        num_prim_restart_calls;
        unsigned                        num_spill_draw_calls;
        unsigned                        num_compute_calls;
index db70878..e716d4b 100644 (file)
@@ -99,6 +99,9 @@ static bool r600_query_sw_begin(struct r600_common_context *rctx,
        case R600_QUERY_DRAW_CALLS:
                query->begin_result = rctx->num_draw_calls;
                break;
+       case R600_QUERY_MRT_DRAW_CALLS:
+               query->begin_result = rctx->num_mrt_draw_calls;
+               break;
        case R600_QUERY_PRIM_RESTART_CALLS:
                query->begin_result = rctx->num_prim_restart_calls;
                break;
@@ -253,6 +256,9 @@ static bool r600_query_sw_end(struct r600_common_context *rctx,
        case R600_QUERY_DRAW_CALLS:
                query->end_result = rctx->num_draw_calls;
                break;
+       case R600_QUERY_MRT_DRAW_CALLS:
+               query->end_result = rctx->num_mrt_draw_calls;
+               break;
        case R600_QUERY_PRIM_RESTART_CALLS:
                query->end_result = rctx->num_prim_restart_calls;
                break;
@@ -1851,6 +1857,7 @@ static struct pipe_driver_query_info r600_driver_query_list[] = {
        X("num-shaders-created",        NUM_SHADERS_CREATED,    UINT64, CUMULATIVE),
        X("num-shader-cache-hits",      NUM_SHADER_CACHE_HITS,  UINT64, CUMULATIVE),
        X("draw-calls",                 DRAW_CALLS,             UINT64, AVERAGE),
+       X("MRT-draw-calls",             MRT_DRAW_CALLS,         UINT64, AVERAGE),
        X("prim-restart-calls",         PRIM_RESTART_CALLS,     UINT64, AVERAGE),
        X("spill-draw-calls",           SPILL_DRAW_CALLS,       UINT64, AVERAGE),
        X("compute-calls",              COMPUTE_CALLS,          UINT64, AVERAGE),
index 1bbaa76..e176246 100644 (file)
@@ -42,6 +42,7 @@ struct r600_resource;
 
 enum {
        R600_QUERY_DRAW_CALLS = PIPE_QUERY_DRIVER_SPECIFIC,
+       R600_QUERY_MRT_DRAW_CALLS,
        R600_QUERY_PRIM_RESTART_CALLS,
        R600_QUERY_SPILL_DRAW_CALLS,
        R600_QUERY_COMPUTE_CALLS,
index c1edf7f..a5f5b7f 100644 (file)
@@ -1392,6 +1392,8 @@ void si_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info)
        }
 
        sctx->b.num_draw_calls++;
+       if (sctx->framebuffer.state.nr_cbufs > 1)
+               sctx->b.num_mrt_draw_calls++;
        if (info->primitive_restart)
                sctx->b.num_prim_restart_calls++;
        if (G_0286E8_WAVESIZE(sctx->spi_tmpring_size))