On Wed, 2016-07-20 at 15:28 -0700, Jason Ekstrand wrote:
> Signed-off-by: Jason Ekstrand <ja...@jlekstrand.net>
> ---
>  src/intel/vulkan/anv_pipeline.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/src/intel/vulkan/anv_pipeline.c
> b/src/intel/vulkan/anv_pipeline.c
> index 3723423..df57182 100644
> --- a/src/intel/vulkan/anv_pipeline.c
> +++ b/src/intel/vulkan/anv_pipeline.c
> @@ -149,6 +149,13 @@ anv_shader_compile_to_nir(struct anv_device
> *device,
>        nir_lower_returns(nir);
>        nir_validate_shader(nir);
>  
> +      /* We have to lower away local constant initializers right
> before we
> +       * inline functions.  That way they get properly initialized
> at the top
> +       * of the function and not at the top of its caller.
> +       */
> +      nir_lower_constant_initializers(nir, nir_var_local);
> +      nir_validate_shader(nir);
> +
>        nir_inline_functions(nir);
>        nir_validate_shader(nir);
>  
> @@ -165,6 +172,12 @@ anv_shader_compile_to_nir(struct anv_device
> *device,
>        nir_remove_dead_variables(nir, nir_var_system_value);
>        nir_validate_shader(nir);
>  
> +      /* Now that we've deleted all but the main function, we can go
> ahead and
> +       * lower the rest of the constant initializers.
> +       */
> +      nir_lower_constant_initializers(nir, ~0);

Couldn't we just use ~nir_var_local here?

> +      nir_validate_shader(nir);
> +
>        nir_propagate_invariant(nir);
>        nir_validate_shader(nir);
>  
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to