|
@@ -578,23 +578,29 @@ namespace CamelotFramework
|
|
|
report.mBasicSamplingRootEntry = basicEntries[newBasicEntries[0].entryIdx];
|
|
report.mBasicSamplingRootEntry = basicEntries[newBasicEntries[0].entryIdx];
|
|
|
finalBasicEntries.push_back(&report.mBasicSamplingRootEntry);
|
|
finalBasicEntries.push_back(&report.mBasicSamplingRootEntry);
|
|
|
|
|
|
|
|
- UINT32 curEntryIdx = 0;
|
|
|
|
|
- for(auto& curEntry : newBasicEntries)
|
|
|
|
|
|
|
+ finalBasicHierarchyTodo.push(0);
|
|
|
|
|
+
|
|
|
|
|
+ while(!finalBasicHierarchyTodo.empty())
|
|
|
{
|
|
{
|
|
|
|
|
+ UINT32 curEntryIdx = finalBasicHierarchyTodo.top();
|
|
|
|
|
+ finalBasicHierarchyTodo.pop();
|
|
|
|
|
+
|
|
|
|
|
+ TempEntry& curEntry = newBasicEntries[curEntryIdx];
|
|
|
|
|
+
|
|
|
CPUProfilerBasicSamplingEntry* basicEntry = finalBasicEntries[curEntryIdx];
|
|
CPUProfilerBasicSamplingEntry* basicEntry = finalBasicEntries[curEntryIdx];
|
|
|
|
|
|
|
|
basicEntry->childEntries.resize(curEntry.childIndexes.size());
|
|
basicEntry->childEntries.resize(curEntry.childIndexes.size());
|
|
|
UINT32 idx = 0;
|
|
UINT32 idx = 0;
|
|
|
|
|
+
|
|
|
for(auto& childIdx : curEntry.childIndexes)
|
|
for(auto& childIdx : curEntry.childIndexes)
|
|
|
{
|
|
{
|
|
|
TempEntry& childEntry = newBasicEntries[childIdx];
|
|
TempEntry& childEntry = newBasicEntries[childIdx];
|
|
|
basicEntry->childEntries[idx] = basicEntries[childEntry.entryIdx];
|
|
basicEntry->childEntries[idx] = basicEntries[childEntry.entryIdx];
|
|
|
|
|
|
|
|
finalBasicEntries.push_back(&(basicEntry->childEntries[idx]));
|
|
finalBasicEntries.push_back(&(basicEntry->childEntries[idx]));
|
|
|
|
|
+ finalBasicHierarchyTodo.push(childIdx);
|
|
|
idx++;
|
|
idx++;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- curEntryIdx++;
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -646,23 +652,29 @@ namespace CamelotFramework
|
|
|
report.mPreciseSamplingRootEntry = preciseEntries[newPreciseEntries[0].entryIdx];
|
|
report.mPreciseSamplingRootEntry = preciseEntries[newPreciseEntries[0].entryIdx];
|
|
|
finalPreciseEntries.push_back(&report.mPreciseSamplingRootEntry);
|
|
finalPreciseEntries.push_back(&report.mPreciseSamplingRootEntry);
|
|
|
|
|
|
|
|
- UINT32 curEntryIdx = 0;
|
|
|
|
|
- for(auto& curEntry : newPreciseEntries)
|
|
|
|
|
|
|
+ finalPreciseHierarchyTodo.push(0);
|
|
|
|
|
+
|
|
|
|
|
+ while(!finalPreciseHierarchyTodo.empty())
|
|
|
{
|
|
{
|
|
|
|
|
+ UINT32 curEntryIdx = finalPreciseHierarchyTodo.top();
|
|
|
|
|
+ finalPreciseHierarchyTodo.pop();
|
|
|
|
|
+
|
|
|
|
|
+ TempEntry& curEntry = newPreciseEntries[curEntryIdx];
|
|
|
|
|
+
|
|
|
CPUProfilerPreciseSamplingEntry* preciseEntry = finalPreciseEntries[curEntryIdx];
|
|
CPUProfilerPreciseSamplingEntry* preciseEntry = finalPreciseEntries[curEntryIdx];
|
|
|
|
|
|
|
|
preciseEntry->childEntries.resize(curEntry.childIndexes.size());
|
|
preciseEntry->childEntries.resize(curEntry.childIndexes.size());
|
|
|
UINT32 idx = 0;
|
|
UINT32 idx = 0;
|
|
|
|
|
+
|
|
|
for(auto& childIdx : curEntry.childIndexes)
|
|
for(auto& childIdx : curEntry.childIndexes)
|
|
|
{
|
|
{
|
|
|
TempEntry& childEntry = newPreciseEntries[childIdx];
|
|
TempEntry& childEntry = newPreciseEntries[childIdx];
|
|
|
preciseEntry->childEntries[idx] = preciseEntries[childEntry.entryIdx];
|
|
preciseEntry->childEntries[idx] = preciseEntries[childEntry.entryIdx];
|
|
|
|
|
|
|
|
finalPreciseEntries.push_back(&preciseEntry->childEntries.back());
|
|
finalPreciseEntries.push_back(&preciseEntry->childEntries.back());
|
|
|
|
|
+ finalPreciseHierarchyTodo.push(childIdx);
|
|
|
idx++;
|
|
idx++;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- curEntryIdx++;
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|