|
|
@@ -1546,14 +1546,11 @@ emit_intrinsic(struct ir3_compile *ctx, nir_intrinsic_instr *intr) |
|
|
|
ctx->frag_face = create_input(b, 0); |
|
|
|
ctx->frag_face->regs[0]->flags |= IR3_REG_HALF; |
|
|
|
} |
|
|
|
/* for fragface, we always get -1 or 0, but that is inverse |
|
|
|
* of what nir expects (where ~0 is true). Unfortunately |
|
|
|
* trying to widen from half to full in add.s seems to do a |
|
|
|
* non-sign-extending widen (resulting in something that |
|
|
|
* gets interpreted as float Inf??) |
|
|
|
/* for fragface, we get -1 for back and 0 for front. However this is |
|
|
|
* the inverse of what nir expects (where ~0 is true). |
|
|
|
*/ |
|
|
|
dst[0] = ir3_COV(b, ctx->frag_face, TYPE_S16, TYPE_S32); |
|
|
|
dst[0] = ir3_ADD_S(b, dst[0], 0, create_immed(b, 1), 0); |
|
|
|
dst[0] = ir3_NOT_B(b, dst[0], 0); |
|
|
|
break; |
|
|
|
case nir_intrinsic_load_local_invocation_id: |
|
|
|
if (!ctx->local_invocation_id) { |