Skip to content
Snippets Groups Projects
Commit acfbdfcb authored by Emma Anholt's avatar Emma Anholt
Browse files

mesa: Add support for glGetUniformIndices().


This is a single entrypoint that maps from a series of names to the
indices of those names within the active uniforms list.  Each index is
like glGetUniformLocation()'s return value, except that it doesn't
encode an array offset.

Reviewed-by: default avatarIan Romanick <ian.d.romanick@intel.com>
parent abcdbdf9
No related branches found
No related tags found
Loading
......@@ -524,6 +524,38 @@ _mesa_GetUniformLocationARB(GLhandleARB programObj, const GLcharARB *name)
return _mesa_uniform_merge_location_offset(index, offset);
}
static void GLAPIENTRY
_mesa_GetUniformIndices(GLuint program,
GLsizei uniformCount,
const GLchar * const *uniformNames,
GLuint *uniformIndices)
{
GET_CURRENT_CONTEXT(ctx);
GLsizei i;
struct gl_shader_program *shProg;
if (!ctx->Extensions.ARB_uniform_buffer_object) {
_mesa_error(ctx, GL_INVALID_OPERATION, "glGetUniformIndices");
return;
}
shProg = _mesa_lookup_shader_program_err(ctx, program,
"glGetUniformIndices");
if (!shProg)
return;
if (uniformCount < 0) {
_mesa_error(ctx, GL_INVALID_VALUE,
"glGetUniformIndices(uniformCount < 0)");
return;
}
for (i = 0; i < uniformCount; i++) {
unsigned offset;
uniformIndices[i] = _mesa_get_uniform_location(ctx, shProg,
uniformNames[i], &offset);
}
}
/**
* Plug in shader uniform-related functions into API dispatch table.
......@@ -582,5 +614,8 @@ _mesa_init_shader_uniform_dispatch(struct _glapi_table *exec)
SET_GetnUniformuivARB(exec, _mesa_GetnUniformuivARB);
SET_GetnUniformdvARB(exec, _mesa_GetnUniformdvARB); /* GL 4.0 */
/* GL_ARB_uniform_buffer_object / GL 3.1 */
SET_GetUniformIndices(exec, _mesa_GetUniformIndices);
#endif /* FEATURE_GL */
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment