glsl/lower_output_reads: set invariant and precise flags on temporaries
fixes a couple of deqp tests (on nvc0 and potential other drivers): dEQP-GLES3.functional.shaders.invariance.highp.common_subexpression_1 dEQP-GLES3.functional.shaders.invariance.highp.common_subexpression_2 dEQP-GLES3.functional.shaders.invariance.highp.common_subexpression_3 dEQP-GLES3.functional.shaders.invariance.mediump.common_subexpression_1 dEQP-GLES3.functional.shaders.invariance.mediump.common_subexpression_2 dEQP-GLES3.functional.shaders.invariance.mediump.common_subexpression_3 dEQP-GLES3.functional.shaders.invariance.lowp.common_subexpression_1 dEQP-GLES3.functional.shaders.invariance.lowp.common_subexpression_2 dEQP-GLES3.functional.shaders.invariance.lowp.common_subexpression_3 CC: <mesa-stable@lists.freedesktop.org> Signed-off-by: Karol Herbst <kherbst@redhat.com> Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
@@ -101,6 +101,10 @@ output_read_remover::visit(ir_dereference_variable *ir)
|
||||
void *var_ctx = ralloc_parent(ir->var);
|
||||
temp = new(var_ctx) ir_variable(ir->var->type, ir->var->name,
|
||||
ir_var_temporary);
|
||||
/* copy flags which affect arithematical precision */
|
||||
temp->data.invariant = ir->var->data.invariant;
|
||||
temp->data.precise = ir->var->data.precise;
|
||||
temp->data.precision = ir->var->data.precision;
|
||||
_mesa_hash_table_insert(replacements, ir->var, temp);
|
||||
ir->var->insert_after(temp);
|
||||
}
|
||||
|
Reference in New Issue
Block a user