Ian Romanick wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Brian Paul wrote:
>> Eric Anholt wrote:
>>> The 2.0 spec doesn't make things extremely clear, but expresses itself in
>>> pseudocode: If the vertex array isn't enabled, then nothing is called that
>>> provokes drawing.  The manifestation of this bug was that a client drawing
>>> with no arrays enabled would get into the driver with a request to
>>> draw with _MaxElements being 0 and no inputs to the ff vertex program (since
>>> no arrays were enabled, so nothing was varying), and the driver failing
>>> all over the place.
>>>
>>> Bug #19911.
>>> ---
>>>  src/mesa/main/api_validate.c |    5 ++---
>>>  1 files changed, 2 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c
>>> index 5c8955d..5253ae3 100644
>>> --- a/src/mesa/main/api_validate.c
>>> +++ b/src/mesa/main/api_validate.c
>>> @@ -87,9 +87,8 @@ check_valid_to_render(GLcontext *ctx, char *function)
>>>        return GL_FALSE;
>>>     }
>>>  
>>> -   /* Always need vertex positions, unless a vertex program is in use */
>>> -   if (!ctx->VertexProgram._Current &&
>>> -       !ctx->Array.ArrayObj->Vertex.Enabled &&
>>> +   /* Always need vertex positions */
>>> +   if (!ctx->Array.ArrayObj->Vertex.Enabled &&
>>>         !ctx->Array.ArrayObj->VertexAttrib[0].Enabled)
>>>        return GL_FALSE;
>>>  
>> I believe I made this change for OpenGL ES 2.0.  You don't need to have 
>> a vertex position array in order to draw.
>>
>> Perhaps the better check would be to see if ctx->Array._Enabled is non-zero.
> 
> Uh...but that gives incorrect behavior for non-ES drivers.  Every
> version of the OpenGL spec since 1.1 (when vertex arrays were
> introduced) is quite clear:  no vertex array means no drawing.  It
> sounds like we need a flag to select between the ES and non-ES behavior.
>  It seems likely that this behavior will make its way into non-ES GL, so
> this is probably a good thing anyway.

OK, I fixed this by adding an ES vs. GL #ifdef test.

The test program from bug 19911 no longer causes a crash/hang.

-Brian


------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to