Draft: radv/amdgpu: Add basic BO cache.
Just a basic system of bucketizing and putting stuff in a free list.
Safeguards:
- Only use up to 20% of memory in the cache.
- Anything that can fail due to lack of buffer memory, we retry after freeing buffers in the cache.
Open risks:
- We use a single free list which could be a problem with a ton of buffers.
- There is no good tracking across memory domains, which means we could cause extra spilling from VRAM on dGPUs.
- The bucketizing could cause significant extra memory overhead.
I haven't had the time to do thorough testing on this, so this puts it behind a perftest flag.
v2: Only do it for cmdbuffers & upload buffers becuase of mystery hangs in Elden Ring.