Patches 2 and 3 are Reviewed-by: Connor Abbott <[email protected]>
On Sat, Feb 14, 2015 at 3:51 PM, Jason Ekstrand <[email protected]> wrote: > GLSL IR labels gl_FrontFacing as an input variable and not a system value. > This commit makes NIR silently translate gl_FrontFacing to a system value > so that it properly gets translated into a load_system_value intrinsic. > --- > src/glsl/nir/glsl_to_nir.cpp | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/src/glsl/nir/glsl_to_nir.cpp b/src/glsl/nir/glsl_to_nir.cpp > index 46cfac3..efc15a6 100644 > --- a/src/glsl/nir/glsl_to_nir.cpp > +++ b/src/glsl/nir/glsl_to_nir.cpp > @@ -242,6 +242,7 @@ nir_visitor::visit(ir_variable *ir) > var->data.centroid = ir->data.centroid; > var->data.sample = ir->data.sample; > var->data.invariant = ir->data.invariant; > + var->data.location = ir->data.location; > > switch(ir->data.mode) { > case ir_var_auto: > @@ -260,7 +261,13 @@ nir_visitor::visit(ir_variable *ir) > break; > > case ir_var_shader_in: > - var->data.mode = nir_var_shader_in; > + if (ir->data.location == VARYING_SLOT_FACE) { > + /* For whatever reason, GLSL IR makes gl_FrontFacing an input */ > + var->data.location = SYSTEM_VALUE_FRONT_FACE; > + var->data.mode = nir_var_system_value; > + } else { > + var->data.mode = nir_var_shader_in; > + } > break; > > case ir_var_shader_out: > @@ -312,7 +319,6 @@ nir_visitor::visit(ir_variable *ir) > unreachable("not reached"); > } > > - var->data.location = ir->data.location; > var->data.index = ir->data.index; > var->data.binding = ir->data.binding; > /* XXX Get rid of buffer_index */ > -- > 2.2.2 > > _______________________________________________ > mesa-dev mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
