mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 06:48:06 +02:00
glsl/linker: Make update_array_sizes apply to just uniforms.
Commit586b4b5(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 commit586b4b5(avoid problems with gl_TexCoord being 0 length) has since been addressed by commit6f53921(linker: Ensure that unsized arrays have a size after linking). So go ahead and switch update_array_sizes() back to only acting on uniforms. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
8fc41df549
commit
6a2baf3a06
1 changed files with 1 additions and 3 deletions
|
|
@ -1094,9 +1094,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;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue