nir: Add an LOD parameter to image_*_size
authorJason Ekstrand <jason@jlekstrand.net>
Wed, 19 Aug 2020 23:21:33 +0000 (18:21 -0500)
committerMarge Bot <eric+marge@anholt.net>
Thu, 20 Aug 2020 20:48:10 +0000 (20:48 +0000)
commit1ccd681109e80516430a3be489dca1be15316d50
treeab2c524324942531e082d2f9fae6a21f530ab00d
parenta104902590512f30c55e6a2e4f7b75627c056e27
nir: Add an LOD parameter to image_*_size

The OpenCL image_width/height/depth functions have variants which can
take an LOD parameter.  More importantly, LLVM-SPIRV-Translator always
generates OpImageQuerySizeLod even if the LOD is guaranteed to be zero.
Given that over half the hardware out there has an LOD field for image
size queries (based on a rudimentary scan through their NIR -> whatever
code), we may as well just add the source to the NIR intrinsic.  If this
is ever a problem for anyone, the lowering is pretty trivial.

I've also added asserts to everyone's drivers that should alert them if
they ever see an LOD other than zero.  This will never happen with GL or
Vulkan so there's no need for panic.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6396>
src/amd/compiler/aco_instruction_selection.cpp
src/amd/llvm/ac_nir_to_llvm.c
src/broadcom/compiler/nir_to_vir.c
src/compiler/glsl/glsl_to_nir.cpp
src/compiler/nir/nir_intrinsics.py
src/compiler/spirv/spirv_to_nir.c
src/freedreno/ir3/ir3_compiler_nir.c
src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp
src/gallium/drivers/r600/sfn/sfn_emitssboinstruction.cpp
src/intel/compiler/brw_fs_nir.cpp
src/intel/compiler/brw_nir_lower_image_load_store.c