So you are streaming. Then it isn't a static buffer, is itImagine you have more data than will fit on a GPU and you can't display a "Loading" screen as the character moves--_very_ quickly.
In order to do a streaming world, you have to have some memory set aside for doing streaming into. And since you're streaming to the GPU, this would include buffer objects.
These buffer objects, just like the streaming space in main memory, are not currently in use. They're not currently being rendered from. So there's no need to orphan them. Just upload data to them, and when you need them, display them. If you need more time, then extend the boundaries of the streaming blocks.
Even across a PCIe bus, you can expect 1GB/sec transfer speeds. So in approximately 1 second, you can replace the entire contents of your GPU's memory.
So just make sure that you pad your streaming time by, say, 0.5 seconds. If you are streaming X segments from disk, and it takes on average 1.5 seconds to get that data from disk, make sure that your application has a 2 second window between the time it provoked the streaming and the time it starts using it.
How? If you think stalls are being created from a buffer object not being finished uploading, how do you know that a smaller buffer is finished uploading?I think I can figure out when nothing is ready.