st/glsl_to_nir: fix edgeflag passthrough
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 <marek.olsak@amd.com>
This commit is contained in:
parent
8a4cd79d00
commit
c2065ed687
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue