anv: Allow using A64 messages for SSBOs
This commit adds support in the Vulkan driver for using the global memory A64 messages for SSBOs instead of binding table messages. This has a few advantages:
- We can now support an almost arbitrary number of SSBOs in descriptor sets because we're no longer limited by the 240 binding table entries.
- We can now implement VK_EXT_shader_atomic_int64 because 64-bit atomics only work with A64 messages.
- It's another step on the way to VK_EXT_descriptor_indexing
Even though we now can use A64 messages, we choose to only use them when needed because the BTI messages are still a bit faster because they do bounds checking for us for free and don't involve 64-bit arithmetic in the shader. This is accomplished by attempting to lower as many SSBO ops as possible before we actually call
This MR is based on !365 (merged) so it looks like it's more patches than it actually is.