[Mesa-dev] [PATCH] glsl: Make sure that packed varyings reflect always_active_io properly.
Timothy Arceri
tarceri at itsqueeze.com
Sat Jun 23 00:21:08 UTC 2018
Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>
On 23/06/18 06:11, Eric Anholt wrote:
> The always_active_io flag was only set according to the first variable
> that got packed in, so NIR io compaction would end up compacting XFB
> varyings that shouldn't move at that point.
> ---
>
> This doesn't fix my XFB issues on V3D, but seems like a step in the
> right direction. Packing always_active_io variables with
> non-always_active_io variables seems questionable to me, though.
>
> src/compiler/glsl/lower_packed_varyings.cpp | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/src/compiler/glsl/lower_packed_varyings.cpp b/src/compiler/glsl/lower_packed_varyings.cpp
> index 5c1eed719f26..5bd6c92ed992 100644
> --- a/src/compiler/glsl/lower_packed_varyings.cpp
> +++ b/src/compiler/glsl/lower_packed_varyings.cpp
> @@ -729,12 +729,17 @@ lower_packed_varyings_visitor::get_packed_varying_deref(
> unpacked_var->insert_before(packed_var);
> this->packed_varyings[slot] = packed_var;
> } else {
> + ir_variable *var = this->packed_varyings[slot];
> +
> + /* The slot needs to be marked as always active if any variable that got
> + * packed there was.
> + */
> + var->data.always_active_io |= unpacked_var->data.always_active_io;
> +
> /* For geometry shader inputs, only update the packed variable name the
> * first time we visit each component.
> */
> if (this->gs_input_vertices == 0 || vertex_index == 0) {
> - ir_variable *var = this->packed_varyings[slot];
> -
> if (var->is_name_ralloced())
> ralloc_asprintf_append((char **) &var->name, ",%s", name);
> else
>
More information about the mesa-dev
mailing list