Update to June 11 2013 code drop.
This should fix the hang bug we've been seeing.
diff --git a/src/Shader/VertexProgram.cpp b/src/Shader/VertexProgram.cpp
index 0d93220..6075d1f 100644
--- a/src/Shader/VertexProgram.cpp
+++ b/src/Shader/VertexProgram.cpp
@@ -1,6 +1,6 @@
// SwiftShader Software Renderer
//
-// Copyright(c) 2005-2012 TransGaming Inc.
+// Copyright(c) 2005-2013 TransGaming Inc.
//
// All rights reserved. No part of this software may be copied, distributed, transmitted,
// transcribed, stored in a retrieval system, translated into any human or computer
@@ -830,20 +830,23 @@
Int4 VertexProgram::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;