mesa/src/broadcom/compiler
Eric Anholt 8afab607ac nir: Add a scheduler pass to reduce maximum register pressure.
This is similar to a scheduler I've written for vc4 and i965, but this
time written at the NIR level so that hopefully it's reusable.  A notable
new feature it has is Goodman/Hsu's heuristic of "once we've started
processing the uses of a value, prioritize processing the rest of their
uses", which should help avoid the heuristic otherwise making such
systematically bad choices around getting texture results consumed.

Results for v3d:

total instructions in shared programs: 6497588 -> 6518242 (0.32%)
total threads in shared programs: 154000 -> 152828 (-0.76%)
total uniforms in shared programs: 2119629 -> 2068681 (-2.40%)
total spills in shared programs: 4984 -> 472 (-90.53%)
total fills in shared programs: 6418 -> 1546 (-75.91%)

Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> (v1)
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com> (v2)

v2: Use the DAG datastructure, fold in the scheduling-for-parallelism
    patch, include SSA defs in live values so we can switch to bottom-up
    if we want.
v3: Squash in improvements from Alejandro Piñeiro for getting V3D to
    successfully register allocate on GLES3.1 dEQP.  Make sure that
    discards don't move after store_output.  Comment spelling fix.
2019-11-25 21:12:21 +00:00
..
meson.build v3d: add lowering for OpenGL logic operations 2019-07-12 09:16:38 +02:00
nir_to_vir.c v3d: adds an extra MOV for any sig.ld* 2019-11-20 11:21:16 +01:00
qpu_schedule.c util: rename list_empty() to list_is_empty() 2019-10-28 11:24:38 +00:00
qpu_validate.c v3d: writes to magic registers aren't RF writes after THREND 2019-09-05 22:54:13 +01:00
v3d33_tex.c v3d: prefer using nir_src_comp_as_int over nir_src_as_const_value 2019-04-07 15:13:36 +02:00
v3d33_vpm_setup.c broadcom/vc5: Move V3D 3.3 VPM write setup to a separate file. 2018-01-12 21:56:24 -08:00
v3d40_tex.c v3d: Fix predication with atomic image operations 2019-11-20 11:20:55 +01:00
v3d_compiler.h v3d: rename vertex shader key (num)_fs_inputs fields 2019-10-31 08:46:35 +00:00
v3d_nir_lower_image_load_store.c v3d: Fix image_load_store clamping of signed integer stores. 2019-01-31 08:39:40 -08:00
v3d_nir_lower_io.c v3d: rename vertex shader key (num)_fs_inputs fields 2019-10-31 08:46:35 +00:00
v3d_nir_lower_logic_ops.c util: Move gallium's PIPE_FORMAT utils to /util/format/ 2019-11-14 10:47:20 -08:00
v3d_nir_lower_scratch.c v3d: Use the new lower_to_scratch implementation for indirects on temps. 2019-04-12 16:16:58 -07:00
v3d_nir_lower_txf_ms.c v3d: Use nir_shader_lower_instructions() for txf_ms lowering. 2019-07-18 11:28:56 -07:00
vir.c nir: Add a scheduler pass to reduce maximum register pressure. 2019-11-25 21:12:21 +00:00
vir_dump.c v3d: Add missing dumping for the spill offset/size uniforms. 2019-04-12 15:59:31 -07:00
vir_live_variables.c v3d: Stop treating exec masking specially. 2019-03-05 07:36:24 -08:00
vir_opt_copy_propagate.c v3d: Use ldunif instructions for uniforms. 2019-03-05 12:57:39 -08:00
vir_opt_dead_code.c v3d: Drop the V3D 3.x vpm read dead code elimination. 2019-03-05 12:57:39 -08:00
vir_opt_redundant_flags.c v3d: fix checking twice auf flag 2019-06-13 11:45:18 +02:00
vir_opt_small_immediates.c v3d: Use ldunif instructions for uniforms. 2019-03-05 12:57:39 -08:00
vir_register_allocate.c v3d: add new flag dirty TMU cache at v3d_compiler 2019-10-18 14:08:52 +02:00
vir_to_qpu.c tree-wide: replace MAYBE_UNUSED with ASSERTED 2019-07-31 09:41:05 +01:00