[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