Connor, the hardware manages the scratch buffer alloc/dealloc. You don't have to allocate more than one. The problem with Civ VI is that VGPR indexing has never been properly implemented for gfx9 in LLVM.