mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-06-17 04:28:28 +02:00
The Early-Z optimization is disabled when there is a discard
instruction in the shader used in the draw call.
But if discard is the only reason to disable Early-Z, and at
draw call time the updates in the draw call are disabled we
can enable Early-Z using a shader variant.
If there are occlussion queries active we also need to disable
Early-z optimization.
So this patch enables Early-Z in this scenario.
The performance improvement is significant when running gfxbench
benchmark showing an average improvement of 11.15%
fps_avg helped: gl_gfxbench_aztec_high.trace: 3.13 -> 3.73 (19.13%)
fps_avg helped: gl_gfxbench_aztec.trace: 4.82 -> 5.68 (17.88%)
fps_avg helped: gl_gfxbench_manhattan31.trace: 5.10 -> 6.00 (17.59%)
fps_avg helped: gl_gfxbench_manhattan.trace: 7.24 -> 8.36 (15.52%)
fps_avg helped: gl_gfxbench_trex.trace: 19.25 -> 20.17 ( 4.81%)
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Cc: mesa-stable
(cherry picked from commit
|
||
|---|---|---|
| .. | ||
| meson.build | ||
| nir_to_vir.c | ||
| qpu_schedule.c | ||
| qpu_validate.c | ||
| v3d_compiler.h | ||
| v3d_nir_lower_algebraic.py | ||
| v3d_nir_lower_image_load_store.c | ||
| v3d_nir_lower_io.c | ||
| v3d_nir_lower_line_smooth.c | ||
| v3d_nir_lower_load_store_bitsize.c | ||
| v3d_nir_lower_logic_ops.c | ||
| v3d_nir_lower_scratch.c | ||
| v3d_nir_lower_txf_ms.c | ||
| v3d_packing.c | ||
| v3d_tex.c | ||
| vir.c | ||
| vir_dump.c | ||
| vir_live_variables.c | ||
| vir_opt_constant_alu.c | ||
| vir_opt_copy_propagate.c | ||
| vir_opt_dead_code.c | ||
| vir_opt_redundant_flags.c | ||
| vir_opt_small_immediates.c | ||
| vir_register_allocate.c | ||
| vir_to_qpu.c | ||