Wait for submitted GPU work and all outstanding resource-retirement callbacks.
Stop resource producers and dispose their scene/task consumers before awaiting this teardown
boundary. Unlike waitForGpuIdle, it also drains CPU-side releases, including releases queued by
another callback. Cleanup attempts every callback and reports failures; a failed GPU fence rejects
without releasing unfenced resources. Do not await this during steady rendering.
Wait for submitted GPU work and all outstanding resource-retirement callbacks. Stop resource producers and dispose their scene/task consumers before awaiting this teardown boundary. Unlike
waitForGpuIdle, it also drains CPU-side releases, including releases queued by another callback. Cleanup attempts every callback and reports failures; a failed GPU fence rejects without releasing unfenced resources. Do not await this during steady rendering.