Optimal Streaming Strategy

No, no! I said that not taking advantage of coherency would be less wise. In other words, I implied that write-once read-many is theoretically awesome. Actually, if you read my longer post above, reuse of data is what I had in mind all along. Regarding the fragmentation issue, I agree. Orphan every once in a while so you don’t let memory waste get out of hand. Thinking about it, you could even delay orphaning to the point where you can determine that there is neither some part of the buffer you could replace and there is also no gap big enough so your data would fit. More bookkeeping though.

I know what you mean, but in case the previous buffer storage is still used by the GPU then it has to give you a new storage or should wait until the previous storage goes unused (unlikely).
What I tried to point out that if you orphan with GL_MAP_INVALIDATE_*_BIT then there is no guarantee at all that it will orphan anything and if you use it in conjunction with GL_MAP_UNSYNCHRONIZED_BIT then you might run into corruption issues.

Ah! Sorry. I see it now. Read that too fast.

A while back I beefed up this wiki page with some of this:

but not sure what’s morphed in/out since then. See “What Links Here” for related pages.