glsl: remove interpolateAt* instructions for demoted inputs

This fixes 8 fs-interpolateat* piglit crashes on radeonsi, because it can't
handle non-input operands in interpolateAt*.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
Marek Olšák
2016-09-09 02:04:00 +02:00
parent d58a3906cb
commit ae0a4a1299
2 changed files with 15 additions and 0 deletions

View File

@@ -593,6 +593,11 @@ remove_unused_shader_inputs_and_outputs(bool is_separate_shader_object,
*/
if (var->data.is_unmatched_generic_inout && !var->data.is_xfb_only) {
assert(var->data.mode != ir_var_temporary);
/* Assign zeros to demoted inputs to allow more optimizations. */
if (var->data.mode == ir_var_shader_in && !var->constant_value)
var->constant_value = ir_constant::zero(var, var->type);
var->data.mode = ir_var_auto;
}
}