nir: add vec2_index_32bit_offset address format

For turnip, we use the "bindless" model on a6xx. Loads and stores with
the bindless model require a bindless base, which is an immediate field
in the instruction that selects between 5 different 64-bit "bindless
base registers", a 32-bit descriptor index that's added to the base, and
the usual 32-bit offset. The bindless base usually, but not always,
corresponds to the Vulkan descriptor set.  We can handle the case where
the base is non-constant by using a bunch of if-statements, to make it a
little easier in core NIR, and this seems to be what Qualcomm's driver
does too. Therefore, the pointer format we need to use in NIR has a vec2
index, for the bindless base and descriptor index. Plumb this format
through core NIR.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Part-of: <mesa/mesa!5683>
70 jobs for !5683 with review/nir-tu-address-format in 46 minutes and 53 seconds (queued for 15 seconds)
detached
Status Job ID Name Coverage
  Container+Docs
passed arm_build #3466937
aarch64

00:00:24

passed arm_test-base #3466939

00:00:18

passed x86_build-base #3466933

00:00:21

passed x86_build_old #3466935

00:00:21

passed x86_test-base #3466934

00:00:21

 
  Container 2
passed arm64_test #3466950

00:00:23

passed i386_build #3466942

00:00:23

passed ppc64el_build #3466943

00:00:23

passed s390x_build #3466945

00:00:24

passed x86_build #3466940

00:00:23

passed x86_test-gl #3466947

00:00:26

passed x86_test-vk #3466948

00:00:20

 
  Meson X86 64
passed meson-clang #3466956

00:10:02

passed meson-classic #3466955

00:04:19

passed meson-clover #3466958

00:06:28

passed meson-clover-old-llvm #3466960

00:10:06

passed meson-gallium #3466953

00:12:43

passed meson-testing #3466952

00:07:24

passed meson-vulkan #3466961

00:03:42

 
  Scons
passed scons-win64 #3466963

00:09:27

 
  Meson Misc
passed meson-arm64 #3466967
aarch64

00:01:14

passed meson-arm64-build-test #3466969
aarch64

00:01:54

passed meson-armhf #3466965
aarch64

00:05:15

passed meson-i386 #3466971

00:06:50

passed meson-mingw32-x86_64 #3466977

00:01:39

passed meson-ppc64el #3466975
kvm

00:04:24

passed meson-s390x #3466973
kvm

00:04:04

 
  Llvmpipe
passed llvmpipe-gles2 #3466985

00:02:57

passed llvmpipe-traces #3466987

00:00:55

passed piglit-glslparser #3466981

00:07:02

passed piglit-quick_gl #3466979

00:10:07

passed piglit-quick_shader #3466983

00:09:30

 
  Softpipe
passed softpipe-gles2 #3466989

00:02:01

passed softpipe-gles31 1/4 #3466995

00:03:28

passed softpipe-gles3 1/2 #3466991

00:05:24

passed softpipe-gles31 2/4 #3466997

00:03:16

passed softpipe-gles31 3/4 #3466998

00:05:37

passed softpipe-gles31 4/4 #3466999

00:02:41

passed softpipe-gles3 2/2 #3466993

00:05:44

 
  Freedreno
passed arm64_a306_gles2 #3467009
google-freedreno-db410c

00:06:25

passed arm64_a306_gles3 #3467010
google-freedreno-db410c

00:05:32

passed arm64_a306_gles3_options #3467011
google-freedreno-db410c

00:04:06

passed arm64_a530_gles2 #3467012
google-freedreno-db820c

00:10:57

passed arm64_a530_gles3 #3467013
google-freedreno-db820c

00:09:04

passed arm64_a530_gles31 #3467014
google-freedreno-db820c

00:04:34

passed arm64_a630_bypass #3467004
google-freedreno-cheza

00:05:19

passed arm64_a630_gles2 #3467000
google-freedreno-cheza

00:07:42

passed arm64_a630_gles3 #3467002
google-freedreno-cheza

00:18:15

passed arm64_a630_gles31 #3467001
google-freedreno-cheza

00:12:55

passed arm64_a630_gmem #3467006
google-freedreno-cheza

00:05:01

passed arm64_a630_noubo #3467003
google-freedreno-cheza

00:03:36

passed arm64_a630_traces #3467005
google-freedreno-cheza

00:04:53

passed arm64_a630_vk #3467007
google-freedreno-cheza

00:06:49

passed arm64_a630_vk_sysmem #3467008
google-freedreno-cheza

00:05:18

 
  Panfrost
passed panfrost-t720-gles2:arm64 #3467015
mesa-ci-aarch64-lava-collabora

00:15:07

passed panfrost-t760-gles2:armhf #3467016
mesa-ci-aarch64-lava-collabora

00:06:17

passed panfrost-t860-gles2:arm64 #3467017
mesa-ci-aarch64-lava-collabora

00:05:25

passed panfrost-t860-gles3:arm64 #3467018
mesa-ci-aarch64-lava-collabora

00:05:30

 
  Radv
passed radv-fossils #3467019

00:08:24

 
  Virgl
passed virgl-gl30-on-gl #3467027

00:00:35

passed virgl-gl31-on-gl #3467028

00:00:57

passed virgl-gl32-on-gl #3467029

00:01:53

passed virgl-gles2-on-gl #3467020

00:01:39

passed virgl-gles31-on-gl 1/4 #3467023

00:02:42

passed virgl-gles31-on-gl 2/4 #3467024

00:04:09

passed virgl-gles31-on-gl 3/4 #3467025

00:04:34

passed virgl-gles31-on-gl 4/4 #3467026

00:03:52

passed virgl-gles3-on-gl 1/2 #3467021

00:04:06

passed virgl-gles3-on-gl 2/2 #3467022

00:04:22

passed virgl-traces #3467030

00:00:20