From c2065ed687dd714240928827f620852e37f7dffc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolai=20H=C3=A4hnle?= Date: Sun, 25 Jun 2017 18:13:39 +0200 Subject: [PATCH] st/glsl_to_nir: fix edgeflag passthrough MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We have to mark the additional shader input as used, otherwise it will be eliminated, and we have to setup its index correctly. This is a bit of a hack, but so is everything surrounding edgeflag passthrough. Reviewed-by: Marek Olšák --- src/mesa/state_tracker/st_glsl_to_nir.cpp | 3 +++ src/mesa/state_tracker/st_program.c | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/mesa/state_tracker/st_glsl_to_nir.cpp b/src/mesa/state_tracker/st_glsl_to_nir.cpp index 524eefa236c..89f78884389 100644 --- a/src/mesa/state_tracker/st_glsl_to_nir.cpp +++ b/src/mesa/state_tracker/st_glsl_to_nir.cpp @@ -92,6 +92,9 @@ st_nir_assign_vs_in_locations(struct gl_program *prog, nir_shader *nir) } } + /* bit of a hack, mirroring st_translate_vertex_program */ + input_to_index[VERT_ATTRIB_EDGEFLAG] = num_inputs; + nir->num_inputs = 0; nir_foreach_variable_safe(var, &nir->inputs) { attr = var->data.location; diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c index eb44fc57b57..6b6d41536cf 100644 --- a/src/mesa/state_tracker/st_program.c +++ b/src/mesa/state_tracker/st_program.c @@ -557,8 +557,10 @@ st_create_vp_variant(struct st_context *st, vpv->tgsi.ir.nir = nir_shader_clone(NULL, stvp->tgsi.ir.nir); if (key->clamp_color) NIR_PASS_V(vpv->tgsi.ir.nir, nir_lower_clamp_color_outputs); - if (key->passthrough_edgeflags) + if (key->passthrough_edgeflags) { NIR_PASS_V(vpv->tgsi.ir.nir, nir_lower_passthrough_edgeflags); + vpv->num_inputs++; + } st_finalize_nir(st, &stvp->Base, vpv->tgsi.ir.nir);