[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