OSDN Git Service

Fix projected texture mapping with lod or bias.
authorNicolas Capens <capn@google.com>
Wed, 7 May 2014 03:50:46 +0000 (23:50 -0400)
committerNicolas Capens <capn@google.com>
Wed, 7 May 2014 03:50:46 +0000 (23:50 -0400)
src/Common/Version.h
src/GLES2/compiler/OutputASM.cpp

index 45da099..bde1d05 100644 (file)
@@ -1,7 +1,7 @@
 #define MAJOR_VERSION 3
 #define MINOR_VERSION 2
 #define BUILD_VERSION 6
-#define BUILD_REVISION 45159
+#define BUILD_REVISION 47125
 
 #define STRINGIFY(x) #x
 #define MACRO_STRINGIFY(x) STRINGIFY(x)
index e2d4da8..995eb16 100644 (file)
@@ -785,18 +785,17 @@ namespace sh
                                                else if(argumentCount == 3)   // bias\r
                                                {\r
                                                        Temporary proj(this);\r
-                                                       emit(sw::Shader::OPCODE_MOV, &proj, arg[1]);\r
 \r
                                                        if(t->getNominalSize() == 3)\r
                                                        {\r
-                                                               Instruction *div = emit(sw::Shader::OPCODE_DIV, &proj, &proj);\r
-                                                               div->src[0].swizzle = 0xAA;\r
+                                                               Instruction *div = emit(sw::Shader::OPCODE_DIV, &proj, arg[1], arg[1]);\r
+                                                               div->src[1].swizzle = 0xAA;\r
                                                                div->dst.mask = 0x3;\r
                                                        }\r
                                                        else if(t->getNominalSize() == 4)\r
                                                        {\r
-                                                               Instruction *div = emit(sw::Shader::OPCODE_DIV, &proj, &proj);\r
-                                                               div->src[0].swizzle = 0xFF;\r
+                                                               Instruction *div = emit(sw::Shader::OPCODE_DIV, &proj, arg[1], arg[1]);\r
+                                                               div->src[1].swizzle = 0xFF;\r
                                                                div->dst.mask = 0x3;\r
                                                        }\r
                                                        else UNREACHABLE();\r
@@ -821,20 +820,18 @@ namespace sh
                     else if(name == "texture2DProjLod")\r
                     {\r
                         TIntermTyped *t = arg[1]->getAsTyped();\r
-\r
                                                Temporary proj(this);\r
-                                               emit(sw::Shader::OPCODE_MOV, &proj, arg[1]);\r
 \r
                                                if(t->getNominalSize() == 3)\r
                                                {\r
-                                                       Instruction *div = emit(sw::Shader::OPCODE_DIV, &proj, &proj);\r
-                                                       div->src[0].swizzle = 0xAA;\r
+                                                       Instruction *div = emit(sw::Shader::OPCODE_DIV, &proj, arg[1], arg[1]);\r
+                                                       div->src[1].swizzle = 0xAA;\r
                                                        div->dst.mask = 0x3;\r
                                                }\r
                                                else if(t->getNominalSize() == 4)\r
                                                {\r
-                                                       Instruction *div = emit(sw::Shader::OPCODE_DIV, &proj, &proj);\r
-                                                       div->src[0].swizzle = 0xFF;\r
+                                                       Instruction *div = emit(sw::Shader::OPCODE_DIV, &proj, arg[1], arg[1]);\r
+                                                       div->src[1].swizzle = 0xFF;\r
                                                        div->dst.mask = 0x3;\r
                                                }\r
                                                else UNREACHABLE();\r