diff options
author | Jason Ekstrand <[email protected]> | 2015-03-17 12:10:58 -0700 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2015-03-18 16:40:22 -0700 |
commit | e1f3ddef8c9928d9b8e845b811dc08983c541f99 (patch) | |
tree | 5a9f78d2a9fde03703f5177a508a95d7097f6832 /src | |
parent | 37e3a116f8ae09d0fa894d126d081a1af24ec14f (diff) |
i965/nir: Make our environment variable checking smarter
Before, we enabled NIR if you set INTEL_USE_NIR to anything which mean that
INTEL_USE_NIR=false would actually turn on NIR. In preparation for turning
NIR on by default, this commit makes it smarter by allowing the
INTEL_USE_NIR variable to work as either a force-enable or a force-disable.
Reviewed-by: Mark Janes <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs.cpp | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index 53ceb29e919..3d4d31ac19e 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -3838,6 +3838,26 @@ fs_visitor::allocate_registers() prog_data->total_scratch = brw_get_scratch_size(last_scratch); } +static bool +env_var_as_boolean(const char *var_name, bool default_value) +{ + const char *str = getenv(var_name); + if (str == NULL) + return default_value; + + if (strcmp(str, "1") == 0 || + strcasecmp(str, "true") == 0 || + strcasecmp(str, "yes") == 0) { + return true; + } else if (strcmp(str, "0") == 0 || + strcasecmp(str, "false") == 0 || + strcasecmp(str, "no") == 0) { + return false; + } else { + return default_value; + } +} + bool fs_visitor::run_vs() { @@ -3849,7 +3869,7 @@ fs_visitor::run_vs() if (INTEL_DEBUG & DEBUG_SHADER_TIME) emit_shader_time_begin(); - if (getenv("INTEL_USE_NIR") != NULL) { + if (env_var_as_boolean("INTEL_USE_NIR", false)) { emit_nir_code(); } else { foreach_in_list(ir_instruction, ir, shader->base.ir) { @@ -3923,7 +3943,7 @@ fs_visitor::run_fs() * functions called "main"). */ if (shader) { - if (getenv("INTEL_USE_NIR") != NULL) { + if (env_var_as_boolean("INTEL_USE_NIR", false)) { emit_nir_code(); } else { foreach_in_list(ir_instruction, ir, shader->base.ir) { |