glsl: remove interpolateAt* instructions for demoted inputs
[mesa.git] / src / compiler / glsl / opt_algebraic.cpp
index f5858c838654c508ec3335b24ecf0636d0ac5f9a..2829a78251427afa9f0c775bd0d1081066cac1ef 100644 (file)
@@ -961,6 +961,16 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir)
         return ir->operands[2];
       break;
 
+   /* Remove interpolateAt* instructions for demoted inputs. They are
+    * assigned a constant expression to facilitate this.
+    */
+   case ir_unop_interpolate_at_centroid:
+   case ir_binop_interpolate_at_offset:
+   case ir_binop_interpolate_at_sample:
+      if (op_const[0])
+         return ir->operands[0];
+      break;
+
    default:
       break;
    }