[Mesa-dev] [PATCH] glsl: Use correct mode for split components.

Kenneth Graunke kenneth at whitecape.org
Mon Apr 25 23:39:21 UTC 2016


On Wednesday, April 20, 2016 3:42:01 PM PDT Bas Nieuwenhuizen wrote:
> The mode should stay the same as the original struct. In
> particular, shared should not be changed to temporary.
> 
> Signed-off-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
> ---
>  src/compiler/glsl/opt_structure_splitting.cpp | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/compiler/glsl/opt_structure_splitting.cpp b/src/compiler/
glsl/opt_structure_splitting.cpp
> index 0d18a2f..f4c129e 100644
> --- a/src/compiler/glsl/opt_structure_splitting.cpp
> +++ b/src/compiler/glsl/opt_structure_splitting.cpp
> @@ -351,7 +351,7 @@ do_structure_splitting(exec_list *instructions)
>  	 entry->components[i] =
>  	    new(entry->mem_ctx) ir_variable(type->fields.structure[i].type,
>  					    name,
> -					    ir_var_temporary);
> +					    (ir_variable_mode) entry->var->data.mode);
>  	 entry->var->insert_before(entry->components[i]);
>        }
>  
> 

ir_structure_reference_visitor::get_variable_entry bails for uniforms,
shader inputs/outputs, and SSBOs.  I believe the intention was to bail
on anything other than auto/temporary variables.  Presumably, we just
forgot to disallow shared here.

I think the primary reason for doing that was because uniforms/SSBOs are
visible via API introspection, and inputs/outputs needed has cross-stage
implications.

I don't know much about shared variables, but as long as they're not
visible via the API, they're probably safe to split.  If so, this patch
seems reasonable.

Jordan, what do you think?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160425/3bc3425c/attachment.sig>


More information about the mesa-dev mailing list