nir: add many passes that lower and optimize 16-bit input/outputs and samplers
Added: * a pass that renumbers bases of IO intrinsics * a pass that converts mediump IO to 16 bits, optionally using the new packed varying slots * a pass that sets (forces) mediump in IO intrinsics (for testing) * a pass that remaps VARYING_SLOT_VAR[0..15]_16BIT to VARYING_SLOT_VAR[0..31] (if some shader stages don't want packed varyings) * a pass that folds type conversions around texture opcodes into those opcodes (e.g. tex(f2f32(coord), ..) is changed into tex accepting f16) * a pass that changes (legalizes) sampler src and dst types based on specified hw constraints (e.g. derivatives must be the same type as coordinates) Reviewed-by:Matt Turner <mattst88@gmail.com> Part-of: <mesa/mesa!9050>
- src/compiler/Makefile.sources 1 addition, 1 deletionsrc/compiler/Makefile.sources
- src/compiler/nir/meson.build 1 addition, 1 deletionsrc/compiler/nir/meson.build
- src/compiler/nir/nir.h 17 additions, 1 deletionsrc/compiler/nir/nir.h
- src/compiler/nir/nir_lower_mediump.c 611 additions, 0 deletionssrc/compiler/nir/nir_lower_mediump.c
- src/compiler/nir/nir_lower_mediump_outputs.c 0 additions, 79 deletionssrc/compiler/nir/nir_lower_mediump_outputs.c
- src/freedreno/ir3/ir3_nir.c 1 addition, 1 deletionsrc/freedreno/ir3/ir3_nir.c
- src/gallium/drivers/radeonsi/si_shader_nir.c 1 addition, 1 deletionsrc/gallium/drivers/radeonsi/si_shader_nir.c
- src/util/bitset.h 19 additions, 0 deletionssrc/util/bitset.h