Commit 4677a5f7 by Nicolas Capens

Fixed initializing the 'leave' enable mask on every shader iteration.

parent b5e7a2a0
...@@ -3781,6 +3781,11 @@ namespace sw ...@@ -3781,6 +3781,11 @@ namespace sw
r.enableIndex = 0; r.enableIndex = 0;
r.stackIndex = 0; r.stackIndex = 0;
if(shader->containsLeaveInstruction())
{
r.enableLeave = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
}
bool out[4][4] = {false}; bool out[4][4] = {false};
// Create all call site return blocks up front // Create all call site return blocks up front
......
...@@ -66,11 +66,6 @@ namespace sw ...@@ -66,11 +66,6 @@ namespace sw
enableContinue = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF); enableContinue = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
} }
if(shader && shader->containsLeaveInstruction())
{
enableLeave = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
}
occlusion = 0; occlusion = 0;
#if PERF_PROFILE #if PERF_PROFILE
......
...@@ -70,6 +70,11 @@ namespace sw ...@@ -70,6 +70,11 @@ namespace sw
r.enableIndex = 0; r.enableIndex = 0;
r.stackIndex = 0; r.stackIndex = 0;
if(shader->containsLeaveInstruction())
{
r.enableLeave = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
}
// Create all call site return blocks up front // Create all call site return blocks up front
for(int i = 0; i < shader->getLength(); i++) for(int i = 0; i < shader->getLength(); i++)
{ {
......
...@@ -41,11 +41,6 @@ namespace sw ...@@ -41,11 +41,6 @@ namespace sw
{ {
enableContinue = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF); enableContinue = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
} }
if(shader && shader->containsLeaveInstruction())
{
enableLeave = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
}
} }
Pointer<Byte> data; Pointer<Byte> data;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment