aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian <[email protected]>2007-04-18 14:19:17 -0600
committerBrian <[email protected]>2007-04-18 14:19:17 -0600
commit6d3d9c1c6de33646b63d47892863939ee1b1e624 (patch)
tree72a4057938f1aaa7b2d2e0659d3ef14e018a16be
parente57e752eeef1611cbc8bf9e0aca8c2467267f027 (diff)
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.
-rw-r--r--src/mesa/shader/prog_parameter.c13
-rw-r--r--src/mesa/shader/prog_parameter.h4
-rw-r--r--src/mesa/shader/shader_api.c4
3 files changed, 13 insertions, 8 deletions
diff --git a/src/mesa/shader/prog_parameter.c b/src/mesa/shader/prog_parameter.c
index 2c8a3407634..fe90ca6d7bb 100644
--- a/src/mesa/shader/prog_parameter.c
+++ b/src/mesa/shader/prog_parameter.c
@@ -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;
}
diff --git a/src/mesa/shader/prog_parameter.h b/src/mesa/shader/prog_parameter.h
index 3d32a64f383..879623b127a 100644
--- a/src/mesa/shader/prog_parameter.h
+++ b/src/mesa/shader/prog_parameter.h
@@ -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 */
diff --git a/src/mesa/shader/shader_api.c b/src/mesa/shader/shader_api.c
index fc1ae287f4f..41646e7664d 100644
--- a/src/mesa/shader/shader_api.c
+++ b/src/mesa/shader/shader_api.c
@@ -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)");