diff options
author | Timothy Arceri <tarceri@itsqueeze.com> | 2022-10-17 13:28:19 +1100 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2022-10-18 00:05:29 +0000 |
commit | ac7f4e0942de2576feda085d5fd165323753f950 (patch) | |
tree | 1bed9487192150ededc6a6d0edd8a1fd18041509 | |
parent | c7e92686583f45617aa017f30f93d156f2a74a2c (diff) |
glsl/glsl_to_nir: remove unreachable code
This hack in glsl_to_nir() to clean up after the glsl ir linker should
no longer be reachable. These type of linking opts are now done via
a nir based linker long after GLSL IR has been coverted to nir by
this pass.
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19104>
-rw-r--r-- | src/compiler/glsl/glsl_to_nir.cpp | 36 |
1 files changed, 13 insertions, 23 deletions
diff --git a/src/compiler/glsl/glsl_to_nir.cpp b/src/compiler/glsl/glsl_to_nir.cpp index a3035ab50bc..4eb4fdf081d 100644 --- a/src/compiler/glsl/glsl_to_nir.cpp +++ b/src/compiler/glsl/glsl_to_nir.cpp @@ -1886,30 +1886,20 @@ nir_visitor::visit(ir_expression *ir) deref->accept(this); + assert(nir_deref_mode_is(this->deref, nir_var_shader_in)); nir_intrinsic_op op; - if (nir_deref_mode_is(this->deref, nir_var_shader_in)) { - switch (ir->operation) { - case ir_unop_interpolate_at_centroid: - op = nir_intrinsic_interp_deref_at_centroid; - break; - case ir_binop_interpolate_at_offset: - op = nir_intrinsic_interp_deref_at_offset; - break; - case ir_binop_interpolate_at_sample: - op = nir_intrinsic_interp_deref_at_sample; - break; - default: - unreachable("Invalid interpolation intrinsic"); - } - } else { - /* This case can happen if the vertex shader does not write the - * given varying. In this case, the linker will lower it to a - * global variable. Since interpolating a variable makes no - * sense, we'll just turn it into a load which will probably - * eventually end up as an SSA definition. - */ - assert(nir_deref_mode_is(this->deref, nir_var_shader_temp)); - op = nir_intrinsic_load_deref; + switch (ir->operation) { + case ir_unop_interpolate_at_centroid: + op = nir_intrinsic_interp_deref_at_centroid; + break; + case ir_binop_interpolate_at_offset: + op = nir_intrinsic_interp_deref_at_offset; + break; + case ir_binop_interpolate_at_sample: + op = nir_intrinsic_interp_deref_at_sample; + break; + default: + unreachable("Invalid interpolation intrinsic"); } nir_intrinsic_instr *intrin = nir_intrinsic_instr_create(shader, op); |