i915g: frontfacing failure
dEQP-GLES2.functional.shaders.builtin_variable.frontfacing
regressed from i915c.
NIR before translation to TGSI:
shader: MESA_SHADER_FRAGMENT
name: GLSL1
inputs: 1
outputs: 1
uniforms: 0
shared: 0
decl_var shader_in INTERP_MODE_FLAT bool gl_FrontFacing (VARYING_SLOT_FACE.x, 0, 0)
decl_var shader_out INTERP_MODE_NONE mediump vec4 gl_FragColor (FRAG_RESULT_COLOR.xyzw, 0, 0)
decl_function main (0 params)
impl main {
block block_0:
/* preds: */
vec4 32 ssa_0 = load_const (0x00000000 /* 0.000000 */, 0x3f800000 /* 1.000000 */, 0x00000000 /* 0.000000 */, 0x3f800000 /* 1.000000 */)
vec4 32 ssa_1 = load_const (0x00000000 /* 0.000000 */, 0x00000000 /* 0.000000 */, 0x3f800000 /* 1.000000 */, 0x3f800000 /* 1.000000 */)
vec1 32 ssa_2 = load_const (0x00000000 /* 0.000000 */)
vec1 32 ssa_3 = intrinsic load_input (ssa_2) (0, 0, 38, 152) /* base=0 */ /* component=0 */ /* dest_type=bool32 */ /* location=24 slots=1 */ /* gl_FrontFacing */
vec1 32 ssa_4 = mov ssa_3
vec4 32 ssa_5 = fcsel ssa_4.xxxx, ssa_0, ssa_1
intrinsic store_output (ssa_5, ssa_2) (0, 15, 0, 160, 8388738) /* base=0 */ /* wrmask=xyzw */ /* component=0 */ /* src_type=float32 */ /* location=2 slots=1 mediump */ /* gl_FragColor */
/* succs: block_1 */
block block_1:
}
TGSI after translation from NIR:
FRAG
PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1
DCL IN[0].x, FACE, CONSTANT
DCL OUT[0], COLOR
DCL TEMP[0..2]
IMM[0] FLT32 { 0.0000, 0.0000, 0.0000, 0.0000}
IMM[1] UINT32 {0, 1065353216, 0, 0}
0: SGE TEMP[0], IN[0], IMM[0].xxxx
1: MOV TEMP[1].x, TEMP[0].xxxx
2: MOV TEMP[2].x, TEMP[1].xxxx
3: CMP OUT[0], -|TEMP[2].xxxx|, IMM[1].xyxy, IMM[1].xxyy
4: END
Fail (Image comparison failed)
DONE!
[...]
MESA: info: 3DSTATE_PIXEL_SHADER_PROGRAM (19 dwords):
MESA: info: BEGIN
MESA: info: DCL T_TEX0
MESA: info: R[0] = SGE T_TEX0, CONST[0].xxxx
MESA: info: R[1].x = MOV R[0].xxxx
MESA: info: R[2].x = MOV R[1].xxxx
MESA: info: U[0] = MAX R[2].xxxx, R[2].-x-x-x-x
MESA: info: oC = CMP U[0].-x-y-z-w, CONST[1].xxyy, CONST[1].xyxy
MESA: info: END
- why wasn't ssa_4 optimized out?
- what kind of output do we get for FACE from the draw backend?