From e20c82c55087344fb7caec4cc9df0a13489a2f2d Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 28 Sep 2017 10:39:07 -0700 Subject: [PATCH] braodcom/vc5: Fix incorrect early Z writes in discard shaders. Fixes glsl-fs-discard-02. --- src/gallium/drivers/vc5/vc5_draw.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/vc5/vc5_draw.c b/src/gallium/drivers/vc5/vc5_draw.c index f764f41ce15..555e822a719 100644 --- a/src/gallium/drivers/vc5/vc5_draw.c +++ b/src/gallium/drivers/vc5/vc5_draw.c @@ -187,8 +187,13 @@ vc5_emit_gl_shader_state(struct vc5_context *vc5, (info->mode == PIPE_PRIM_POINTS && vc5->rasterizer->base.point_size_per_vertex); + /* Must be set if the shader modifies Z, discards, or modifies + * the sample mask. For any of these cases, the fragment + * shader needs to write the Z value (even just discards). + */ shader.fragment_shader_does_z_writes = - vc5->prog.fs->prog_data.fs->writes_z; + (vc5->prog.fs->prog_data.fs->writes_z || + vc5->prog.fs->prog_data.fs->discard); shader.number_of_varyings_in_fragment_shader = vc5->prog.fs->prog_data.base->num_inputs; -- 2.11.0