OSDN Git Service

Only apply the enable mask on instructions requiring predication.
authorNicolas Capens <capn@google.com>
Wed, 7 May 2014 03:31:07 +0000 (23:31 -0400)
committerNicolas Capens <capn@google.com>
Wed, 7 May 2014 03:31:07 +0000 (23:31 -0400)
src/GLES2/libEGL/main.cpp
src/Shader/PixelRoutine.cpp
src/Shader/Shader.cpp
src/Shader/Shader.hpp
src/Shader/VertexProgram.cpp

index cb3db37..52a7dde 100644 (file)
@@ -115,6 +115,7 @@ extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved
     switch(reason)\r
     {\r
     case DLL_PROCESS_ATTACH:\r
+       //      MessageBoxA(0, "Attach debugger now and press OK", "SwiftShader loaded", MB_OK);\r
         return eglAttachProcess();\r
         break;\r
     case DLL_THREAD_ATTACH:\r
index 42f6189..bb0b862 100644 (file)
@@ -4007,7 +4007,7 @@ namespace sw
                                        if(dst.w) d.w = Min(d.w, Float4(1.0f));
                                }
 
-                               if(shader->containsDynamicBranching())
+                               if(instruction->isPredicated())
                                {
                                        Vector4f pDst;   // FIXME: Rename
 
index 7f0f68f..da0a84f 100644 (file)
@@ -1024,6 +1024,15 @@ namespace sw
                return opcode == OPCODE_ENDLOOP || opcode == OPCODE_ENDREP || opcode == OPCODE_ENDWHILE;
        }
 
+       bool Shader::Instruction::isPredicated() const
+       {
+               return predicate ||
+                      analysisBranch ||
+                      analysisBreak ||
+                      analysisContinue ||
+                      analysisLeave;
+       }
+
        Shader::Shader() : serialID(serialCounter++)
        {
                usedSamplers = 0;
index e785d12..6486ed9 100644 (file)
@@ -430,6 +430,8 @@ namespace sw
                        bool isLoop() const;\r
                        bool isEndLoop() const;\r
 \r
+                       bool isPredicated() const;\r
+\r
                        Opcode opcode;\r
                        \r
                        union\r
index 75dc5df..a07fbb5 100644 (file)
@@ -283,7 +283,7 @@ namespace sw
                                        if(dst.w) d.w = Min(d.w, Float4(1.0f));
                                }
 
-                               if(shader->containsDynamicBranching())
+                               if(instruction->isPredicated())
                                {
                                        Vector4f pDst;   // FIXME: Rename