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

Reply via email to