mesa/src/broadcom/compiler
Alejandro Piñeiro ec10a37a52 broadcom/compiler: don't call nir_opt_load_store_vectorize on all v3d_optimize_nir calls
For compute shaders, to avoid a crash with that optimization, it requires
doing some optimizations and lowerings before. Example:

  static void
  lower_cs_shared(struct nir_shader *nir)
  {
     NIR_PASS_V(nir, nir_lower_vars_to_explicit_types,
                nir_var_mem_shared, shared_type_info);
     NIR_PASS_V(nir, nir_lower_explicit_io,
                nir_var_mem_shared, nir_address_format_32bit_offset);
  }

In the same way other drivers (like anv) calls
nir_opt_load_store_vectorize as part of their post-process-nir.

So one option would be to move nir_opt_load_store_vectorize outsize
the common v3d_nir_optimize, to a post-process nir method.

To make things simpler, this change calls that optimization only if we
have a v3d_compiler object, that is when each frontend has already
done their lowerings, and call the v3d_compiler to get the final
assembly (so we are already on a kind of post processing nir step).

This avoids dEQP-VK.memory_model.shared.basic_types.3 crashing if we
start to call v3d_optimize_nir on v3dv directly.

Slight shaderdb changes, but not significant.

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17185>
2022-10-26 12:29:30 +00:00
..
meson.build broadcom/compiler: rename v3d_nir_lower_robust_buffer_access.c 2022-09-27 09:08:29 +00:00
nir_to_vir.c broadcom/compiler: don't call nir_opt_load_store_vectorize on all v3d_optimize_nir calls 2022-10-26 12:29:30 +00:00
qpu_schedule.c broadcom/compiler: check signal writes to magic regs when updating scoreboard 2022-09-20 06:56:28 +00:00
qpu_validate.c broadcom/compiler: don't check for GFXH-1633 on V3D 4.2.x 2021-02-12 08:24:21 +00:00
v3d33_tex.c broadcom/compiler: support pipelining of tex instructions 2021-02-04 10:33:10 +00: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 broadcom/compiler: Add a v3d_compile argument to vir_set_[pu]f 2021-02-12 07:05:33 +00:00
v3d_compiler.h v3dv: expose VK_EXT_image_robustness 2022-09-27 09:08:29 +00:00
v3d_nir_lower_image_load_store.c broadcom/compiler: make several passes to return a progress 2022-07-20 11:35:25 +00:00
v3d_nir_lower_io.c broadcom/compiler: make several passes to return a progress 2022-07-20 11:35:25 +00:00
v3d_nir_lower_line_smooth.c broadcom/compiler: make several passes to return a progress 2022-07-20 11:35:25 +00:00
v3d_nir_lower_load_store_bitsize.c broadcom/compiler: make several passes to return a progress 2022-07-20 11:35:25 +00:00
v3d_nir_lower_logic_ops.c broadcom/compiler: make several passes to return a progress 2022-07-20 11:35:25 +00:00
v3d_nir_lower_robust_access.c broadcom/compiler: add a lowering for robust image access 2022-09-27 09:08:29 +00:00
v3d_nir_lower_scratch.c broadcom/compiler: make several passes to return a progress 2022-07-20 11:35:25 +00:00
v3d_nir_lower_txf_ms.c broadcom/compiler: make several passes to return a progress 2022-07-20 11:35:25 +00:00
vir.c v3dv: expose VK_EXT_image_robustness 2022-09-27 09:08:29 +00:00
vir_dump.c broadcom/compiler: use signed pointers for packed condition 2021-04-12 15:22:05 +00:00
vir_live_variables.c broadcom/compiler: Fix qpu.flags.muf typo. 2021-08-24 08:30:59 +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: make opt passes set current block 2021-11-02 11:17:01 +00:00
vir_opt_dead_code.c broadcom/compiler: make opt passes set current block 2021-11-02 11:17:01 +00:00
vir_opt_redundant_flags.c broadcom/compiler: make opt passes set current block 2021-11-02 11:17:01 +00:00
vir_opt_small_immediates.c v3d: Use ldunif instructions for uniforms. 2019-03-05 12:57:39 -08:00
vir_register_allocate.c broadcom/compiler: don't predicate postponed spills 2022-06-28 05:49:51 +00:00
vir_to_qpu.c v3d: introduce V3D_DBG() macro to make V3D_DEBUG checks consistent 2022-08-24 23:03:57 +00:00