mesa/src/broadcom/compiler
Jose Maria Casanova Crespo dc8e19aede v3d: Enable Early-Z with discards when depth updates are disabled
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 5b951bcdd7)

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32119>
2024-11-12 09:12:20 -08:00
..
meson.build format: Generate endian-independent format aliases 2024-07-19 13:50:42 +00:00
nir_to_vir.c v3d: Enable Early-Z with discards when depth updates are disabled 2024-11-12 09:12:20 -08:00
qpu_schedule.c broadcom: fix pairing tmu lookup with previous ldtmu 2024-10-10 06:58:15 +00:00
qpu_validate.c broadcom/compiler: validate rtop + thrsw hazard 2024-06-27 06:43:09 +00:00
v3d_compiler.h v3d: Enable Early-Z with discards when depth updates are disabled 2024-11-12 09:12:20 -08:00
v3d_nir_lower_algebraic.py broadcom/compiler: generate mali opcodes for clamping on Pi5 2024-10-03 09:02:08 +00:00
v3d_nir_lower_image_load_store.c broadcom: follow version naming convention 2024-07-08 11:19:31 +00:00
v3d_nir_lower_io.c broadcom/compiler: implement load_kernel_input 2024-06-26 10:04:03 +00:00
v3d_nir_lower_line_smooth.c treewide: use nir_metadata_control_flow 2024-06-17 16:28:14 -04:00
v3d_nir_lower_load_store_bitsize.c broadcom/compiler: handle up to vec16 load_uniforms 2024-06-26 10:04:03 +00:00
v3d_nir_lower_logic_ops.c treewide: use nir_metadata_control_flow 2024-06-17 16:28:14 -04:00
v3d_nir_lower_scratch.c treewide: use nir_metadata_control_flow 2024-06-17 16:28:14 -04:00
v3d_nir_lower_txf_ms.c nir: Take a nir_def * in nir_tex_instr_add_src() 2023-08-18 01:00:14 +00:00
v3d_packing.c broadcom/compiler: add v3d_pack_unnormalized_coordinates helper 2023-10-31 13:00:34 +01:00
v3d_tex.c broadcom/compiler: simplify v3d_vir_emit_tex 2024-05-09 09:29:44 +02:00
vir.c nir: change signature of nir_src_is_divergent() 2024-10-24 10:06:17 +00:00
vir_dump.c broadcom: only support v42 and v71 2023-11-02 11:59:08 +01:00
vir_live_variables.c broadcom/compiler: update payload registers handling when computing live intervals 2023-10-13 22:37:42 +00:00
vir_opt_constant_alu.c v3dv/v3d: Fix copyright holder to Raspberry Pi Ltd 2022-02-18 11:50:07 +01:00
vir_opt_copy_propagate.c broadcom/compiler: disallow copy propagation of FMOV exclusive modifiers 2024-07-10 08:29:50 +02:00
vir_opt_dead_code.c broadcom/compiler: drop multop if we dce umul24 2024-06-27 06:43:09 +00:00
vir_opt_redundant_flags.c broadcom/qpu: define v3d_qpu_input, use on v3d_qpu_alu_instr 2023-10-13 22:37:41 +00:00
vir_opt_small_immediates.c broadcom/compiler: don't use small immediates in geometry stages 2024-09-25 14:21:46 +00:00
vir_register_allocate.c broadcom/compiler: avoid register conflict with ldunif(a) and ldvary 2024-09-25 14:21:46 +00:00
vir_to_qpu.c broadcom: only support v42 and v71 2023-11-02 11:59:08 +01:00