Module: Mesa
Branch: master
Commit: 0aafedbbb28dac46a893eb97d5dec589113f6c00
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0aafedbbb28dac46a893eb97d5dec589113f6c00

Author: Marek Olšák <[email protected]>
Date:   Sun Oct  8 00:35:59 2017 +0200

radeonsi: add GFX-IB-size query to the HUD

It shows the sum of all IBs per frame.

Reviewed-by: Nicolai Hähnle <[email protected]>

---

 src/gallium/drivers/radeon/r600_query.c           | 4 ++++
 src/gallium/drivers/radeon/r600_query.h           | 1 +
 src/gallium/drivers/radeon/radeon_winsys.h        | 1 +
 src/gallium/winsys/amdgpu/drm/amdgpu_cs.c         | 1 +
 src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c     | 2 ++
 src/gallium/winsys/amdgpu/drm/amdgpu_winsys.h     | 1 +
 src/gallium/winsys/radeon/drm/radeon_drm_winsys.c | 1 +
 7 files changed, 11 insertions(+)

diff --git a/src/gallium/drivers/radeon/r600_query.c 
b/src/gallium/drivers/radeon/r600_query.c
index b2809f84df..aedf950ff2 100644
--- a/src/gallium/drivers/radeon/r600_query.c
+++ b/src/gallium/drivers/radeon/r600_query.c
@@ -79,6 +79,7 @@ static enum radeon_value_id winsys_id_from_type(unsigned type)
        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_GFX_BO_LIST_SIZE: return RADEON_GFX_BO_LIST_COUNTER;
+       case R600_QUERY_GFX_IB_SIZE: return RADEON_GFX_IB_SIZE_COUNTER;
        case R600_QUERY_NUM_BYTES_MOVED: return RADEON_NUM_BYTES_MOVED;
        case R600_QUERY_NUM_EVICTIONS: return RADEON_NUM_EVICTIONS;
        case R600_QUERY_NUM_VRAM_CPU_PAGE_FAULTS: return 
