Replace _mesa_parameter_longest_name() with _mesa_longest_parameter_name().
The later takes a type parameter so we can match uniforms or attributes/inputs. Used by the GL_ACTIVE_ATTRIBUTE_MAX_LENGTH and GL_ACTIVE_UNIFORM_MAX_LENGTH queries. Fixes problem reported by Brad King in VTK.
This commit is contained in:
@@ -586,18 +586,21 @@ _mesa_clone_parameter_list(const struct gl_program_parameter_list *list)
|
||||
|
||||
|
||||
/**
|
||||
* Find longest name of any parameter in list.
|
||||
* Find longest name of all uniform parameters in list.
|
||||
*/
|
||||
GLuint
|
||||
_mesa_parameter_longest_name(const struct gl_program_parameter_list *list)
|
||||
_mesa_longest_parameter_name(const struct gl_program_parameter_list *list,
|
||||
enum register_file type)
|
||||
{
|
||||
GLuint i, maxLen = 0;
|
||||
if (!list)
|
||||
return 0;
|
||||
for (i = 0; i < list->NumParameters; i++) {
|
||||
GLuint len = _mesa_strlen(list->Parameters[i].Name);
|
||||
if (len > maxLen)
|
||||
maxLen = len;
|
||||
if (list->Parameters[i].Type == type) {
|
||||
GLuint len = _mesa_strlen(list->Parameters[i].Name);
|
||||
if (len > maxLen)
|
||||
maxLen = len;
|
||||
}
|
||||
}
|
||||
return maxLen;
|
||||
}
|
||||
|
||||
@@ -131,6 +131,8 @@ _mesa_lookup_parameter_constant(const struct gl_program_parameter_list *list,
|
||||
GLint *posOut, GLuint *swizzleOut);
|
||||
|
||||
extern GLuint
|
||||
_mesa_parameter_longest_name(const struct gl_program_parameter_list *list);
|
||||
_mesa_longest_parameter_name(const struct gl_program_parameter_list *list,
|
||||
enum register_file type);
|
||||
|
||||
|
||||
#endif /* PROG_PARAMETER_H */
|
||||
|
||||
@@ -763,13 +763,13 @@ _mesa_get_programiv(GLcontext *ctx, GLuint program,
|
||||
*params = shProg->Attributes ? shProg->Attributes->NumParameters : 0;
|
||||
break;
|
||||
case GL_ACTIVE_ATTRIBUTE_MAX_LENGTH:
|
||||
*params = _mesa_parameter_longest_name(shProg->Attributes);
|
||||
*params = _mesa_longest_parameter_name(shProg->Attributes, PROGRAM_INPUT);
|
||||
break;
|
||||
case GL_ACTIVE_UNIFORMS:
|
||||
*params = shProg->Uniforms ? shProg->Uniforms->NumParameters : 0;
|
||||
break;
|
||||
case GL_ACTIVE_UNIFORM_MAX_LENGTH:
|
||||
*params = _mesa_parameter_longest_name(shProg->Uniforms);
|
||||
*params = _mesa_longest_parameter_name(shProg->Uniforms, PROGRAM_UNIFORM);
|
||||
break;
|
||||
default:
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, "glGetProgramiv(pname)");
|
||||
|
||||
Reference in New Issue
Block a user