summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/vc4/vc4_program.c
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2016-07-19 11:10:36 -0700
committerEric Anholt <eric@anholt.net>2016-07-26 13:47:50 -0700
commitce8504d196291452b42ed755ed3830ecb16febcd (patch)
treec9e4b018baa6c1ab1df2b82e71f54db4ba5c1790 /src/gallium/drivers/vc4/vc4_program.c
parent4d0b2c7aaac3cf3de5af8474c83501122841d157 (diff)
downloadexternal_mesa3d-ce8504d196291452b42ed755ed3830ecb16febcd.zip
external_mesa3d-ce8504d196291452b42ed755ed3830ecb16febcd.tar.gz
external_mesa3d-ce8504d196291452b42ed755ed3830ecb16febcd.tar.bz2
vc4: Disable early Z with computed depth.
We don't tell the hardware whether we're computing depth, so we need to manage early Z state manually. Fixes piglit early-z.
Diffstat (limited to 'src/gallium/drivers/vc4/vc4_program.c')
-rw-r--r--src/gallium/drivers/vc4/vc4_program.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/gallium/drivers/vc4/vc4_program.c b/src/gallium/drivers/vc4/vc4_program.c
index 4ee49a2..9057b86 100644
--- a/src/gallium/drivers/vc4/vc4_program.c
+++ b/src/gallium/drivers/vc4/vc4_program.c
@@ -2253,6 +2253,11 @@ vc4_get_compiled_shader(struct vc4_context *vc4, enum qstage stage,
shader->input_slots[shader->num_inputs] = *slot;
shader->num_inputs++;
}
+
+ /* Note: the temporary clone in c->s has been freed. */
+ nir_shader *orig_shader = key->shader_state->base.ir.nir;
+ if (orig_shader->info.outputs_written & (1 << FRAG_RESULT_DEPTH))
+ shader->disable_early_z = true;
} else {
shader->num_inputs = c->num_inputs;