From cf6002be01e467585992be9d481b53dd23703417 Mon Sep 17 00:00:00 2001 From: Dzmitry Malyshau Date: Wed, 26 Aug 2020 23:14:52 -0400 Subject: [PATCH] [spirv] dot product and a few more GLSL ops --- src/front/spv/mod.rs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/front/spv/mod.rs b/src/front/spv/mod.rs index 36f3405ce4..e3fc1a6f22 100644 --- a/src/front/spv/mod.rs +++ b/src/front/spv/mod.rs @@ -763,6 +763,23 @@ impl> Parser { }, ); } + Op::Dot => { + inst.expect(5)?; + let result_type_id = self.next()?; + let result_id = self.next()?; + let left_id = self.next()?; + let right_id = self.next()?; + let left_expr = self.lookup_expression.lookup(left_id)?; + let right_expr = self.lookup_expression.lookup(right_id)?; + let expr = crate::Expression::DotProduct(left_expr.handle, right_expr.handle); + self.lookup_expression.insert( + result_id, + LookupExpression { + handle: expressions.append(expr), + type_id: result_type_id, + }, + ); + } Op::SampledImage => { inst.expect(5)?; let _result_type_id = self.next()?; @@ -1030,6 +1047,10 @@ impl> Parser { inst.expect(base_wc + 1)?; "atan2" } + Some(spirv::GLOp::Pow) => { + inst.expect(base_wc + 2)?; + "pow" + } Some(spirv::GLOp::MatrixInverse) => { inst.expect(base_wc + 1)?; "inverse" @@ -1042,6 +1063,18 @@ impl> Parser { inst.expect(base_wc + 3)?; "smoothstep" } + Some(spirv::GLOp::FMin) => { + inst.expect(base_wc + 2)?; + "min" + } + Some(spirv::GLOp::FMax) => { + inst.expect(base_wc + 2)?; + "max" + } + Some(spirv::GLOp::FClamp) => { + inst.expect(base_wc + 3)?; + "clamp" + } Some(spirv::GLOp::Length) => { inst.expect(base_wc + 1)?; "length"