From ada3c3aa3da5d04bd597014dc1b5d4b028313513 Mon Sep 17 00:00:00 2001 From: Rob Herring Date: Wed, 31 May 2017 19:56:56 -0500 Subject: [PATCH] glsl: Fix gl_shader_stage enum unsigned comparison MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Replace -1 with MESA_SHADER_NONE enum value to fix sign related warning: external/mesa3d/src/compiler/glsl/link_varyings.cpp:1415:25: warning: comparison of constant -1 with expression of type 'gl_shader_stage' is always true [-Wtautological-constant-out-of-range-compare] (consumer_stage != -1 && consumer_stage != MESA_SHADER_FRAGMENT))) { ~~~~~~~~~~~~~~ ^ ~~ Reviewed-by: Nicolai Hähnle Signed-off-by: Rob Herring --- src/compiler/glsl/ast_to_hir.cpp | 7 ++++++- src/compiler/glsl/builtin_variables.cpp | 4 ++++ src/compiler/glsl/link_varyings.cpp | 6 +++--- src/compiler/shader_enums.h | 1 + src/mesa/main/shaderobj.h | 4 ++++ src/mesa/program/prog_print.c | 2 ++ src/mesa/state_tracker/st_context.h | 2 ++ 7 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp index e451bda8016..e07e5f509b5 100644 --- a/src/compiler/glsl/ast_to_hir.cpp +++ b/src/compiler/glsl/ast_to_hir.cpp @@ -3245,6 +3245,9 @@ apply_explicit_location(const struct ast_type_qualifier *qual, "compute shader variables cannot be given " "explicit locations"); return; + default: + fail = true; + break; }; if (fail) { @@ -3276,7 +3279,7 @@ apply_explicit_location(const struct ast_type_qualifier *qual, ? (qual_location + FRAG_RESULT_DATA0) : (qual_location + VARYING_SLOT_VAR0); break; - case MESA_SHADER_COMPUTE: + default: assert(!"Unexpected shader type"); break; } @@ -4089,6 +4092,8 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual, case MESA_SHADER_COMPUTE: /* Invariance isn't meaningful in compute shaders. */ break; + default: + break; } } diff --git a/src/compiler/glsl/builtin_variables.cpp b/src/compiler/glsl/builtin_variables.cpp index ce4dd43730c..405502eb8a4 100644 --- a/src/compiler/glsl/builtin_variables.cpp +++ b/src/compiler/glsl/builtin_variables.cpp @@ -1324,6 +1324,8 @@ builtin_variable_generator::add_varying(int slot, const glsl_type *type, case MESA_SHADER_COMPUTE: /* Compute shaders don't have varyings. */ break; + default: + break; } } @@ -1461,6 +1463,8 @@ _mesa_glsl_initialize_variables(exec_list *instructions, case MESA_SHADER_COMPUTE: gen.generate_cs_special_vars(); break; + default: + break; } } diff --git a/src/compiler/glsl/link_varyings.cpp b/src/compiler/glsl/link_varyings.cpp index d04f546c243..910e2eda82b 100644 --- a/src/compiler/glsl/link_varyings.cpp +++ b/src/compiler/glsl/link_varyings.cpp @@ -1412,7 +1412,7 @@ varying_matches::record(ir_variable *producer_var, ir_variable *consumer_var) if (!disable_varying_packing && (needs_flat_qualifier || - (consumer_stage != -1 && consumer_stage != MESA_SHADER_FRAGMENT))) { + (consumer_stage != MESA_SHADER_NONE && consumer_stage != MESA_SHADER_FRAGMENT))) { /* Since this varying is not being consumed by the fragment shader, its * interpolation type varying cannot possibly affect rendering. * Also, this variable is non-flat and is (or contains) an integer @@ -2170,8 +2170,8 @@ assign_varying_locations(struct gl_context *ctx, varying_matches matches(disable_varying_packing, xfb_enabled, ctx->Extensions.ARB_enhanced_layouts, - producer ? producer->Stage : (gl_shader_stage)-1, - consumer ? consumer->Stage : (gl_shader_stage)-1); + producer ? producer->Stage : MESA_SHADER_NONE, + consumer ? consumer->Stage : MESA_SHADER_NONE); hash_table *tfeedback_candidates = _mesa_hash_table_create(NULL, _mesa_key_hash_string, _mesa_key_string_equal); diff --git a/src/compiler/shader_enums.h b/src/compiler/shader_enums.h index 07db4767f86..352f27040ce 100644 --- a/src/compiler/shader_enums.h +++ b/src/compiler/shader_enums.h @@ -39,6 +39,7 @@ extern "C" { */ typedef enum { + MESA_SHADER_NONE = -1, MESA_SHADER_VERTEX = 0, MESA_SHADER_TESS_CTRL = 1, MESA_SHADER_TESS_EVAL = 2, diff --git a/src/mesa/main/shaderobj.h b/src/mesa/main/shaderobj.h index b7dae62bcb4..97b8ce7ac23 100644 --- a/src/mesa/main/shaderobj.h +++ b/src/mesa/main/shaderobj.h @@ -216,6 +216,8 @@ _mesa_shader_stage_to_subroutine(gl_shader_stage stage) return GL_TESS_CONTROL_SUBROUTINE; case MESA_SHADER_TESS_EVAL: return GL_TESS_EVALUATION_SUBROUTINE; + case MESA_SHADER_NONE: + break; } unreachable("not reached"); } @@ -236,6 +238,8 @@ _mesa_shader_stage_to_subroutine_uniform(gl_shader_stage stage) return GL_TESS_CONTROL_SUBROUTINE_UNIFORM; case MESA_SHADER_TESS_EVAL: return GL_TESS_EVALUATION_SUBROUTINE_UNIFORM; + case MESA_SHADER_NONE: + break; } unreachable("not reached"); } diff --git a/src/mesa/program/prog_print.c b/src/mesa/program/prog_print.c index b32ce150da3..4f85d14c41d 100644 --- a/src/mesa/program/prog_print.c +++ b/src/mesa/program/prog_print.c @@ -969,6 +969,8 @@ _mesa_write_shader_to_file(const struct gl_shader *shader) case MESA_SHADER_COMPUTE: type = "comp"; break; + default: + break; } _mesa_snprintf(filename, sizeof(filename), "shader_%u.%s", shader->Name, type); diff --git a/src/mesa/state_tracker/st_context.h b/src/mesa/state_tracker/st_context.h index 631c3aee0ac..6dcf13352b9 100644 --- a/src/mesa/state_tracker/st_context.h +++ b/src/mesa/state_tracker/st_context.h @@ -363,6 +363,8 @@ st_shader_stage_to_ptarget(gl_shader_stage stage) return PIPE_SHADER_TESS_EVAL; case MESA_SHADER_COMPUTE: return PIPE_SHADER_COMPUTE; + default: + break; } assert(!"should not be reached"); -- 2.30.2