mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 04:30:10 +01:00
mesa: Add support for GL_ARB_ubo's glGetActiveUniformName().
This is like a stripped-down version of glGetActiveUniform that just returns the name, since the other return values (type and size) of that function are now meant to be handled with glGetActiveUniformsiv(). Fixes piglit ARB_uniform_buffer_object/getactiveuniformname Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
parent
dc654370c3
commit
eed967bc9c
1 changed files with 39 additions and 0 deletions
|
|
@ -752,6 +752,44 @@ _mesa_GetActiveUniformBlockName(GLuint program,
|
|||
}
|
||||
}
|
||||
|
||||
static void GLAPIENTRY
|
||||
_mesa_GetActiveUniformName(GLuint program, GLuint uniformIndex,
|
||||
GLsizei bufSize, GLsizei *length,
|
||||
GLchar *uniformName)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
struct gl_shader_program *shProg;
|
||||
|
||||
if (!ctx->Extensions.ARB_uniform_buffer_object) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION, "glGetActiveUniformBlockiv");
|
||||
return;
|
||||
}
|
||||
|
||||
if (bufSize < 0) {
|
||||
_mesa_error(ctx, GL_INVALID_VALUE,
|
||||
"glGetActiveUniformName(bufSize %d < 0)",
|
||||
bufSize);
|
||||
return;
|
||||
}
|
||||
|
||||
ASSERT_OUTSIDE_BEGIN_END(ctx);
|
||||
|
||||
shProg = _mesa_lookup_shader_program_err(ctx, program, "glGetActiveUniformName");
|
||||
|
||||
if (!shProg)
|
||||
return;
|
||||
|
||||
if (uniformIndex >= shProg->NumUserUniformStorage) {
|
||||
_mesa_error(ctx, GL_INVALID_VALUE, "glGetActiveUniform(index)");
|
||||
return;
|
||||
}
|
||||
|
||||
if (uniformName) {
|
||||
_mesa_copy_string(uniformName, bufSize, length,
|
||||
shProg->UniformStorage[uniformIndex].name);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Plug in shader uniform-related functions into API dispatch table.
|
||||
*/
|
||||
|
|
@ -815,6 +853,7 @@ _mesa_init_shader_uniform_dispatch(struct _glapi_table *exec)
|
|||
SET_GetActiveUniformsiv(exec, _mesa_GetActiveUniformsiv);
|
||||
SET_GetActiveUniformBlockiv(exec, _mesa_GetActiveUniformBlockiv);
|
||||
SET_GetActiveUniformBlockName(exec, _mesa_GetActiveUniformBlockName);
|
||||
SET_GetActiveUniformName(exec, _mesa_GetActiveUniformName);
|
||||
SET_UniformBlockBinding(exec, _mesa_UniformBlockBinding);
|
||||
|
||||
#endif /* FEATURE_GL */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue