[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