[Mesa-dev] [PATCH] mesa: Return 0 for XFB_VARYING_MAX_LENGTH if no varyings
Brian Paul
brianp at vmware.com
Mon Nov 26 10:09:45 PST 2012
On 11/26/2012 11:06 AM, Matt Turner wrote:
> 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.
> ---
> src/mesa/main/shaderapi.c | 36 +++++++++++++++---------------------
> 1 files changed, 15 insertions(+), 21 deletions(-)
>
> diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c
> index 7271150..5c0a923 100644
> --- a/src/mesa/main/shaderapi.c
> +++ b/src/mesa/main/shaderapi.c
> @@ -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;
Reviewed-by: Brian Paul <brianp at vmware.com>
More information about the mesa-dev
mailing list