One thing I noticed while working on this was that we only reallocate buffer storage for INVALIDATE_BUFFER_BIT when UNSYNCHRONIZED_BIT is unset. The ARB_mbr spec says that the contents "may be discarded", not "must be discarded". However, while writing the glamor code I happened to type this for the wraparound case:
glamor_priv->vb = glMapBufferRange(GL_ARRAY_BUFFER, 0, size, GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_BUFFER_BIT | GL_MAP_UNSYNCHRONIZED_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT); intending that the buffer storage get reallocated, and that we not worry about any synchronization after that. My code would have been broken on the i965 driver. I'm wondering if this is the intended behavior of the spec, or if we want to treat the "may" as a "must". _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev