my code so far is pretty inefficient. to optimize, I'll need to some kind of caching layer. there's a lot of per-frame calls that return pointers to pooled objects: command buffers, swapchain textures, and other things. you see the same handful of pointers repeatedly so you really *don't* want to be allocating new scheme objects for them every frame.