RADEON_NUM_VRAM_CPU_PAGE_FAULTS;
@@ -178,6 +179,7 @@ static bool r600_query_sw_begin(struct r600_common_context 
*rctx,
                query->begin_result = 0;
                break;
        case R600_QUERY_BUFFER_WAIT_TIME:
+       case R600_QUERY_GFX_IB_SIZE:
        case R600_QUERY_NUM_GFX_IBS:
        case R600_QUERY_NUM_SDMA_IBS:
        case R600_QUERY_NUM_BYTES_MOVED:
@@ -333,6 +335,7 @@ static bool r600_query_sw_end(struct r600_common_context 
*rctx,
        case R600_QUERY_CURRENT_GPU_SCLK:
        case R600_QUERY_CURRENT_GPU_MCLK:
        case R600_QUERY_BUFFER_WAIT_TIME:
+       case R600_QUERY_GFX_IB_SIZE:
        case R600_QUERY_NUM_MAPPED_BUFFERS:
        case R600_QUERY_NUM_GFX_IBS:
        case R600_QUERY_NUM_SDMA_IBS:
@@ -1933,6 +1936,7 @@ static struct pipe_driver_query_info 
r600_driver_query_list[] = {
        X("num-GFX-IBs",                NUM_GFX_IBS,            UINT64, 
AVERAGE),
        X("num-SDMA-IBs",               NUM_SDMA_IBS,           UINT64, 
AVERAGE),
        X("GFX-BO-list-size",           GFX_BO_LIST_SIZE,       UINT64, 
AVERAGE),
+       X("GFX-IB-size",                GFX_IB_SIZE,            UINT64, 
AVERAGE),
        X("num-bytes-moved",            NUM_BYTES_MOVED,        BYTES, 
CUMULATIVE),
        X("num-evictions",              NUM_EVICTIONS,          UINT64, 
CUMULATIVE),
        X("VRAM-CPU-page-faults",       NUM_VRAM_CPU_PAGE_FAULTS, UINT64, 
CUMULATIVE),
diff --git a/src/gallium/drivers/radeon/r600_query.h 
b/src/gallium/drivers/radeon/r600_query.h
index a20da075c6..04943da36f 100644
--- a/src/gallium/drivers/radeon/r600_query.h
+++ b/src/gallium/drivers/radeon/r600_query.h
@@ -72,6 +72,7 @@ enum {
        R600_QUERY_NUM_GFX_IBS,
        R600_QUERY_NUM_SDMA_IBS,
        R600_QUERY_GFX_BO_LIST_SIZE,
+       R600_QUERY_GFX_IB_SIZE,
        R600_QUERY_NUM_BYTES_MOVED,
        R600_QUERY_NUM_EVICTIONS,
        R600_QUERY_NUM_VRAM_CPU_PAGE_FAULTS,
diff --git a/src/gallium/drivers/radeon/radeon_winsys.h 
b/src/gallium/drivers/radeon/radeon_winsys.h
index 2438ec2225..2d3f646dc6 100644
--- a/src/gallium/drivers/radeon/radeon_winsys.h
+++ b/src/gallium/drivers/radeon/radeon_winsys.h
@@ -92,6 +92,7 @@ enum radeon_value_id {
     RADEON_NUM_GFX_IBS,
     RADEON_NUM_SDMA_IBS,
     RADEON_GFX_BO_LIST_COUNTER, /* number of BOs submitted in gfx IBs */
+    RADEON_GFX_IB_SIZE_COUNTER,
     RADEON_NUM_BYTES_MOVED,
     RADEON_NUM_EVICTIONS,
     RADEON_NUM_VRAM_CPU_PAGE_FAULTS,
diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c 
b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c
index 8fbe8ae5fd..8f43e93646 100644
--- a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c
+++ b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c
@@ -1423,6 +1423,7 @@ static int amdgpu_cs_flush(struct radeon_winsys_cs *rcs,
          while (rcs->current.cdw & 7)
             radeon_emit(rcs, 0xffff1000); /* type3 nop packet */
       }
+      ws->gfx_ib_size_counter += (rcs->prev_dw + rcs->current.cdw) * 4;
       break;
    case RING_UVD:
       while (rcs->current.cdw & 15)
diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c 
b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c
index 5e0c1fd8d8..a210a27043 100644
--- a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c
+++ b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c
@@ -145,6 +145,8 @@ static uint64_t amdgpu_query_value(struct radeon_winsys 
*rws,
       return ws->num_sdma_IBs;
    case RADEON_GFX_BO_LIST_COUNTER:
       return ws->gfx_bo_list_counter;
+   case RADEON_GFX_IB_SIZE_COUNTER:
+      return ws->gfx_ib_size_counter;
    case RADEON_NUM_BYTES_MOVED:
       amdgpu_query_info(ws->dev, AMDGPU_INFO_NUM_BYTES_MOVED, 8, &retval);
       return retval;
diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.h 
b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.h
index de54470ede..8b62e2dbe3 100644
--- a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.h
+++ b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.h
@@ -69,6 +69,7 @@ struct amdgpu_winsys {
    uint64_t num_sdma_IBs;
    uint64_t num_mapped_buffers;
    uint64_t gfx_bo_list_counter;
+   uint64_t gfx_ib_size_counter;
 
    struct radeon_info info;
 
diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c 
b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
index 542e5494be..c61f3d9795 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
@@ -632,6 +632,7 @@ static uint64_t radeon_query_value(struct radeon_winsys 
*rws,
     case RADEON_NUM_VRAM_CPU_PAGE_FAULTS:
     case RADEON_VRAM_VIS_USAGE:
     case RADEON_GFX_BO_LIST_COUNTER:
+    case RADEON_GFX_IB_SIZE_COUNTER:
         return 0; /* unimplemented */
     case RADEON_VRAM_USAGE:
         radeon_get_drm_value(ws->fd, RADEON_INFO_VRAM_USAGE,

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to