From: Eric Anholt Date: Wed, 22 Apr 2020 20:27:20 +0000 (-0700) Subject: freedreno/ir3: Fix driver_location of the added vertex_flags varying. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ac937bf878c30f1879adfb31f68a4dec15d3b616;p=mesa.git freedreno/ir3: Fix driver_location of the added vertex_flags varying. It was ignoring the sizes of the output variables and assuming single-slot, and failing to update num_outputs. Reviewed-by: Connor Abbott Reviewed-by: Jose Maria Casanova Crespo Part-of: --- diff --git a/src/freedreno/ir3/ir3_nir_lower_tess.c b/src/freedreno/ir3/ir3_nir_lower_tess.c index 2f2abc10bbb..249e36dad6a 100644 --- a/src/freedreno/ir3/ir3_nir_lower_tess.c +++ b/src/freedreno/ir3/ir3_nir_lower_tess.c @@ -890,15 +890,9 @@ ir3_nir_lower_gs(nir_shader *shader, struct ir3_shader *s) build_primitive_map(shader, &state.map, &shader->inputs); - uint32_t loc = 0; - nir_foreach_variable (var, &shader->outputs) { - uint32_t end = var->data.driver_location + glsl_count_attribute_slots(var->type, false); - loc = MAX2(loc, end); - } - state.vertex_flags_out = nir_variable_create(shader, nir_var_shader_out, glsl_uint_type(), "vertex_flags"); - state.vertex_flags_out->data.driver_location = loc; + state.vertex_flags_out->data.driver_location = shader->num_outputs++; state.vertex_flags_out->data.location = VARYING_SLOT_GS_VERTEX_FLAGS_IR3; nir_function_impl *impl = nir_shader_get_entrypoint(shader);