[Mesa-dev] [PATCH 6/8] radeonsi: fix si_get_num_queries for radeon

Marek Olšák maraeo at gmail.com
Sat Jun 9 03:16:53 UTC 2018


From: Marek Olšák <marek.olsak at amd.com>

---
 src/gallium/drivers/radeonsi/si_query.c | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_query.c b/src/gallium/drivers/radeonsi/si_query.c
index 7f32be39a16..9c51c9892e6 100644
--- a/src/gallium/drivers/radeonsi/si_query.c
+++ b/src/gallium/drivers/radeonsi/si_query.c
@@ -1935,45 +1935,56 @@ static struct pipe_driver_query_info si_driver_query_list[] = {
 	X("GPU-vgt-busy",		GPU_VGT_BUSY,		UINT64, AVERAGE),
 	X("GPU-ia-busy",		GPU_IA_BUSY,		UINT64, AVERAGE),
 	X("GPU-sx-busy",		GPU_SX_BUSY,		UINT64, AVERAGE),
 	X("GPU-wd-busy",		GPU_WD_BUSY,		UINT64, AVERAGE),
 	X("GPU-bci-busy",		GPU_BCI_BUSY,		UINT64, AVERAGE),
 	X("GPU-sc-busy",		GPU_SC_BUSY,		UINT64, AVERAGE),
 	X("GPU-pa-busy",		GPU_PA_BUSY,		UINT64, AVERAGE),
 	X("GPU-db-busy",		GPU_DB_BUSY,		UINT64, AVERAGE),
 	X("GPU-cp-busy",		GPU_CP_BUSY,		UINT64, AVERAGE),
 	X("GPU-cb-busy",		GPU_CB_BUSY,		UINT64, AVERAGE),
+
+	/* SRBM_STATUS2 */
 	X("GPU-sdma-busy",		GPU_SDMA_BUSY,		UINT64, AVERAGE),
+
+	/* CP_STAT */
 	X("GPU-pfp-busy",		GPU_PFP_BUSY,		UINT64, AVERAGE),
 	X("GPU-meq-busy",		GPU_MEQ_BUSY,		UINT64, AVERAGE),
 	X("GPU-me-busy",		GPU_ME_BUSY,		UINT64, AVERAGE),
 	X("GPU-surf-sync-busy",		GPU_SURF_SYNC_BUSY,	UINT64, AVERAGE),
 	X("GPU-cp-dma-busy",		GPU_CP_DMA_BUSY,	UINT64, AVERAGE),
 	X("GPU-scratch-ram-busy",	GPU_SCRATCH_RAM_BUSY,	UINT64, AVERAGE),
 };
 
 #undef X
 #undef XG
 #undef XFULL
 
 static unsigned si_get_num_queries(struct si_screen *sscreen)
 {
-	if (sscreen->info.drm_major == 2 && sscreen->info.drm_minor >= 42)
-		return ARRAY_SIZE(si_driver_query_list);
-	else if (sscreen->info.drm_major == 3) {
+	/* amdgpu */
+	if (sscreen->info.drm_major == 3) {
 		if (sscreen->info.chip_class >= VI)
 			return ARRAY_SIZE(si_driver_query_list);
 		else
 			return ARRAY_SIZE(si_driver_query_list) - 7;
 	}
-	else
-		return ARRAY_SIZE(si_driver_query_list) - 25;
+
+	/* radeon */
+	if (sscreen->info.has_read_registers_query) {
+		if (sscreen->info.chip_class == CIK)
+			return ARRAY_SIZE(si_driver_query_list) - 6;
+		else
+			return ARRAY_SIZE(si_driver_query_list) - 7;
+	}
+
+	return ARRAY_SIZE(si_driver_query_list) - 21;
 }
 
 static int si_get_driver_query_info(struct pipe_screen *screen,
 				    unsigned index,
 				    struct pipe_driver_query_info *info)
 {
 	struct si_screen *sscreen = (struct si_screen*)screen;
 	unsigned num_queries = si_get_num_queries(sscreen);
 
 	if (!info) {
-- 
2.17.1



More information about the mesa-dev mailing list