OSDN Git Service

Fix scalar times matrix.
authorNicolas Capens <capn@google.com>
Fri, 1 Apr 2016 17:30:37 +0000 (13:30 -0400)
committerNicolas Capens <capn@google.com>
Fri, 1 Apr 2016 18:35:20 +0000 (18:35 +0000)
Change-Id: I9b46031f57b0cf49428e295b06702099ffef7f01
Reviewed-on: https://swiftshader-review.googlesource.com/5030
Tested-by: Nicolas Capens <capn@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
src/OpenGL/compiler/OutputASM.cpp

index 52c1b87..f9fa84d 100644 (file)
@@ -727,10 +727,21 @@ namespace glsl
                case EOpMatrixTimesScalar:\r
                        if(visit == PostVisit)\r
                        {\r
-                               for(int i = 0; i < leftType.getNominalSize(); i++)\r
+                               if(left->isMatrix())\r
                                {\r
-                                       emit(sw::Shader::OPCODE_MUL, result, i, left, i, right);\r
+                                       for(int i = 0; i < leftType.getNominalSize(); i++)\r
+                                       {\r
+                                               emit(sw::Shader::OPCODE_MUL, result, i, left, i, right, 0);\r
+                                       }\r
                                }\r
+                               else if(right->isMatrix())\r
+                               {\r
+                                       for(int i = 0; i < rightType.getNominalSize(); i++)\r
+                                       {\r
+                                               emit(sw::Shader::OPCODE_MUL, result, i, left, 0, right, i);\r
+                                       }\r
+                               }\r
+                               else UNREACHABLE(0);\r
                        }\r
                        break;\r
                case EOpVectorTimesMatrix:\r