From ad1e59cf8d05f07db9f8d4183b3179cef230edfa Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Fri, 28 Dec 2018 11:30:52 -0800 Subject: v3d: Add support for gl_HelperInvocation. We can just look at the MSF flags -- if they're unset, then we're definitely in a helper invocation. Fixes dEQP-GLES31.functional.shaders.helper_invocation.* with GLES3.1 enabled. --- src/broadcom/compiler/nir_to_vir.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/broadcom/compiler/nir_to_vir.c') diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c index e01668c62c0..73fed4e816b 100644 --- a/src/broadcom/compiler/nir_to_vir.c +++ b/src/broadcom/compiler/nir_to_vir.c @@ -1596,6 +1596,14 @@ ntq_emit_intrinsic(struct v3d_compile *c, nir_intrinsic_instr *instr) ntq_store_dest(c, &instr->dest, 0, vir_MSF(c)); break; + case nir_intrinsic_load_helper_invocation: + vir_PF(c, vir_MSF(c), V3D_QPU_PF_PUSHZ); + ntq_store_dest(c, &instr->dest, 0, + vir_MOV(c, vir_SEL(c, V3D_QPU_COND_IFA, + vir_uniform_ui(c, ~0), + vir_uniform_ui(c, 0)))); + break; + case nir_intrinsic_load_front_face: /* The register contains 0 (front) or 1 (back), and we need to * turn it into a NIR bool where true means front. -- cgit v1.2.3