Am Dienstag, 28. Februar 2012, 14:50:28 schrieb Henri Verbeet:
Ok, but we could just be more clever about doing uploads and only upload what's actually referenced by draws. We already have most of the code for tracking uploaded ranges. Similarly, are we really sure that maintaining a sysmem copy of the entire buffer is really better than mapping the VBO for drawStridedSlow() in the first place? At some point the data needs to be sent to the GPU, and I think we're in a better position to decide what to upload and when than the driver.
Indexed draws will be tricky, it depends on how decent the app-provided index ranges are. It also means we'd have to track which parts of the VB are uploaded and which aren't.
Mapping the VBO in drawStridedSlow might be an option, although I guess that would force the driver to wait until previous draws are done.
All those options are out of reach for Wine 1.4, and beyond Wine 1.4 I'd prefer to fix the problems that force us into drawStridedSlow by implementing a vertex pipeline and proper instancing.