anv: Add support for A64 UBO and descriptor access
This MR adds support to ANV for accessing UBOs and descriptor buffers using A64 messages instead of buffer surfaces. There are a couple of reasons for this:
- If we want to do bindless UBOs, we need to either use bindless handles or we need to use A64 messages.
- SSBOs already use A64 so doing that for UBOs lets us share most of the same code in anv_nir_apply_pipeline_layout.c
- With ray-tracing, we have no binding tables whatsoever so everything needs to be bindless, including descriptors.
I debated back-and-forth about whether to do bindless handles or A64. I settled on A64 for a couple reasons:
- A64 lets me share lots of code between the SSBO and UBO paths.
- I really want descriptor buffers and regular UBOs to be the same because inline uniforms live in the descriptor buffer and I wanted them to be the same as regular UBOs.
Edited by Faith Ekstrand