mesa: Return 0 for XFB_VARYING_MAX_LENGTH if no varyings

v2: Perform this count the same way as elsewhere in this file, per
    Brian Paul's review.

Fixes part of es3conform's transform_feedback_init_defaults test.
NOTE: This is a candidate for the stable branches.
Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
Matt Turner
2012-11-23 00:03:59 -08:00
parent f65741721b
commit 7c2060f0f0

View File

@@ -180,25 +180,6 @@ validate_shader_target(const struct gl_context *ctx, GLenum type)
}
/**
* Find the length of the longest transform feedback varying name
* which was specified with glTransformFeedbackVaryings().
*/
static GLint
longest_feedback_varying_name(const struct gl_shader_program *shProg)
{
GLuint i;
GLint max = 0;
for (i = 0; i < shProg->TransformFeedback.NumVarying; i++) {
GLint len = strlen(shProg->TransformFeedback.VaryingNames[i]);
if (len > max)
max = len;
}
return max;
}
static GLboolean
is_program(struct gl_context *ctx, GLuint name)
{
@@ -538,11 +519,24 @@ get_programiv(struct gl_context *ctx, GLuint program, GLenum pname, GLint *param
break;
*params = shProg->TransformFeedback.NumVarying;
return;
case GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH:
case GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH: {
unsigned i;
GLint max_len = 0;
if (!has_xfb)
break;
*params = longest_feedback_varying_name(shProg) + 1;
for (i = 0; i < shProg->TransformFeedback.NumVarying; i++) {
/* Add one for the terminating NUL character.
*/
const GLint len = strlen(shProg->TransformFeedback.VaryingNames[i]) + 1;
if (len > max_len)
max_len = len;
}
*params = max_len;
return;
}
case GL_TRANSFORM_FEEDBACK_BUFFER_MODE:
if (!has_xfb)
break;