[Mesa-dev] [PATCH] mesa: Reject VertexAttribPointer() with GL_BGRA and !normalized.

Ian Romanick idr at freedesktop.org
Tue Jul 30 09:57:10 PDT 2013


On 07/23/2013 03:50 PM, Matt Turner wrote:
> On Mon, Jul 15, 2013 at 6:37 AM, Fredrik Höglund <fredrik at kde.org> wrote:
>> On Monday 15 July 2013, Kenneth Graunke wrote:
>>> Fixes Piglit's ARB_vertex_attrib_bgra/api-errors test.
>>>
>>> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
>>> ---
>>>   src/mesa/main/varray.c | 10 ++++++++++
>>>   1 file changed, 10 insertions(+)
>>>
>>> diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c
>>> index 529d933..48f15bd 100644
>>> --- a/src/mesa/main/varray.c
>>> +++ b/src/mesa/main/varray.c
>>> @@ -463,6 +463,16 @@ _mesa_VertexAttribPointer(GLuint index, GLint size, GLenum type,
>>>         return;
>>>      }
>>>
>>> +   /* From the GL_ARB_vertex_array_bgra specification:
>>> +    * "The error INVALID_VALUE is generated by VertexAttribPointer if
>>> +    *  size is BGRA and normalized is FALSE."
>>> +    */
>>> +   if (size == GL_BGRA && !normalized) {
>>> +      _mesa_error(ctx, GL_INVALID_VALUE,
>>> +                  "glVertexAttribPointer(BGRA and !normalized)");
>>> +      return;
>>> +   }
>>> +
>>
>> I think this code belongs in update_array(), since it already handles other
>> BGRA errors, and also checks if the extension is supported.
>>
>> This also reminds me that we need to decide if we should make the error
>> code depend on the GL version and entry point.
>>
>> Both OpenGL 3.3 and GL_ARB_vertex_attrib_binding changes the error code
>> to GL_INVALID_OPERATION. The extension only does it for the entry points
>> it adds.
>>
>> I personally don't think it's worth adding the additional complexity for
>> that since the conditions under which the errors to be generated haven't
>> changed.
>
> Ian,
>
> I remember you mentioning when we were showing the interns how to
> write piglit tests that the return value seemed wrong. Can you
> elaborate here? This is holding up Fredrik's ARB_vertex_attrib_binding
> patches.

I believe the ARB_vertex_array_bgra should have specified 
INVALID_OPERATION as the error code.  Section 2.5 (GL Errors) provides 
the general guidance that INVALID_VALUE is generated for "Numeric 
argument out of range".  This is error is that a GLboolean is false 
instead of true.  Clearly false is in range for GLboolean, so 
INVALID_VALUE is not appropriate.

Since OpenGL 3.3 corrects the error code, we should follow that behavior.

> Thanks,
> Matt



More information about the mesa-dev mailing list