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 <kenneth@whitecape.org>
This commit is contained in:
Kenneth Graunke 2017-01-07 12:55:17 -08:00
parent 5a165b4086
commit 42699e1271
1 changed files with 4 additions and 0 deletions

View File

@ -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: