[Mesa-dev] [PATCH 1/3] radeonsi: add environment variable SI_FORCE_FAMILY

Marek Olšák maraeo at gmail.com
Sun Jul 31 20:29:28 UTC 2016


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

This will be used by: amdgcn_glslc -mcpu=[family]

It can also be used for shader-db if you want stats for a different family.
---
 src/gallium/drivers/radeonsi/si_pipe.c | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c
index 9304e5c..ae9f52c 100644
--- a/src/gallium/drivers/radeonsi/si_pipe.c
+++ b/src/gallium/drivers/radeonsi/si_pipe.c
@@ -716,6 +716,36 @@ static bool si_init_gs_info(struct si_screen *sscreen)
 	}
 }
 
+static void si_handle_env_var_force_family(struct si_screen *sscreen)
+{
+	const char *family = debug_get_option("SI_FORCE_FAMILY", NULL);
+	unsigned i;
+
+	if (!family)
+		return;
+
+	for (i = CHIP_TAHITI; i < CHIP_LAST; i++) {
+		if (!strcmp(family, r600_get_llvm_processor_name(i))) {
+			/* Override family and chip_class. */
+			sscreen->b.family = sscreen->b.info.family = i;
+
+			if (i >= CHIP_TONGA)
+				sscreen->b.chip_class = sscreen->b.info.chip_class = VI;
+			else if (i >= CHIP_BONAIRE)
+				sscreen->b.chip_class = sscreen->b.info.chip_class = CIK;
+			else
+				sscreen->b.chip_class = sscreen->b.info.chip_class = SI;
+
+			/* Don't submit any IBs. */
+			setenv("RADEON_NOOP", "1", 1);
+			return;
+		}
+	}
+
+	fprintf(stderr, "radeonsi: Unknown family: %s\n", family);
+	exit(1);
+}
+
 struct pipe_screen *radeonsi_screen_create(struct radeon_winsys *ws)
 {
 	struct si_screen *sscreen = CALLOC_STRUCT(si_screen);
@@ -741,6 +771,8 @@ struct pipe_screen *radeonsi_screen_create(struct radeon_winsys *ws)
 		return NULL;
 	}
 
+	si_handle_env_var_force_family(sscreen);
+
 	if (!debug_get_bool_option("RADEON_DISABLE_PERFCOUNTERS", false))
 		si_init_perfcounters(sscreen);
 
-- 
2.7.4



More information about the mesa-dev mailing list