[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