Skip to content

Commit e528d79

Browse files
committed
Don`t count finished threads as active for DXIL control flow state
1 parent 9fe8cb8 commit e528d79

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

renderdoc/driver/shaders/dxil/dxil_debug.cpp

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10133,20 +10133,16 @@ rdcarray<ShaderDebugState> Debugger::ContinueDebug()
1013310133
const uint32_t threadId = ref.id;
1013410134
const uint32_t lane = threadId;
1013510135
ThreadState &thread = m_Workgroup[lane];
10136-
++countActiveThreads;
1013710136

10138-
if(thread.Finished())
10139-
{
10140-
tangle.SetThreadDead(threadId);
10141-
continue;
10142-
}
10137+
bool wasActive = !thread.Finished();
1014310138

1014410139
threadExecutionStates[threadId] = thread.GetEnteredPoints();
1014510140

1014610141
const uint32_t threadConvergencePoint = thread.GetConvergencePoint();
1014710142
// the thread activated a new convergence point
1014810143
if(threadConvergencePoint != INVALID_EXECUTION_POINT)
1014910144
{
10145+
wasActive = true;
1015010146
if(newConvergencePoint == INVALID_EXECUTION_POINT)
1015110147
{
1015210148
newConvergencePoint = threadConvergencePoint;
@@ -10162,6 +10158,7 @@ rdcarray<ShaderDebugState> Debugger::ContinueDebug()
1016210158
const DXIL::BlockArray *partialConvergentPoints = thread.GetPartialConvergencePoints();
1016310159
if(!partialConvergentPoints->empty())
1016410160
{
10161+
wasActive = true;
1016510162
if(newPartialConvergentPoints == NULL)
1016610163
{
1016710164
newPartialConvergentPoints = partialConvergentPoints;
@@ -10178,7 +10175,15 @@ rdcarray<ShaderDebugState> Debugger::ContinueDebug()
1017810175
}
1017910176

1018010177
if(thread.GetDiverged())
10178+
{
10179+
wasActive = true;
1018110180
++countDivergedThreads;
10181+
}
10182+
10183+
if(thread.Finished())
10184+
tangle.SetThreadDead(threadId);
10185+
10186+
countActiveThreads += wasActive ? 1 : 0;
1018210187
}
1018310188

1018410189
for(const ThreadReference &ref : threadRefs)

0 commit comments

Comments
 (0)