gl_FragCoord is a shader input with location == VARYING_SLOT_POS.
ARB_fragment_programs have an equivalent input at VARYING_SLOT_POS,
but it isn't called gl_FragCoord. We do want to transform it.
Matching by location guarantees we catch both.
Fixes several fp tests on a branch which uses this pass on i965.
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Rob Clark <robdclark@gmail.com>
nir_deref_var *dvar = intr->variables[0];
nir_variable *var = dvar->var;
- if (strcmp(var->name, "gl_FragCoord") == 0) {
+ if (var->data.mode == nir_var_shader_in &&
+ var->data.location == VARYING_SLOT_POS) {
/* gl_FragCoord should not have array/struct deref's: */
assert(dvar->deref.child == NULL);
lower_fragcoord(state, intr);