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:38:43 -0700 |
commit | b920c02730c4d44039e0e79fd1eb4594be86502b (patch) | |
tree | f597047fee1e269161b8d8e67cc93684699cf2e6 | |
parent | d13b5a0e87cb6d820a152e0373f017bc8fe9c49a (diff) |
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.
(cherry picked from commit d806d451e660bb582c04947ae3bd8b95173e8fd4)
-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 430d165a82..e659b525f0 100644 --- a/src/mesa/shader/shader_api.c +++ b/src/mesa/shader/shader_api.c @@ -450,7 +450,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; } } |