gallium/radeon: add a new HUD query for the number of resident handles
Useful for debugging performance issues when ARB_bindless_texture is enabled. This query doesn't make a distinction between texture and image handles. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
@@ -598,6 +598,7 @@ struct r600_common_context {
|
||||
unsigned num_fb_cache_flushes;
|
||||
unsigned num_L2_invalidates;
|
||||
unsigned num_L2_writebacks;
|
||||
unsigned num_resident_handles;
|
||||
uint64_t num_alloc_tex_transfer_bytes;
|
||||
unsigned last_tex_ps_draw_ratio; /* for query */
|
||||
|
||||
|
||||
@@ -134,6 +134,9 @@ static bool r600_query_sw_begin(struct r600_common_context *rctx,
|
||||
case R600_QUERY_NUM_L2_WRITEBACKS:
|
||||
query->begin_result = rctx->num_L2_writebacks;
|
||||
break;
|
||||
case R600_QUERY_NUM_RESIDENT_HANDLES:
|
||||
query->begin_result = rctx->num_resident_handles;
|
||||
break;
|
||||
case R600_QUERY_TC_OFFLOADED_SLOTS:
|
||||
query->begin_result = rctx->tc ? rctx->tc->num_offloaded_slots : 0;
|
||||
break;
|
||||
@@ -276,6 +279,9 @@ static bool r600_query_sw_end(struct r600_common_context *rctx,
|
||||
case R600_QUERY_NUM_L2_WRITEBACKS:
|
||||
query->end_result = rctx->num_L2_writebacks;
|
||||
break;
|
||||
case R600_QUERY_NUM_RESIDENT_HANDLES:
|
||||
query->end_result = rctx->num_resident_handles;
|
||||
break;
|
||||
case R600_QUERY_TC_OFFLOADED_SLOTS:
|
||||
query->end_result = rctx->tc ? rctx->tc->num_offloaded_slots : 0;
|
||||
break;
|
||||
@@ -1834,6 +1840,7 @@ static struct pipe_driver_query_info r600_driver_query_list[] = {
|
||||
X("num-fb-cache-flushes", NUM_FB_CACHE_FLUSHES, UINT64, AVERAGE),
|
||||
X("num-L2-invalidates", NUM_L2_INVALIDATES, UINT64, AVERAGE),
|
||||
X("num-L2-writebacks", NUM_L2_WRITEBACKS, UINT64, AVERAGE),
|
||||
X("num-resident-handles", NUM_RESIDENT_HANDLES, UINT64, AVERAGE),
|
||||
X("tc-offloaded-slots", TC_OFFLOADED_SLOTS, UINT64, AVERAGE),
|
||||
X("tc-direct-slots", TC_DIRECT_SLOTS, UINT64, AVERAGE),
|
||||
X("tc-num-syncs", TC_NUM_SYNCS, UINT64, AVERAGE),
|
||||
|
||||
@@ -54,6 +54,7 @@ enum {
|
||||
R600_QUERY_NUM_FB_CACHE_FLUSHES,
|
||||
R600_QUERY_NUM_L2_INVALIDATES,
|
||||
R600_QUERY_NUM_L2_WRITEBACKS,
|
||||
R600_QUERY_NUM_RESIDENT_HANDLES,
|
||||
R600_QUERY_TC_OFFLOADED_SLOTS,
|
||||
R600_QUERY_TC_DIRECT_SLOTS,
|
||||
R600_QUERY_TC_NUM_SYNCS,
|
||||
|
||||
@@ -2595,6 +2595,9 @@ void si_all_resident_buffers_begin_new_cs(struct si_context *sctx)
|
||||
RADEON_USAGE_READWRITE,
|
||||
false, false);
|
||||
}
|
||||
|
||||
sctx->b.num_resident_handles += num_resident_tex_handles +
|
||||
num_resident_img_handles;
|
||||
}
|
||||
|
||||
/* INIT/DEINIT/UPLOAD */
|
||||
|
||||
Reference in New Issue
Block a user