Update to June 11 2013 code drop.
This should fix the hang bug we've been seeing.
diff --git a/src/Shader/PixelRoutine.cpp b/src/Shader/PixelRoutine.cpp
index def4354..1dd429e 100644
--- a/src/Shader/PixelRoutine.cpp
+++ b/src/Shader/PixelRoutine.cpp
@@ -5813,20 +5813,23 @@
Int4 PixelRoutine::enableMask(Registers &r, const Shader::Instruction *instruction)
{
Int4 enable = instruction->analysisBranch ? Int4(r.enableStack[r.enableIndex]) : Int4(0xFFFFFFFF);
-
- if(shader->containsBreakInstruction() && !whileTest && instruction->analysisBreak)
+
+ if(!whileTest)
{
- enable &= r.enableBreak;
- }
+ if(shader->containsBreakInstruction() && instruction->analysisBreak)
+ {
+ enable &= r.enableBreak;
+ }
- if(shader->containsContinueInstruction() && !whileTest && instruction->analysisContinue)
- {
- enable &= r.enableContinue;
- }
+ if(shader->containsContinueInstruction() && instruction->analysisContinue)
+ {
+ enable &= r.enableContinue;
+ }
- if(shader->containsLeaveInstruction() && instruction->analysisLeave)
- {
- enable &= r.enableLeave;
+ if(shader->containsLeaveInstruction() && instruction->analysisLeave)
+ {
+ enable &= r.enableLeave;
+ }
}
return enable;