naga-agal: Fix Opcode::Rcp implementation
MathFunction::Inverse doesn't work on vectors.
This commit is contained in:
parent
2dcd783261
commit
d2f0787c2c
|
@ -1309,12 +1309,22 @@ impl<'a> NagaBuilder<'a> {
|
||||||
}
|
}
|
||||||
Opcode::Rcp => {
|
Opcode::Rcp => {
|
||||||
let source = self.emit_source_field_load(source1, true)?;
|
let source = self.emit_source_field_load(source1, true)?;
|
||||||
let rcp = self.evaluate_expr(Expression::Math {
|
|
||||||
fun: MathFunction::Inverse,
|
let f32_one = self
|
||||||
arg: source,
|
.func
|
||||||
arg1: None,
|
.expressions
|
||||||
arg2: None,
|
.append(Expression::Literal(Literal::F32(1.0)), Span::UNDEFINED);
|
||||||
arg3: None,
|
|
||||||
|
let vec_one = self.evaluate_expr(Expression::Splat {
|
||||||
|
size: naga::VectorSize::Quad,
|
||||||
|
value: f32_one,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Perform 'vec4(1.0, 1.0, 1.0. 1.0) / src'
|
||||||
|
let rcp = self.evaluate_expr(Expression::Binary {
|
||||||
|
op: BinaryOperator::Divide,
|
||||||
|
left: vec_one,
|
||||||
|
right: source,
|
||||||
});
|
});
|
||||||
self.emit_dest_store(dest, rcp)?;
|
self.emit_dest_store(dest, rcp)?;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue