summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mesa/main/shaderapi.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c
index 8c1fba8b26..0b630ebc4d 100644
--- a/src/mesa/main/shaderapi.c
+++ b/src/mesa/main/shaderapi.c
@@ -476,6 +476,30 @@ get_attached_shaders(struct gl_context *ctx, GLuint program, GLsizei maxCount,
}
}
+static void
+get_attached_shadersARB(struct gl_context *ctx, GLhandleARB container, GLsizei maxCount,
+ GLsizei *count, GLhandleARB *obj)
+{
+ struct gl_shader_program *shProg;
+
+ if (maxCount < 0) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glGetAttachedShadersARB(maxCount < 0)");
+ return;
+ }
+
+ shProg =
+ _mesa_lookup_shader_program_err(ctx, (GLuint)container, "glGetAttachedShaders");
+
+ if (shProg) {
+ GLuint i;
+ for (i = 0; i < (GLuint) maxCount && i < shProg->NumShaders; i++) {
+ obj[i] = (GLhandleARB)shProg->Shaders[i]->Name;
+ }
+ if (count)
+ *count = i;
+ }
+}
+
/**
* glGetHandleARB() - return ID/name of currently bound shader program.
@@ -1371,7 +1395,7 @@ _mesa_GetAttachedObjectsARB(GLhandleARB container, GLsizei maxCount,
GLsizei * count, GLhandleARB * obj)
{
GET_CURRENT_CONTEXT(ctx);
- get_attached_shaders(ctx, container, maxCount, count, obj);
+ get_attached_shadersARB(ctx, container, maxCount, count, obj);
}