[Mesa-dev] [PATCH 01/34] glsl/linker: Make update_array_sizes apply to just uniforms.

Ian Romanick idr at freedesktop.org
Wed Jul 31 16:10:49 PDT 2013


Patches 1-5 are

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

On 07/28/2013 11:03 PM, Paul Berry wrote:
> Commit 586b4b5 (glsl: Also update implicit sizes of varyings at link
> time) extended update_array_sizes() to apply to both uniforms and
> shader ins/outs.  However, doing creates problems for geometry
> shaders, because update_array_sizes() assumes that variables with
> matching names in different parts of the pipeline should have the same
> sizes.  With the addition of geometry shaders, this is no longer true
> (e.g. both vertex and geometry shaders have a gl_ClipDistance output
> variable, but there's no reason these variables should have the same
> sizes).
>
> The original reason for commit 586b4b5 (avoid problems with
> gl_TexCoord being 0 length) has since been addressed by commit 6f53921
> (linker: Ensure that unsized arrays have a size after linking).  So go
> ahead and switch update_array_sizes() back to only acting on uniforms.
> ---
>   src/glsl/linker.cpp | 4 +---
>   1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp
> index 942f906..7192567 100644
> --- a/src/glsl/linker.cpp
> +++ b/src/glsl/linker.cpp
> @@ -1129,9 +1129,7 @@ update_array_sizes(struct gl_shader_program *prog)
>         foreach_list(node, prog->_LinkedShaders[i]->ir) {
>   	 ir_variable *const var = ((ir_instruction *) node)->as_variable();
>
> -	 if ((var == NULL) || (var->mode != ir_var_uniform &&
> -			       var->mode != ir_var_shader_in &&
> -			       var->mode != ir_var_shader_out) ||
> +	 if ((var == NULL) || (var->mode != ir_var_uniform) ||
>   	     !var->type->is_array())
>   	    continue;
>
>



More information about the mesa-dev mailing list