diff options
author | Ian Romanick <ian.d.romanick@intel.com> | 2008-09-29 12:18:06 -0700 |
---|---|---|
committer | Ian Romanick <ian.d.romanick@intel.com> | 2008-09-29 12:18:06 -0700 |
commit | d806d451e660bb582c04947ae3bd8b95173e8fd4 (patch) | |
tree | adedcbc584c4790b2808e2693d853b7aa15f5f6d /src/mesa | |
parent | fc13269b820a842b401b7a7a4aed098e59b25b91 (diff) | |
download | external_mesa3d-d806d451e660bb582c04947ae3bd8b95173e8fd4.zip external_mesa3d-d806d451e660bb582c04947ae3bd8b95173e8fd4.tar.gz external_mesa3d-d806d451e660bb582c04947ae3bd8b95173e8fd4.tar.bz2 |
GLSL: AttachShader returns INVALID_OPERATION for repeated attach
The GL_ARB_shader_objects spec says that glAttachShaderARB is supposed
to return GL_INVALID_OPERATION if a shader is attached to a program
where it is already attached. _mesa_attach_shader perviously returned
without error in this case.
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/shader/shader_api.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/mesa/shader/shader_api.c b/src/mesa/shader/shader_api.c index 3c530d1..3ab5903 100644 --- a/src/mesa/shader/shader_api.c +++ b/src/mesa/shader/shader_api.c @@ -455,7 +455,13 @@ _mesa_attach_shader(GLcontext *ctx, GLuint program, GLuint shader) n = shProg->NumShaders; for (i = 0; i < n; i++) { if (shProg->Shaders[i] == sh) { - /* already attached */ + /* The shader is already attched to this program. The + * GL_ARB_shader_objects spec says: + * + * "The error INVALID_OPERATION is generated by AttachObjectARB + * if <obj> is already attached to <containerObj>." + */ + _mesa_error(ctx, GL_INVALID_OPERATION, "glAttachShader"); return; } } |