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

Author: Marek Olšák <[email protected]>
Date:   Sun Jul 31 00:46:09 2016 +0200

radeonsi: add environment variable SI_FORCE_FAMILY

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.

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

---

 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 c540cfd..e33823d 100644
--- a/src/gallium/drivers/radeonsi/si_pipe.c
+++ b/src/gallium/drivers/radeonsi/si_pipe.c
@@ -715,6 +715,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);
@@ -740,6 +770,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);
 

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

Reply via email to