summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Romanick <ian.d.romanick@intel.com>2008-09-29 12:18:06 -0700
committerIan Romanick <ian.d.romanick@intel.com>2008-09-29 12:38:43 -0700
commitb920c02730c4d44039e0e79fd1eb4594be86502b (patch)
treef597047fee1e269161b8d8e67cc93684699cf2e6
parentd13b5a0e87cb6d820a152e0373f017bc8fe9c49a (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.c8
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;
}
}