[Mesa-dev] [PATCH] nir/lower_outputs_to_temporaries: Reparent the output name

Eduardo Lima Mitev elima at igalia.com
Fri Sep 11 05:45:25 PDT 2015


Reviewed-by: Eduardo Lima Mitev <elima at igalia.com>

On 09/10/2015 10:58 PM, Jason Ekstrand wrote:
> We copy the output, make the old output the temporary, and give the
> temporary a new name.  The copy keeps the pointer to the old name.  This
> works just fine up until the point where we lower things to SSA and delete
> the old variable and, with it, the name.  Instead, we should re-parent to
> the copy.
> ---
>  src/glsl/nir/nir_lower_outputs_to_temporaries.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/src/glsl/nir/nir_lower_outputs_to_temporaries.c b/src/glsl/nir/nir_lower_outputs_to_temporaries.c
> index fb8070c..9d3a913 100644
> --- a/src/glsl/nir/nir_lower_outputs_to_temporaries.c
> +++ b/src/glsl/nir/nir_lower_outputs_to_temporaries.c
> @@ -97,6 +97,9 @@ nir_lower_outputs_to_temporaries(nir_shader *shader)
>        /* The orignal is now the temporary */
>        nir_variable *temp = var;
>  
> +      /* Reparent the name to the new variable */
> +      ralloc_steal(output, output->name);
> +
>        /* Give the output a new name with @out-temp appended */
>        temp->name = ralloc_asprintf(var, "%s at out-temp", output->name);
>        temp->data.mode = nir_var_global;
> 



More information about the mesa-dev mailing list