From: Eric Anholt Date: Thu, 28 Sep 2017 17:39:07 +0000 (-0700) Subject: braodcom/vc5: Fix incorrect early Z writes in discard shaders. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e20c82c55087344fb7caec4cc9df0a13489a2f2d;p=mesa.git braodcom/vc5: Fix incorrect early Z writes in discard shaders. Fixes glsl-fs-discard-02. --- 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;