diff options
Diffstat (limited to 'src/compiler/nir/nir_lower_two_sided_color.c')
-rw-r--r-- | src/compiler/nir/nir_lower_two_sided_color.c | 39 |
1 files changed, 8 insertions, 31 deletions
diff --git a/src/compiler/nir/nir_lower_two_sided_color.c b/src/compiler/nir/nir_lower_two_sided_color.c index d3d7f5be24d..962d223134b 100644 --- a/src/compiler/nir/nir_lower_two_sided_color.c +++ b/src/compiler/nir/nir_lower_two_sided_color.c @@ -37,7 +37,6 @@ typedef struct { nir_variable *front; /* COLn */ nir_variable *back; /* BFCn */ } colors[MAX_COLORS]; - nir_variable *face; int colors_count; } lower_2side_state; @@ -51,38 +50,15 @@ static nir_variable * create_input(nir_shader *shader, gl_varying_slot slot, enum glsl_interp_mode interpolation) { - nir_variable *var = nir_variable_create(shader, nir_var_shader_in, - glsl_vec4_type(), NULL); + nir_variable *var = nir_create_variable_with_location(shader, nir_var_shader_in, + slot, glsl_vec4_type()); - var->data.driver_location = shader->num_inputs++; - var->name = ralloc_asprintf(var, "in_%d", var->data.driver_location); var->data.index = 0; - var->data.location = slot; var->data.interpolation = interpolation; return var; } -static nir_variable * -create_face_input(nir_shader *shader) -{ - nir_variable *var = - nir_find_variable_with_location(shader, nir_var_shader_in, - VARYING_SLOT_FACE); - - if (var == NULL) { - var = nir_variable_create(shader, nir_var_shader_in, - glsl_bool_type(), "gl_FrontFacing"); - - var->data.driver_location = shader->num_inputs++; - var->data.index = 0; - var->data.location = VARYING_SLOT_FACE; - var->data.interpolation = INTERP_MODE_FLAT; - } - - return var; -} - static nir_ssa_def * load_input(nir_builder *b, nir_variable *in) { @@ -123,9 +99,6 @@ setup_inputs(lower_2side_state *state) state->colors[i].front->data.interpolation); } - if (!state->face_sysval) - state->face = create_face_input(state->shader); - return 0; } @@ -174,8 +147,12 @@ nir_lower_two_sided_color_instr(nir_builder *b, nir_instr *instr, void *data) nir_ssa_def *face; if (state->face_sysval) face = nir_load_front_face(b, 1); - else - face = nir_load_var(b, state->face); + else { + nir_variable *var = nir_get_variable_with_location(b->shader, nir_var_shader_in, + VARYING_SLOT_FACE, glsl_bool_type()); + var->data.interpolation = INTERP_MODE_FLAT; + face = nir_load_var(b, var); + } nir_ssa_def *front, *back; if (intr->intrinsic == nir_intrinsic_load_deref) { |