nir: fix nir_lower_wpos_ytransform when gl_FragCoord is a system value

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
Nicolai Hähnle 2017-06-25 15:26:01 +02:00
parent b27c2d402e
commit 5011923e09

View file

@ -302,8 +302,10 @@ lower_wpos_ytransform_block(lower_wpos_ytransform_state *state, nir_block *block
nir_deref_var *dvar = intr->variables[0];
nir_variable *var = dvar->var;
if (var->data.mode == nir_var_shader_in &&
var->data.location == VARYING_SLOT_POS) {
if ((var->data.mode == nir_var_shader_in &&
var->data.location == VARYING_SLOT_POS) ||
(var->data.mode == nir_var_system_value &&
var->data.location == SYSTEM_VALUE_FRAG_COORD)) {
/* gl_FragCoord should not have array/struct derefs: */
assert(dvar->deref.child == NULL);
lower_fragcoord(state, intr);