gallium/radeon: add new HUD query num-SDMA-IBs
authorMarek Olšák <marek.olsak@amd.com>
Tue, 27 Dec 2016 17:35:32 +0000 (18:35 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Fri, 6 Jan 2017 20:05:48 +0000 (21:05 +0100)
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeon/r600_query.c
src/gallium/drivers/radeon/r600_query.h
src/gallium/drivers/radeon/radeon_winsys.h
src/gallium/winsys/amdgpu/drm/amdgpu_cs.c
src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c
src/gallium/winsys/amdgpu/drm/amdgpu_winsys.h
src/gallium/winsys/radeon/drm/radeon_drm_cs.c
src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
src/gallium/winsys/radeon/drm/radeon_drm_winsys.h

index 70a25684ceb26fff87a76f7108512cfd349aca01..3c72f27f151c5a8bffe82722b10f72ced2230086 100644 (file)
@@ -66,6 +66,7 @@ static enum radeon_value_id winsys_id_from_type(unsigned type)
        case R600_QUERY_MAPPED_GTT: return RADEON_MAPPED_GTT;
        case R600_QUERY_BUFFER_WAIT_TIME: return RADEON_BUFFER_WAIT_TIME_NS;
        case R600_QUERY_NUM_GFX_IBS: return RADEON_NUM_GFX_IBS;
+       case R600_QUERY_NUM_SDMA_IBS: return RADEON_NUM_SDMA_IBS;
        case R600_QUERY_NUM_BYTES_MOVED: return RADEON_NUM_BYTES_MOVED;
        case R600_QUERY_NUM_EVICTIONS: return RADEON_NUM_EVICTIONS;
        case R600_QUERY_VRAM_USAGE: return RADEON_VRAM_USAGE;
@@ -136,6 +137,7 @@ static bool r600_query_sw_begin(struct r600_common_context *rctx,
                break;
        case R600_QUERY_BUFFER_WAIT_TIME:
        case R600_QUERY_NUM_GFX_IBS:
+       case R600_QUERY_NUM_SDMA_IBS:
        case R600_QUERY_NUM_BYTES_MOVED:
        case R600_QUERY_NUM_EVICTIONS: {
                enum radeon_value_id ws_id = winsys_id_from_type(query->b.type);
@@ -226,6 +228,7 @@ static bool r600_query_sw_end(struct r600_common_context *rctx,
        case R600_QUERY_CURRENT_GPU_MCLK:
        case R600_QUERY_BUFFER_WAIT_TIME:
        case R600_QUERY_NUM_GFX_IBS:
+       case R600_QUERY_NUM_SDMA_IBS:
        case R600_QUERY_NUM_BYTES_MOVED:
        case R600_QUERY_NUM_EVICTIONS: {
                enum radeon_value_id ws_id = winsys_id_from_type(query->b.type);
@@ -1692,6 +1695,7 @@ static struct pipe_driver_query_info r600_driver_query_list[] = {
        X("mapped-GTT",                 MAPPED_GTT,             BYTES, AVERAGE),
        X("buffer-wait-time",           BUFFER_WAIT_TIME,       MICROSECONDS, CUMULATIVE),
        X("num-GFX-IBs",                NUM_GFX_IBS,            UINT64, AVERAGE),
+       X("num-SDMA-IBs",               NUM_SDMA_IBS,           UINT64, AVERAGE),
        X("num-bytes-moved",            NUM_BYTES_MOVED,        BYTES, CUMULATIVE),
        X("num-evictions",              NUM_EVICTIONS,          UINT64, CUMULATIVE),
        X("VRAM-usage",                 VRAM_USAGE,             BYTES, AVERAGE),
index fffd9feea62aecdec8fdb0c1498a92a21beda260..3791ec6096e4b7edaa9e5f9e111ad3c8ce7c514e 100644 (file)
@@ -61,6 +61,7 @@ enum {
        R600_QUERY_MAPPED_GTT,
        R600_QUERY_BUFFER_WAIT_TIME,
        R600_QUERY_NUM_GFX_IBS,
+       R600_QUERY_NUM_SDMA_IBS,
        R600_QUERY_NUM_BYTES_MOVED,
        R600_QUERY_NUM_EVICTIONS,
        R600_QUERY_VRAM_USAGE,
index 6c886cf33887735bd3ef325a017b06fcea0cbb28..e6fb2d560d1f98177d6170b605bfa1d5b981cf0b 100644 (file)
@@ -83,6 +83,7 @@ enum radeon_value_id {
     RADEON_BUFFER_WAIT_TIME_NS,
     RADEON_TIMESTAMP,
     RADEON_NUM_GFX_IBS,
+    RADEON_NUM_SDMA_IBS,
     RADEON_NUM_BYTES_MOVED,
     RADEON_NUM_EVICTIONS,
     RADEON_VRAM_USAGE,
index adb46c5b4054aff9a09b61e022e849eb3080b677..95402bff9d9ed122ce5b8eeabc9610ff7ff6c2c3 100644 (file)
@@ -1204,7 +1204,11 @@ static int amdgpu_cs_flush(struct radeon_winsys_cs *rcs,
    cs->main.base.used_gart = 0;
    cs->main.base.used_vram = 0;
 
-   ws->num_gfx_IBs++;
+   if (cs->ring_type == RING_GFX)
+      ws->num_gfx_IBs++;
+   else if (cs->ring_type == RING_DMA)
+      ws->num_sdma_IBs++;
+
    return error_code;
 }
 
index 2ccc8e549f260df0a7766fc9aad98fd0936a3207..b950d37a504534ac6435682e550a7c00dcdb53d6 100644 (file)
@@ -429,6 +429,8 @@ static uint64_t amdgpu_query_value(struct radeon_winsys *rws,
       return retval;
    case RADEON_NUM_GFX_IBS:
       return ws->num_gfx_IBs;
+   case RADEON_NUM_SDMA_IBS:
+      return ws->num_sdma_IBs;
    case RADEON_NUM_BYTES_MOVED:
       amdgpu_query_info(ws->dev, AMDGPU_INFO_NUM_BYTES_MOVED, 8, &retval);
       return retval;
index 6746079b9c1749787c5f04c491f8664712f07bab..2a7900a68d9a70fe712dc5937333814812a40c5f 100644 (file)
@@ -62,6 +62,7 @@ struct amdgpu_winsys {
    uint64_t mapped_gtt;
    uint64_t buffer_wait_time; /* time spent in buffer_wait in ns */
    uint64_t num_gfx_IBs;
+   uint64_t num_sdma_IBs;
 
    struct radeon_info info;
 
index ab1ca06c5015e89b677bb29ec2ec3553ae92abb8..8f9e8a60593123d4be1fece3021d7e77665c9f84 100644 (file)
@@ -691,7 +691,10 @@ static int radeon_drm_cs_flush(struct radeon_winsys_cs *rcs,
     cs->base.used_vram = 0;
     cs->base.used_gart = 0;
 
-    cs->ws->num_gfx_IBs++;
+    if (cs->ring_type == RING_GFX)
+        cs->ws->num_gfx_IBs++;
+    else if (cs->ring_type == RING_DMA)
+        cs->ws->num_sdma_IBs++;
     return 0;
 }
 
index 1b2f9b18aca202e72da3eb446c94b9f1e196e3e7..c85e427a2169c29b914baad8f4938284b600b507 100644 (file)
@@ -625,6 +625,8 @@ static uint64_t radeon_query_value(struct radeon_winsys *rws,
         return retval;
     case RADEON_NUM_GFX_IBS:
         return ws->num_gfx_IBs;
+    case RADEON_NUM_SDMA_IBS:
+        return ws->num_sdma_IBs;
     case RADEON_NUM_BYTES_MOVED:
         radeon_get_drm_value(ws->fd, RADEON_INFO_NUM_BYTES_MOVED,
                              "num-bytes-moved", (uint32_t*)&retval);
index 137a9f437e14ef20f10e5ebc37464d65820fe712..ac623a1b311433280c2195d2fb05030f91468332 100644 (file)
@@ -80,6 +80,7 @@ struct radeon_drm_winsys {
     uint64_t mapped_gtt;
     uint64_t buffer_wait_time; /* time spent in buffer_wait in ns */
     uint64_t num_gfx_IBs;
+    uint64_t num_sdma_IBs;
     uint32_t next_bo_hash;
 
     enum radeon_generation gen;