From 42699e12711668a142b7acf11c168cf4301c1295 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Sat, 7 Jan 2017 12:55:17 -0800 Subject: [PATCH] glsl: Make is_fixed_function_array actually check for varyings. We can't check VARYING_SLOT_* locations until we've determined that the variable is actually a varying. Fixes assert failures in drivers which actually use this path, such as radeonsi and i915. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99314 Signed-off-by: Kenneth Graunke --- src/compiler/glsl/ir_set_program_inouts.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/compiler/glsl/ir_set_program_inouts.cpp b/src/compiler/glsl/ir_set_program_inouts.cpp index 376d9c693fa..354b533bdcd 100644 --- a/src/compiler/glsl/ir_set_program_inouts.cpp +++ b/src/compiler/glsl/ir_set_program_inouts.cpp @@ -337,6 +337,10 @@ is_multiple_vertices(gl_shader_stage stage, ir_variable *var) static bool is_fixed_function_array(ir_variable *var) { + if (var->data.mode != ir_var_shader_in && + var->data.mode != ir_var_shader_out) + return false; + switch (var->data.location) { case VARYING_SLOT_TESS_LEVEL_OUTER: case VARYING_SLOT_TESS_LEVEL_INNER: -- 2.30.2