summaryrefslogtreecommitdiffstats
path: root/src/mesa
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:18:06 -0700
commitd806d451e660bb582c04947ae3bd8b95173e8fd4 (patch)
treeadedcbc584c4790b2808e2693d853b7aa15f5f6d /src/mesa
parentfc13269b820a842b401b7a7a4aed098e59b25b91 (diff)
downloadexternal_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.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 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;
}
}