[Mesa-dev] [PATCH] mesa: UseShaderProgramEXT and Uniform* shouldn't be allowed inside Begin/End

Ian Romanick idr at freedesktop.org
Thu Jun 2 14:29:59 PDT 2011


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 05/31/2011 06:23 AM, Marek Olšák wrote:
> I couldn't find this being required by the spec.

The spec gives a small list of things that can occur inside a Begin/End
block.  In the 3.0 spec, these commands are listed in section 2.6.3.
Only commands that set immediate mode vertex data are allowed.  Nothing
that sets or gets state is allowed.

In any case, thanks for fixing this and the UseProgram bug.

> ---
>  src/mesa/main/shaderapi.c |    2 ++
>  src/mesa/main/uniforms.c  |    4 ++++
>  2 files changed, 6 insertions(+), 0 deletions(-)
> 
> diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c
> index 1e237a9..cbfbac8 100644
> --- a/src/mesa/main/shaderapi.c
> +++ b/src/mesa/main/shaderapi.c
> @@ -1790,6 +1790,8 @@ _mesa_UseShaderProgramEXT(GLenum type, GLuint program)
>     GET_CURRENT_CONTEXT(ctx);
>     struct gl_shader_program *shProg = NULL;
>  
> +   ASSERT_OUTSIDE_BEGIN_END(ctx);
> +
>     if (!validate_shader_target(ctx, type)) {
>        _mesa_error(ctx, GL_INVALID_ENUM, "glUseShaderProgramEXT(type)");
>        return;
> diff --git a/src/mesa/main/uniforms.c b/src/mesa/main/uniforms.c
> index 12fe7b5..715ac76 100644
> --- a/src/mesa/main/uniforms.c
> +++ b/src/mesa/main/uniforms.c
> @@ -855,6 +855,8 @@ _mesa_uniform(struct gl_context *ctx, struct gl_shader_program *shProg,
>     struct gl_uniform *uniform;
>     GLint elems, offset;
>  
> +   ASSERT_OUTSIDE_BEGIN_END(ctx);
> +
>     if (!shProg || !shProg->LinkStatus) {
>        _mesa_error(ctx, GL_INVALID_OPERATION, "glUniform(program not linked)");
>        return;
> @@ -1028,6 +1030,8 @@ _mesa_uniform_matrix(struct gl_context *ctx, struct gl_shader_program *shProg,
>     struct gl_uniform *uniform;
>     GLint offset;
>  
> +   ASSERT_OUTSIDE_BEGIN_END(ctx);
> +
>     if (!shProg || !shProg->LinkStatus) {
>        _mesa_error(ctx, GL_INVALID_OPERATION,
>           "glUniformMatrix(program not linked)");

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/

iEYEARECAAYFAk3oANcACgkQX1gOwKyEAw+4dwCfbI5OTxTq8N5CSyVvFGLV+p5v
LjIAmwf9cSKyR7djmt/KLpVnamq5Z15U
=yzJc
-----END PGP SIGNATURE-----


More information about the mesa-dev mailing list