[Mesa-dev] [PATCH v2] shaderapi: Fix AttachShader error
Chad Versace
chad.versace at linux.intel.com
Wed Feb 13 14:12:58 PST 2013
Thanks, committed.
On 02/11/2013 10:42 PM, Tapani Pälli wrote:
> From: bma <Bo.Ma at windriver.com>
>
> Detect a duplicate Shader type as and error instead of silently allowing
> it, restrict to ES2 API.
>
> v2: Tapani Pälli <tapani.palli at intel.com>
> - make the check run time instead of compile time
>
> Signed-off-by: bma <Bo.Ma at windriver.com>
> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
> ---
> src/mesa/main/shaderapi.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c
> index 2590abe..64f7ed3 100644
> --- a/src/mesa/main/shaderapi.c
> +++ b/src/mesa/main/shaderapi.c
> @@ -207,6 +207,8 @@ attach_shader(struct gl_context *ctx, GLuint program, GLuint shader)
> struct gl_shader *sh;
> GLuint i, n;
>
> + const bool same_type_disallowed = _mesa_is_gles(ctx);
> +
> shProg = _mesa_lookup_shader_program_err(ctx, program, "glAttachShader");
> if (!shProg)
> return;
> @@ -227,6 +229,16 @@ attach_shader(struct gl_context *ctx, GLuint program, GLuint shader)
> */
> _mesa_error(ctx, GL_INVALID_OPERATION, "glAttachShader");
> return;
> + } else if (same_type_disallowed &&
> + shProg->Shaders[i]->Type == sh->Type) {
> + /* Shader with the same type is already attached to this program,
> + * OpenGL ES 2.0 and 3.0 specs say:
> + *
> + * "Multiple shader objects of the same type may not be attached
> + * to a single program object."
> + */
> + _mesa_error(ctx, GL_INVALID_OPERATION, "glAttachShader");
> + return;
> }
> }
>
>
More information about the mesa-dev
mailing list