Re: [Mesa-dev] [PATCH 1/4] mesa: Draw indirect is not allowed if the default VAO is bound.

2015-10-21 Thread Ian Romanick
On 10/20/2015 10:22 AM, Ilia Mirkin wrote:
> On Tue, Oct 20, 2015 at 10:19 AM, Marta Lofstedt
>  wrote:
>> From: Marta Lofstedt 
>>
>> From OpenGL ES 3.1 specification, section 10.5:
>> "DrawArraysIndirect requires that all data sourced for the
>> command, including the DrawArraysIndirectCommand
>> structure,  be in buffer objects,  and may not be called when
>> the default vertex array object is bound."
> 
> Is it possible to do this with desktop GL? AFAIK ARB_draw_indirect is
> only enabled for core profiles, and you can't draw at all in core
> without a VAO bound. So I think you can remove the _mesa_is_gles31
> check. [Might want to wait on confirmation for that, or double-check
> my claim yourself.]

Correct.  We do this check for core profile in check_valid_to_render
because a VAO is always required.

>> Signed-off-by: Marta Lofstedt 
>> ---
>>  src/mesa/main/api_validate.c | 13 +
>>  1 file changed, 13 insertions(+)
>>
>> diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c
>> index a46c194..c5628f5 100644
>> --- a/src/mesa/main/api_validate.c
>> +++ b/src/mesa/main/api_validate.c
>> @@ -698,6 +698,19 @@ valid_draw_indirect(struct gl_context *ctx,
>>  {
>> const GLsizeiptr end = (GLsizeiptr)indirect + size;
>>
>> +   /*
>> +* OpenGL ES 3.1 spec. section 10.5:
>> +* "DrawArraysIndirect requires that all data sourced for the
>> +* command, including the DrawArraysIndirectCommand
>> +* structure,  be in buffer objects,  and may not be called when
>> +* the default vertex array object is bound."
>> +*/
>> +   if (_mesa_is_gles31(ctx) && (ctx->Array.VAO == ctx->Array.DefaultVAO)) {
>> +  _mesa_error(ctx, GL_INVALID_OPERATION,
>> +  "%s(The default VAO is bound)", name);

We should use the same error here that is used in check_valid_to_render
for core profile:

 _mesa_error(ctx, GL_INVALID_OPERATION, "%s(no VAO bound)",
function);

>> +  return GL_FALSE;
>> +   }
>> +
>> if (!_mesa_valid_prim_mode(ctx, mode, name))
>>return GL_FALSE;
>>
>> --
>> 2.1.4
>>
>> ___
>> mesa-dev mailing list
>> mesa-dev@lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> ___
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH 1/4] mesa: Draw indirect is not allowed if the default VAO is bound.

2015-10-20 Thread Marta Lofstedt
From: Marta Lofstedt 

From OpenGL ES 3.1 specification, section 10.5:
"DrawArraysIndirect requires that all data sourced for the
command, including the DrawArraysIndirectCommand
structure,  be in buffer objects,  and may not be called when
the default vertex array object is bound."

Signed-off-by: Marta Lofstedt 
---
 src/mesa/main/api_validate.c | 13 +
 1 file changed, 13 insertions(+)

diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c
index a46c194..c5628f5 100644
--- a/src/mesa/main/api_validate.c
+++ b/src/mesa/main/api_validate.c
@@ -698,6 +698,19 @@ valid_draw_indirect(struct gl_context *ctx,
 {
const GLsizeiptr end = (GLsizeiptr)indirect + size;
 
+   /*
+* OpenGL ES 3.1 spec. section 10.5:
+* "DrawArraysIndirect requires that all data sourced for the
+* command, including the DrawArraysIndirectCommand
+* structure,  be in buffer objects,  and may not be called when
+* the default vertex array object is bound."
+*/
+   if (_mesa_is_gles31(ctx) && (ctx->Array.VAO == ctx->Array.DefaultVAO)) {
+  _mesa_error(ctx, GL_INVALID_OPERATION,
+  "%s(The default VAO is bound)", name);
+  return GL_FALSE;
+   }
+
if (!_mesa_valid_prim_mode(ctx, mode, name))
   return GL_FALSE;
 
-- 
2.1.4

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH 1/4] mesa: Draw indirect is not allowed if the default VAO is bound.

2015-10-20 Thread Ilia Mirkin
On Tue, Oct 20, 2015 at 10:19 AM, Marta Lofstedt
 wrote:
> From: Marta Lofstedt 
>
> From OpenGL ES 3.1 specification, section 10.5:
> "DrawArraysIndirect requires that all data sourced for the
> command, including the DrawArraysIndirectCommand
> structure,  be in buffer objects,  and may not be called when
> the default vertex array object is bound."

Is it possible to do this with desktop GL? AFAIK ARB_draw_indirect is
only enabled for core profiles, and you can't draw at all in core
without a VAO bound. So I think you can remove the _mesa_is_gles31
check. [Might want to wait on confirmation for that, or double-check
my claim yourself.]

>
> Signed-off-by: Marta Lofstedt 
> ---
>  src/mesa/main/api_validate.c | 13 +
>  1 file changed, 13 insertions(+)
>
> diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c
> index a46c194..c5628f5 100644
> --- a/src/mesa/main/api_validate.c
> +++ b/src/mesa/main/api_validate.c
> @@ -698,6 +698,19 @@ valid_draw_indirect(struct gl_context *ctx,
>  {
> const GLsizeiptr end = (GLsizeiptr)indirect + size;
>
> +   /*
> +* OpenGL ES 3.1 spec. section 10.5:
> +* "DrawArraysIndirect requires that all data sourced for the
> +* command, including the DrawArraysIndirectCommand
> +* structure,  be in buffer objects,  and may not be called when
> +* the default vertex array object is bound."
> +*/
> +   if (_mesa_is_gles31(ctx) && (ctx->Array.VAO == ctx->Array.DefaultVAO)) {
> +  _mesa_error(ctx, GL_INVALID_OPERATION,
> +  "%s(The default VAO is bound)", name);
> +  return GL_FALSE;
> +   }
> +
> if (!_mesa_valid_prim_mode(ctx, mode, name))
>return GL_FALSE;
>
> --
> 2.1.4
>
> ___
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev