nir/subgroups: Support > 1 ballot components
authorConnor Abbott <cwabbott0@gmail.com>
Thu, 10 Sep 2020 16:48:04 +0000 (18:48 +0200)
committerMarge Bot <eric+marge@anholt.net>
Thu, 8 Jul 2021 16:02:41 +0000 (16:02 +0000)
commite4e79de2a420128190b28b39b87f6de39b1b7060
treea993f68a7a85f11d9dad7c04a85b7c2c32b3511f
parent90819b9b0ea0ea8ffe4bd34100ee12dce8f63ebf
nir/subgroups: Support > 1 ballot components

Qualcomm has a mode with a subgroup size of 128, so just emitting larger
integer operations and then lowering them later isn't an option. This
makes the pass able to handle the lowering itself, so that we don't have
to go down to 64-thread wavefronts when ballots are used.

(The GLSL and legacy SPIR-V extensions only support a maximum of 64
threads, but I guess we'll cross that bridge when we come to it...)

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6752>
src/amd/vulkan/radv_shader.c
src/compiler/nir/nir.h
src/compiler/nir/nir_builder.h
src/compiler/nir/nir_lower_subgroups.c
src/gallium/auxiliary/gallivm/lp_bld_nir.c
src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp
src/gallium/drivers/radeonsi/si_shader_nir.c
src/intel/compiler/brw_nir.c