nir/spirv: Properly handle vector times matrix
authorJason Ekstrand <jason.ekstrand@intel.com>
Wed, 23 Dec 2015 21:17:18 +0000 (13:17 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Wed, 23 Dec 2015 21:49:56 +0000 (13:49 -0800)
src/glsl/nir/spirv_to_nir.c

index 91667e1122580fa1ae5fe3bc12e5e70f0c01eaee..a6b770ef2b79fecba11a2ff9110b522798afbf5e 100644 (file)
@@ -2493,7 +2493,11 @@ vtn_handle_matrix_alu(struct vtn_builder *b, SpvOp opcode,
       struct vtn_ssa_value *src0 = vtn_ssa_value(b, w[3]);
       struct vtn_ssa_value *src1 = vtn_ssa_value(b, w[4]);
 
-      val->ssa = vtn_matrix_multiply(b, src0, src1);
+      if (opcode == SpvOpVectorTimesMatrix) {
+         val->ssa = vtn_matrix_multiply(b, vtn_transpose(b, src1), src0);
+      } else {
+         val->ssa = vtn_matrix_multiply(b, src0, src1);
+      }
       break;
    }