summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/freedreno
diff options
context:
space:
mode:
authorRob Clark <[email protected]>2019-02-18 10:34:06 -0500
committerRob Clark <[email protected]>2019-02-18 10:37:54 -0500
commit28fc6733cd2d3af2ce12bfda5953ed0f582663c0 (patch)
tree784f4c181c5f67fb9501cc2ed8e86d2d3441dc0d /src/gallium/drivers/freedreno
parent32ab7a59bb7d8e3f1edc67eaedb2586fcac8c6b4 (diff)
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 <[email protected]>
Diffstat (limited to 'src/gallium/drivers/freedreno')
-rw-r--r--src/gallium/drivers/freedreno/a6xx/fd6_program.c7
1 files changed, 6 insertions, 1 deletions
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++) {