The latter. This works great. And ensures no state changes between instances.
If you’re CPU/submission limited, just getting rid of all those buffer binds is likely to net you a nice perf improvement. But for even more…
You probably would anyway, but be sure you use the instanced subdraw feature in MultiDraw Indirect (MDI) – see instanceCount and baseInstance here:
That is, one subdraw record per model (all instances), not one subdraw record per model instance.
Why? On some GPUs/drivers such as NVIDIAs, the vertex work is packed more efficiently with instanced rendering, particularly for models with few verts (“small models”), yielding higher GPU utilization and faster drawing.
For way more info on this than you’re interested in, see: