[Mesa-dev] [PATCH] mesa: Don't check (offset + size <= bufObj->Size) in BindBufferRange.

Paul Berry stereotype441 at gmail.com
Thu Feb 7 17:56:42 PST 2013


On 7 February 2013 17:54, Paul Berry <stereotype441 at gmail.com> wrote:

> In the documentation for BindBufferRange, OpenGL specs from 3.0
> through 4.1 contain this language:
>
>     "The error INVALID_VALUE is generated if size is less than or
>     equal to zero or if offset + size is greater than the value of
>     BUFFER_SIZE."
>
> This text was dropped from OpenGL 4.2, and it does not appear in the
> GLES 3.0 spec.
>
> Presumably the reason for the change is because come clients change
> the size of the buffer after calling BindBufferRange.  We don't want
> to generate an error at the time of the BindBufferRange call just
> because the old size of the buffer was too small, when the buffer is
> about to be resized.
>
> Since this is a deliberate relaxation of error conditions in order to
> allow clients to work, it seems sensible to apply it to all versions
> of GL, not just GL 4.2 and above.
>
> (Note that there is no danger of this change allowing a client to
> access data beyond the end of a buffer.  We already have code to
> ensure that that doesn't happen in the case where the client shrinks
> the buffer after calling BindBufferRange).
>
> Eliminates a spurious error message in the gles3 conformance test
> "transform_feedback_offset_size".
>

Oops, I forgot to say:

Note: this is a candidate for the 9.1 branch.


> ---
>  src/mesa/main/bufferobj.c | 7 -------
>  1 file changed, 7 deletions(-)
>
> diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c
> index 7c06938..b82ba7b 100644
> --- a/src/mesa/main/bufferobj.c
> +++ b/src/mesa/main/bufferobj.c
> @@ -2152,13 +2152,6 @@ _mesa_BindBufferRange(GLenum target, GLuint index,
>                       (int) size);
>           return;
>        }
> -
> -      if (offset + size > bufObj->Size) {
> -         _mesa_error(ctx, GL_INVALID_VALUE,
> -                     "glBindBufferRange(offset + size %d > buffer size
> %d)",
> -                     (int) (offset + size), (int) (bufObj->Size));
> -         return;
> -      }
>     }
>
>     switch (target) {
> --
> 1.8.1.2
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20130207/e104b2d0/attachment-0001.html>


More information about the mesa-dev mailing list