X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fcompiler%2Fnir%2Fnir_lower_wpos_ytransform.c;h=62166e787461eb9ab79088ef7d9725eae145ac06;hb=6b1e26e181fbe7fd64b42a0b77f80535be4d7690;hp=873d259d7fc201e52fe150f0c4f7b38a19a87320;hpb=d6e2bdfed3e22df26e9ad8874936241ba00575f6;p=mesa.git diff --git a/src/compiler/nir/nir_lower_wpos_ytransform.c b/src/compiler/nir/nir_lower_wpos_ytransform.c index 873d259d7fc..62166e78746 100644 --- a/src/compiler/nir/nir_lower_wpos_ytransform.c +++ b/src/compiler/nir/nir_lower_wpos_ytransform.c @@ -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); @@ -312,6 +314,10 @@ lower_wpos_ytransform_block(lower_wpos_ytransform_state *state, nir_block *block assert(dvar->deref.child == NULL); lower_load_sample_pos(state, intr); } + } else if (intr->intrinsic == nir_intrinsic_load_frag_coord) { + lower_fragcoord(state, intr); + } else if (intr->intrinsic == nir_intrinsic_load_sample_pos) { + lower_load_sample_pos(state, intr); } else if (intr->intrinsic == nir_intrinsic_interp_var_at_offset) { lower_interp_var_at_offset(state, intr); } @@ -346,7 +352,7 @@ nir_lower_wpos_ytransform(nir_shader *shader, .shader = shader, }; - assert(shader->stage == MESA_SHADER_FRAGMENT); + assert(shader->info.stage == MESA_SHADER_FRAGMENT); nir_foreach_function(function, shader) { if (function->impl)