From 6d5f7557fb45d56e38f7e19060e05de4c77a9ee5 Mon Sep 17 00:00:00 2001 From: Timothy Arceri Date: Tue, 17 May 2016 11:29:40 +1000 Subject: [PATCH] glsl: fix location and component packing validation on patches These varyings have a separate location domain from per-vertex varyings and need to be handled separately. Reviewed-by: Dave Airlie --- src/compiler/glsl/link_varyings.cpp | 3 ++- src/compiler/shader_enums.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/compiler/glsl/link_varyings.cpp b/src/compiler/glsl/link_varyings.cpp index 003b9d4..572aba9 100644 --- a/src/compiler/glsl/link_varyings.cpp +++ b/src/compiler/glsl/link_varyings.cpp @@ -350,7 +350,8 @@ cross_validate_outputs_to_inputs(struct gl_shader_program *prog, gl_shader *producer, gl_shader *consumer) { glsl_symbol_table parameters; - ir_variable *explicit_locations[MAX_VARYING][4] = { {NULL, NULL} }; + ir_variable *explicit_locations[MAX_VARYINGS_INCL_PATCH][4] = + { {NULL, NULL} }; /* Find all shader outputs in the "producer" stage. */ diff --git a/src/compiler/shader_enums.h b/src/compiler/shader_enums.h index e93345d..df3124e 100644 --- a/src/compiler/shader_enums.h +++ b/src/compiler/shader_enums.h @@ -255,6 +255,7 @@ typedef enum #define VARYING_SLOT_MAX (VARYING_SLOT_VAR0 + MAX_VARYING) #define VARYING_SLOT_PATCH0 (VARYING_SLOT_MAX) #define VARYING_SLOT_TESS_MAX (VARYING_SLOT_PATCH0 + MAX_VARYING) +#define MAX_VARYINGS_INCL_PATCH (VARYING_SLOT_TESS_MAX - VARYING_SLOT_VAR0) const char *gl_varying_slot_name(gl_varying_slot slot); -- 2.7.4