[Mesa-dev] [PATCH 1/7] glsl: move and reused code to find first and last shaders

Juha-Pekka Heikkila juhapekka.heikkila at gmail.com
Mon Nov 23 05:28:41 PST 2015


Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>

On 21.11.2015 10:02, Timothy Arceri wrote:
> From: Timothy Arceri <timothy.arceri at collabora.com>
>
> ---
>   src/glsl/linker.cpp | 30 ++++++++++++------------------
>   1 file changed, 12 insertions(+), 18 deletions(-)
>
> diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp
> index 331d9a2..eac2536 100644
> --- a/src/glsl/linker.cpp
> +++ b/src/glsl/linker.cpp
> @@ -4139,11 +4139,18 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
>      if (!prog->LinkStatus)
>         goto done;
>
> -   unsigned prev;
> +   unsigned first, last, prev;
>
> -   for (prev = 0; prev <= MESA_SHADER_FRAGMENT; prev++) {
> -      if (prog->_LinkedShaders[prev] != NULL)
> -         break;
> +   first = MESA_SHADER_STAGES;
> +   last = 0;
> +
> +   /* Determine first and last stage. */
> +   for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) {
> +      if (!prog->_LinkedShaders[i])
> +         continue;
> +      if (first == MESA_SHADER_STAGES)
> +         first = i;
> +      last = i;
>      }
>
>      check_explicit_uniform_locations(ctx, prog);
> @@ -4157,6 +4164,7 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
>      /* Validate the inputs of each stage with the output of the preceding
>       * stage.
>       */
> +   prev = first;
>      for (unsigned i = prev + 1; i <= MESA_SHADER_FRAGMENT; i++) {
>         if (prog->_LinkedShaders[i] == NULL)
>            continue;
> @@ -4260,20 +4268,6 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
>         goto done;
>      }
>
> -   unsigned first, last;
> -
> -   first = MESA_SHADER_STAGES;
> -   last = 0;
> -
> -   /* Determine first and last stage. */
> -   for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) {
> -      if (!prog->_LinkedShaders[i])
> -         continue;
> -      if (first == MESA_SHADER_STAGES)
> -         first = i;
> -      last = i;
> -   }
> -
>      if (num_tfeedback_decls != 0) {
>         /* From GL_EXT_transform_feedback:
>          *   A program will fail to link if:
>



More information about the mesa-dev mailing list