Reported by @fclem. On Metal GPU_finish enacts a CPU<-> GPU sync by submitting a command buffer and waiting on the completion event. However if there was no command buffer to submit then the call was returning immediately, regardless of any outstanding GPU work. This fixes that case by keeping track of all outstanding work and blocking on that. Authored by Apple: James McCarthy Co-authored-by: James McCarthy <jamesmccarthy@apple.com> Pull Request: https://projects.blender.org/blender/blender/pulls/128987