Track TSP OOQ ownership

Signed-off-by: Bartosz Dunajski <bartosz.dunajski@intel.com>
This commit is contained in:
Bartosz Dunajski
2021-06-23 11:04:10 +00:00
committed by Compute-Runtime-Automation
parent 0d973aaaa3
commit c4a936d864
4 changed files with 33 additions and 51 deletions

View File

@ -27,20 +27,6 @@ void TimestampPacketContainer::swapNodes(TimestampPacketContainer &timestampPack
timestampPacketNodes.swap(timestampPacketContainer.timestampPacketNodes);
}
void TimestampPacketContainer::resolveDependencies(bool clearAllDependencies) {
std::vector<TagNodeBase *> pendingNodes;
for (auto node : timestampPacketNodes) {
if (node->canBeReleased() || clearAllDependencies) {
node->returnTag();
} else {
pendingNodes.push_back(node);
}
}
std::swap(timestampPacketNodes, pendingNodes);
}
void TimestampPacketContainer::assignAndIncrementNodesRefCounts(const TimestampPacketContainer &inputTimestampPacketContainer) {
auto &inputNodes = inputTimestampPacketContainer.peekNodes();
std::copy(inputNodes.begin(), inputNodes.end(), std::back_inserter(timestampPacketNodes));
@ -56,10 +42,17 @@ void TimestampPacketContainer::makeResident(CommandStreamReceiver &commandStream
}
}
void TimestampPacketDependencies::moveNodesToNewContainer(TimestampPacketContainer &timestampPacketContainer) {
timestampPacketContainer.assignAndIncrementNodesRefCounts(cacheFlushNodes);
timestampPacketContainer.assignAndIncrementNodesRefCounts(previousEnqueueNodes);
timestampPacketContainer.assignAndIncrementNodesRefCounts(barrierNodes);
timestampPacketContainer.assignAndIncrementNodesRefCounts(auxToNonAuxNodes);
timestampPacketContainer.assignAndIncrementNodesRefCounts(nonAuxToAuxNodes);
void TimestampPacketContainer::moveNodesToNewContainer(TimestampPacketContainer &timestampPacketContainer) {
TimestampPacketContainer tempContainer;
swapNodes(tempContainer);
timestampPacketContainer.assignAndIncrementNodesRefCounts(tempContainer);
}
void TimestampPacketDependencies::moveNodesToNewContainer(TimestampPacketContainer &timestampPacketContainer) {
cacheFlushNodes.moveNodesToNewContainer(timestampPacketContainer);
previousEnqueueNodes.moveNodesToNewContainer(timestampPacketContainer);
barrierNodes.moveNodesToNewContainer(timestampPacketContainer);
auxToNonAuxNodes.moveNodesToNewContainer(timestampPacketContainer);
nonAuxToAuxNodes.moveNodesToNewContainer(timestampPacketContainer);
}

View File

@ -115,8 +115,8 @@ class TimestampPacketContainer : public NonCopyableClass {
void add(TagNodeBase *timestampPacketNode);
void swapNodes(TimestampPacketContainer &timestampPacketContainer);
void assignAndIncrementNodesRefCounts(const TimestampPacketContainer &inputTimestampPacketContainer);
void resolveDependencies(bool clearAllDependencies);
void makeResident(CommandStreamReceiver &commandStreamReceiver);
void moveNodesToNewContainer(TimestampPacketContainer &timestampPacketContainer);
protected:
std::vector<TagNodeBase *> timestampPacketNodes;