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:
@@ -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;
|
||||
|
Reference in New Issue
Block a user