[Mesa-dev] i965 GL_ARB_buffer_storage

Eric Anholt eric at anholt.net
Thu Feb 27 14:52:59 PST 2014


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".



More information about the mesa-dev mailing list