diff options
author | Ilia Mirkin <[email protected]> | 2017-08-27 00:09:31 -0400 |
---|---|---|
committer | Ilia Mirkin <[email protected]> | 2017-08-28 09:07:40 -0400 |
commit | eefeff09a784eb139cbf682b98926c0eaa00eb21 (patch) | |
tree | 931456cd117ce6d4fecd0b06646ae11f1e64d112 | |
parent | 5dd072380ad9fc20e93248ac8a268fe826339791 (diff) |
glsl: fix counting of vertex shader output slots used by explicit vars
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 <[email protected]>
Reviewed-by: Timothy Arceri <[email protected]>
Reviewed-by: Nicolai Hähnle <[email protected]>
Cc: [email protected]
-rw-r--r-- | src/compiler/glsl/link_varyings.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
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; |