From 28fc6733cd2d3af2ce12bfda5953ed0f582663c0 Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Mon, 18 Feb 2019 10:34:06 -0500 Subject: [PATCH] freedreno/a6xx: fix helper_invocation (sampler mask/id) Since gl_HelperInvocation is lowered to: !((1 << sample_id) & sample_mask_in)) Not setting these enable bits was causing it be broken. (And probably a bunch of other stuff too.) Fixes dEQP-GLES31.functional.shaders.helper_invocation.* Signed-off-by: Rob Clark --- src/gallium/drivers/freedreno/a6xx/fd6_program.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_program.c b/src/gallium/drivers/freedreno/a6xx/fd6_program.c index 5527b8cfd76..3e7aed63897 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_program.c +++ b/src/gallium/drivers/freedreno/a6xx/fd6_program.c @@ -555,7 +555,12 @@ setup_stateobj(struct fd_ringbuffer *ring, A6XX_RB_RENDER_CONTROL0_WCOORD) | COND(s[FS].v->frag_face, A6XX_RB_RENDER_CONTROL0_UNK3)); - OUT_RING(ring, COND(s[FS].v->frag_face, A6XX_RB_RENDER_CONTROL1_FACENESS)); + OUT_RING(ring, + COND(samp_mask_regid != regid(63, 0), + A6XX_RB_RENDER_CONTROL1_SAMPLEMASK) | + COND(samp_id_regid != regid(63, 0), + A6XX_RB_RENDER_CONTROL1_SAMPLEID) | + COND(s[FS].v->frag_face, A6XX_RB_RENDER_CONTROL1_FACENESS)); OUT_PKT4(ring, REG_A6XX_SP_FS_OUTPUT_REG(0), 8); for (i = 0; i < 8; i++) { -- 2.30.2