ir_to_mesa: Implement neg expression.
This commit is contained in:
@@ -47,7 +47,7 @@ extern "C" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ir_to_mesa_src_reg ir_to_mesa_undef = {
|
ir_to_mesa_src_reg ir_to_mesa_undef = {
|
||||||
PROGRAM_UNDEFINED, 0, SWIZZLE_NOOP, false,
|
PROGRAM_UNDEFINED, 0, SWIZZLE_NOOP, NEGATE_NONE, false,
|
||||||
};
|
};
|
||||||
|
|
||||||
ir_to_mesa_dst_reg ir_to_mesa_undef_dst = {
|
ir_to_mesa_dst_reg ir_to_mesa_undef_dst = {
|
||||||
@@ -184,6 +184,7 @@ ir_to_mesa_visitor::create_tree(int op,
|
|||||||
tree->right = right;
|
tree->right = right;
|
||||||
tree->v = this;
|
tree->v = this;
|
||||||
tree->src_reg.swizzle = SWIZZLE_XYZW;
|
tree->src_reg.swizzle = SWIZZLE_XYZW;
|
||||||
|
tree->src_reg.negate = 0;
|
||||||
tree->dst_reg.writemask = WRITEMASK_XYZW;
|
tree->dst_reg.writemask = WRITEMASK_XYZW;
|
||||||
ir_to_mesa_set_tree_reg(tree, PROGRAM_UNDEFINED, 0);
|
ir_to_mesa_set_tree_reg(tree, PROGRAM_UNDEFINED, 0);
|
||||||
tree->ir = ir;
|
tree->ir = ir;
|
||||||
@@ -418,6 +419,10 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
|
|||||||
this->result = this->create_tree(MB_TERM_seq_vec4_vec4, ir,
|
this->result = this->create_tree(MB_TERM_seq_vec4_vec4, ir,
|
||||||
op[0], this->result);
|
op[0], this->result);
|
||||||
break;
|
break;
|
||||||
|
case ir_unop_neg:
|
||||||
|
op[0]->src_reg.negate = ~op[0]->src_reg.negate;
|
||||||
|
this->result = op[0];
|
||||||
|
break;
|
||||||
case ir_unop_exp:
|
case ir_unop_exp:
|
||||||
this->result = this->create_tree(MB_TERM_exp_vec4, ir, op[0], NULL);
|
this->result = this->create_tree(MB_TERM_exp_vec4, ir, op[0], NULL);
|
||||||
break;
|
break;
|
||||||
|
@@ -40,6 +40,7 @@ typedef struct ir_to_mesa_src_reg {
|
|||||||
int file; /**< PROGRAM_* from Mesa */
|
int file; /**< PROGRAM_* from Mesa */
|
||||||
int index; /**< temporary index, VERT_ATTRIB_*, FRAG_ATTRIB_*, etc. */
|
int index; /**< temporary index, VERT_ATTRIB_*, FRAG_ATTRIB_*, etc. */
|
||||||
int swizzle; /**< SWIZZLE_XYZWONEZERO swizzles from Mesa. */
|
int swizzle; /**< SWIZZLE_XYZWONEZERO swizzles from Mesa. */
|
||||||
|
int negate; /**< NEGATE_XYZW mask from mesa */
|
||||||
bool reladdr; /**< Register index should be offset by address reg. */
|
bool reladdr; /**< Register index should be offset by address reg. */
|
||||||
} ir_to_mesa_src_reg;
|
} ir_to_mesa_src_reg;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user