[Mesa-dev] [PATCH] glsl: fix counting of vertex shader output slots used by explicit vars

Nicolai Hähnle nhaehnle at gmail.com
Mon Aug 28 08:31:49 UTC 2017


On 27.08.2017 06:12, Ilia Mirkin wrote:
> The argument to count_attribute_slots should only be set to true for
> vertex inputs, not for all vertex shader varyings.
> 
> Fixes KHR-GL45.enhanced_layouts.varying_locations
> 
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> Cc: mesa-stable at lists.freedesktop.org

Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>



> ---
>   src/compiler/glsl/link_varyings.cpp | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/src/compiler/glsl/link_varyings.cpp b/src/compiler/glsl/link_varyings.cpp
> index 6c9a3d12d1d..528506fd0eb 100644
> --- a/src/compiler/glsl/link_varyings.cpp
> +++ b/src/compiler/glsl/link_varyings.cpp
> @@ -2072,7 +2072,8 @@ reserved_varying_slot(struct gl_linked_shader *stage,
>         var_slot = var->data.location - VARYING_SLOT_VAR0;
>   
>         unsigned num_elements = get_varying_type(var, stage->Stage)
> -         ->count_attribute_slots(stage->Stage == MESA_SHADER_VERTEX);
> +         ->count_attribute_slots(io_mode == ir_var_shader_in &&
> +                                 stage->Stage == MESA_SHADER_VERTEX);
>         for (unsigned i = 0; i < num_elements; i++) {
>            if (var_slot >= 0 && var_slot < MAX_VARYINGS_INCL_PATCH)
>               slots |= UINT64_C(1) << var_slot;
> 


-- 
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.


More information about the mesa-dev mailing list