diff options
author | marha <marha@users.sourceforge.net> | 2013-02-15 08:22:54 +0100 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2013-02-15 08:22:54 +0100 |
commit | 0b2fa092281e667dbb02942008b16510af1086ef (patch) | |
tree | 350352f14a2a6f98d2f5a5356eb63aeae67d6047 /mesalib/src/mesa/main | |
parent | 1de47a7fc53a67beccab830178aaa0118ed4734f (diff) | |
parent | 6f6a2340d40759b77ef43965efdd24f3e4e623fd (diff) | |
download | vcxsrv-0b2fa092281e667dbb02942008b16510af1086ef.tar.gz vcxsrv-0b2fa092281e667dbb02942008b16510af1086ef.tar.bz2 vcxsrv-0b2fa092281e667dbb02942008b16510af1086ef.zip |
Merge remote-tracking branch 'origin/released'
* origin/released:
libxcb mesa xserver xkeyboard-config git update 15 Feb 2013
Diffstat (limited to 'mesalib/src/mesa/main')
-rw-r--r-- | mesalib/src/mesa/main/shaderapi.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/mesalib/src/mesa/main/shaderapi.c b/mesalib/src/mesa/main/shaderapi.c index 2590abe7e..be6946798 100644 --- a/mesalib/src/mesa/main/shaderapi.c +++ b/mesalib/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,18 @@ 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. [...] The error INVALID_OPERATION + * is generated if [...] another shader object of the same type + * as shader is already attached to program." + */ + _mesa_error(ctx, GL_INVALID_OPERATION, "glAttachShader"); + return; } } |