Re: [Mesa-dev] [PATCH 1/2] util: move brw_env_var_as_boolean() to util
Hi Rob, On 18.11.2015 23:20, Rob Clark wrote: From: Rob ClarkKind of a handy function. And I'll what it available outside of i965 for common nir-pass helpers. Signed-off-by: Rob Clark --- src/mesa/drivers/dri/i965/brw_context.c | 5 +++-- src/mesa/drivers/dri/i965/brw_nir.c | 4 +++- src/mesa/drivers/dri/i965/brw_shader.cpp | 3 ++- src/mesa/drivers/dri/i965/intel_debug.c | 25 - src/mesa/drivers/dri/i965/intel_debug.h | 2 -- src/util/debug.c | 25 + src/util/debug.h | 2 ++ 7 files changed, 35 insertions(+), 31 deletions(-) [.. snip ...] diff --git a/src/util/debug.c b/src/util/debug.c index 3729ce8..98b1853 100644 --- a/src/util/debug.c +++ b/src/util/debug.c @@ -51,3 +51,28 @@ parse_debug_string(const char *debug, return flag; } + +/** + * Reads an environment variable and interprets its value as a boolean. + * + * Recognizes 0/false/no and 1/true/yes. Other values result in the default value. + */ +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; + } +} This all looks good to me. I do have two suggestions to slightly improve usability: 1) Add "on" and "off" as recognized values. 2) Add something to the effect of `fprintf(stderr, "%s: value not recognized, using default.\n", var_name);` to the default value branch. Either way, feel free to add my R-b. Cheers, Nicolai diff --git a/src/util/debug.h b/src/util/debug.h index 801736a..3555417 100644 --- a/src/util/debug.h +++ b/src/util/debug.h @@ -38,6 +38,8 @@ struct debug_control { uint64_t parse_debug_string(const char *debug, const struct debug_control *control); +bool +env_var_as_boolean(const char *var_name, bool default_value); #ifdef __cplusplus } /* extern C */ ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 1/2] util: move brw_env_var_as_boolean() to util
On Thu, Nov 19, 2015 at 5:31 AM, Nicolai Hähnlewrote: > Hi Rob, > > On 18.11.2015 23:20, Rob Clark wrote: >> >> From: Rob Clark >> >> Kind of a handy function. And I'll what it available outside of i965 >> for common nir-pass helpers. >> >> Signed-off-by: Rob Clark >> --- >> src/mesa/drivers/dri/i965/brw_context.c | 5 +++-- >> src/mesa/drivers/dri/i965/brw_nir.c | 4 +++- >> src/mesa/drivers/dri/i965/brw_shader.cpp | 3 ++- >> src/mesa/drivers/dri/i965/intel_debug.c | 25 - >> src/mesa/drivers/dri/i965/intel_debug.h | 2 -- >> src/util/debug.c | 25 + >> src/util/debug.h | 2 ++ >> 7 files changed, 35 insertions(+), 31 deletions(-) > > [.. snip ...] > >> diff --git a/src/util/debug.c b/src/util/debug.c >> index 3729ce8..98b1853 100644 >> --- a/src/util/debug.c >> +++ b/src/util/debug.c >> @@ -51,3 +51,28 @@ parse_debug_string(const char *debug, >> >> return flag; >> } >> + >> +/** >> + * Reads an environment variable and interprets its value as a boolean. >> + * >> + * Recognizes 0/false/no and 1/true/yes. Other values result in the >> default value. >> + */ >> +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; >> + } >> +} > > > This all looks good to me. I do have two suggestions to slightly improve > usability: > > 1) Add "on" and "off" as recognized values. > > 2) Add something to the effect of `fprintf(stderr, "%s: value not > recognized, using default.\n", var_name);` to the default value branch. Those would be reasonable additions, although should be split out into a different patch.. I prefer to avoid making unrelated changes at same time I move code around > Either way, feel free to add my R-b. Thanks BR, -R > Cheers, > Nicolai > > >> diff --git a/src/util/debug.h b/src/util/debug.h >> index 801736a..3555417 100644 >> --- a/src/util/debug.h >> +++ b/src/util/debug.h >> @@ -38,6 +38,8 @@ struct debug_control { >> uint64_t >> parse_debug_string(const char *debug, >> const struct debug_control *control); >> +bool >> +env_var_as_boolean(const char *var_name, bool default_value); >> >> #ifdef __cplusplus >> } /* extern C */ >> > ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [PATCH 1/2] util: move brw_env_var_as_boolean() to util
From: Rob ClarkKind of a handy function. And I'll what it available outside of i965 for common nir-pass helpers. Signed-off-by: Rob Clark --- src/mesa/drivers/dri/i965/brw_context.c | 5 +++-- src/mesa/drivers/dri/i965/brw_nir.c | 4 +++- src/mesa/drivers/dri/i965/brw_shader.cpp | 3 ++- src/mesa/drivers/dri/i965/intel_debug.c | 25 - src/mesa/drivers/dri/i965/intel_debug.h | 2 -- src/util/debug.c | 25 + src/util/debug.h | 2 ++ 7 files changed, 35 insertions(+), 31 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index 2ea0a9e..7e2fdcb 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -69,6 +69,7 @@ #include "tnl/tnl.h" #include "tnl/t_pipeline.h" #include "util/ralloc.h" +#include "util/debug.h" /*** * Mesa's Driver Functions @@ -899,8 +900,8 @@ brwCreateContext(gl_api api, brw->predicate.state = BRW_PREDICATE_STATE_RENDER; brw->use_resource_streamer = screen->has_resource_streamer && - (brw_env_var_as_boolean("INTEL_USE_HW_BT", false) || - brw_env_var_as_boolean("INTEL_USE_GATHER", false)); + (env_var_as_boolean("INTEL_USE_HW_BT", false) || + env_var_as_boolean("INTEL_USE_GATHER", false)); ctx->VertexProgram._MaintainTnlProgram = true; ctx->FragmentProgram._MaintainTexEnvProgram = true; diff --git a/src/mesa/drivers/dri/i965/brw_nir.c b/src/mesa/drivers/dri/i965/brw_nir.c index 79e70b9..4c5e036 100644 --- a/src/mesa/drivers/dri/i965/brw_nir.c +++ b/src/mesa/drivers/dri/i965/brw_nir.c @@ -171,12 +171,14 @@ brw_nir_lower_outputs(nir_shader *nir, bool is_scalar) } } +#include "util/debug.h" + static bool should_clone_nir() { static int should_clone = -1; if (should_clone < 1) - should_clone = brw_env_var_as_boolean("NIR_TEST_CLONE", false); + should_clone = env_var_as_boolean("NIR_TEST_CLONE", false); return should_clone; } diff --git a/src/mesa/drivers/dri/i965/brw_shader.cpp b/src/mesa/drivers/dri/i965/brw_shader.cpp index c4a567f..cd1a4c5 100644 --- a/src/mesa/drivers/dri/i965/brw_shader.cpp +++ b/src/mesa/drivers/dri/i965/brw_shader.cpp @@ -31,6 +31,7 @@ #include "glsl/ir_optimization.h" #include "glsl/glsl_parser_extras.h" #include "main/shaderapi.h" +#include "util/debug.h" static void shader_debug_log_mesa(void *data, const char *fmt, ...) @@ -87,7 +88,7 @@ brw_compiler_create(void *mem_ctx, const struct brw_device_info *devinfo) compiler->scalar_stage[MESA_SHADER_VERTEX] = devinfo->gen >= 8 && !(INTEL_DEBUG & DEBUG_VEC4VS); compiler->scalar_stage[MESA_SHADER_GEOMETRY] = - devinfo->gen >= 8 && brw_env_var_as_boolean("INTEL_SCALAR_GS", false); + devinfo->gen >= 8 && env_var_as_boolean("INTEL_SCALAR_GS", false); compiler->scalar_stage[MESA_SHADER_FRAGMENT] = true; compiler->scalar_stage[MESA_SHADER_COMPUTE] = true; diff --git a/src/mesa/drivers/dri/i965/intel_debug.c b/src/mesa/drivers/dri/i965/intel_debug.c index f53c4ab..7d8b966 100644 --- a/src/mesa/drivers/dri/i965/intel_debug.c +++ b/src/mesa/drivers/dri/i965/intel_debug.c @@ -103,28 +103,3 @@ brw_process_intel_debug_variable(void) uint64_t intel_debug = parse_debug_string(getenv("INTEL_DEBUG"), debug_control); (void) p_atomic_cmpxchg(_DEBUG, 0, intel_debug); } - -/** - * Reads an environment variable and interprets its value as a boolean. - * - * Recognizes 0/false/no and 1/true/yes. Other values result in the default value. - */ -bool -brw_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; - } -} diff --git a/src/mesa/drivers/dri/i965/intel_debug.h b/src/mesa/drivers/dri/i965/intel_debug.h index 9c6030a..175ac68 100644 --- a/src/mesa/drivers/dri/i965/intel_debug.h +++ b/src/mesa/drivers/dri/i965/intel_debug.h @@ -120,5 +120,3 @@ extern uint64_t INTEL_DEBUG; extern uint64_t intel_debug_flag_for_shader_stage(gl_shader_stage stage); extern void brw_process_intel_debug_variable(void); - -extern bool brw_env_var_as_boolean(const char *var_name, bool default_value); diff --git a/src/util/debug.c b/src/util/debug.c index 3729ce8..98b1853 100644 --- a/src/util/debug.c +++ b/src/util/debug.c @@ -51,3 +51,28 @@ parse_debug_string(const char *debug, return flag; } + +/** + * Reads an environment variable and interprets its value as a boolean. + * + * Recognizes