From: Kenneth Graunke Date: Sat, 7 Jan 2017 20:55:17 +0000 (-0800) Subject: glsl: Make is_fixed_function_array actually check for varyings. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=42699e12711668a142b7acf11c168cf4301c1295;p=mesa.git 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 --- 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: