[Mesa-dev] [PATCH] mesa: only verify that enabled arrays have backing buffers

Tapani Pälli tapani.palli at intel.com
Thu Dec 1 11:31:59 UTC 2016



On 12/01/2016 12:59 PM, Ilia Mirkin wrote:
> On Thu, Dec 1, 2016 at 5:50 AM, Tapani Pälli <tapani.palli at intel.com> wrote:
>>
>>
>> On 12/01/2016 12:19 PM, Tapani Pälli wrote:
>>>
>>>
>>> On 12/01/2016 12:04 AM, Ilia Mirkin wrote:
>>>>
>>>> We were previously also verifying that no backing buffers were available
>>>> when an array wasn't enabled. This is has no basis in the spec, and it
>>>> causes GLupeN64 to fail as a result.
>>>
>>>
>>> I'm a bit puzzled about the API usage here, is the app attempting to
>>> render something without a VAO and we are having DefaultVAO in use?
>>
>>
>> ok realized that can't be the case as there's a separate check for that.
>
> No, they just have some VBO's bound with attribs that got disabled in
> the VAO. i.e. a glDisableVertexAttribArray() call which removes the
> bit from _Enabled, but not the VertexAttribBufferMask.

ok now I get it, and new test still checks if there is something in 
enabled that is not in buffer mask so this LGTM:

Reviewed-by: Tapani Pälli <tapani.palli at intel.com>


>>
>>>
>>>> Fixes: c2e146f487 ("mesa: error out in indirect draw when vertex
>>>> bindings mismatch")
>>>> Cc: mesa-stable at lists.freedesktop.org
>>>> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
>>>> Reviewed-by: Timothy Arceri <timothy.arceri at collabora.com>
>>>> ---
>>>>  src/mesa/main/api_validate.c | 2 +-
>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c
>>>> index d3b4cab..071c16d 100644
>>>> --- a/src/mesa/main/api_validate.c
>>>> +++ b/src/mesa/main/api_validate.c
>>>> @@ -925,7 +925,7 @@ valid_draw_indirect(struct gl_context *ctx,
>>>>      * buffer bound.
>>>>      */
>>>>     if (_mesa_is_gles31(ctx) &&
>>>> -       ctx->Array.VAO->_Enabled !=
>>>> ctx->Array.VAO->VertexAttribBufferMask) {
>>>> +       ctx->Array.VAO->_Enabled &
>>>> ~ctx->Array.VAO->VertexAttribBufferMask) {
>>>>        _mesa_error(ctx, GL_INVALID_OPERATION, "%s(No VBO bound)", name);
>>>>        return GL_FALSE;
>>>>     }
>>>>
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list