From: Matt Turner Date: Fri, 23 Nov 2012 08:03:59 +0000 (-0800) Subject: mesa: Return 0 for XFB_VARYING_MAX_LENGTH if no varyings X-Git-Tag: accepted/2.0alpha-wayland/20130301.050525~63 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b7af6550b1201f8883823c9fece85fedf1a49a92;p=profile%2Fivi%2Fmesa.git 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 (cherry picked from commit 7c2060f0f08134e8c4ea00af94f59c18f30d05e2) --- diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c index a90d9c5..0c9cc63 100644 --- a/src/mesa/main/shaderapi.c +++ b/src/mesa/main/shaderapi.c @@ -186,25 +186,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) { @@ -549,11 +530,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;