Fixed initializing the 'leave' enable mask on every shader iteration.
diff --git a/src/Shader/PixelRoutine.cpp b/src/Shader/PixelRoutine.cpp
index 2528a9c..42f6189 100644
--- a/src/Shader/PixelRoutine.cpp
+++ b/src/Shader/PixelRoutine.cpp
@@ -3781,6 +3781,11 @@
r.enableIndex = 0;
r.stackIndex = 0;
+ if(shader->containsLeaveInstruction())
+ {
+ r.enableLeave = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
+ }
+
bool out[4][4] = {false};
// Create all call site return blocks up front
diff --git a/src/Shader/PixelRoutine.hpp b/src/Shader/PixelRoutine.hpp
index de8533d..1439467 100644
--- a/src/Shader/PixelRoutine.hpp
+++ b/src/Shader/PixelRoutine.hpp
@@ -66,11 +66,6 @@
enableContinue = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
}
- if(shader && shader->containsLeaveInstruction())
- {
- enableLeave = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
- }
-
occlusion = 0;
#if PERF_PROFILE
diff --git a/src/Shader/VertexProgram.cpp b/src/Shader/VertexProgram.cpp
index 6075d1f..75dc5df 100644
--- a/src/Shader/VertexProgram.cpp
+++ b/src/Shader/VertexProgram.cpp
@@ -70,6 +70,11 @@
r.enableIndex = 0;
r.stackIndex = 0;
+ if(shader->containsLeaveInstruction())
+ {
+ r.enableLeave = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
+ }
+
// Create all call site return blocks up front
for(int i = 0; i < shader->getLength(); i++)
{
diff --git a/src/Shader/VertexRoutine.hpp b/src/Shader/VertexRoutine.hpp
index 7c174e8..17c04dd 100644
--- a/src/Shader/VertexRoutine.hpp
+++ b/src/Shader/VertexRoutine.hpp
@@ -41,11 +41,6 @@
{
enableContinue = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
}
-
- if(shader && shader->containsLeaveInstruction())
- {
- enableLeave = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
- }
}
Pointer<Byte> data;