Only invert front facing when glFrontFace is GL_CW.
Fixes following deqp test:
dEQP-GLES2.functional.shaders.builtin_variable.frontfacing
Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
switch (intr->intrinsic) {
case nir_intrinsic_load_front_face: {
+ if (!v->key.front_ccw)
+ break;
+
/* front face inverted (run after int_to_float, so invert as float) */
b.cursor = nir_after_instr(instr);
}
ctx->dirty |= ETNA_DIRTY_INDEX_BUFFER;
- struct etna_shader_key key = {};
+ struct etna_shader_key key = {
+ .front_ccw = ctx->rasterizer->front_ccw,
+ };
+
if (pfb->cbufs[0])
key.frag_rb_swap = !!translate_rs_format_rb_swap(pfb->cbufs[0]->format);
/* do we need to swap rb in frag color? */
unsigned frag_rb_swap : 1;
+ /* do we need to invert front facing value? */
+ unsigned front_ccw : 1;
};
uint32_t global;
};