mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-22 10:17:01 +08:00
Multiple TimestampPackets handling
Change-Id: Ia5936c3d0a34b892aa4444026a5aebc681f126c2 Signed-off-by: Dunajski, Bartosz <bartosz.dunajski@intel.com>
This commit is contained in:
committed by
sys_ocldev
parent
bc4700a193
commit
73b2e947a5
58
runtime/helpers/timestamp_packet.cpp
Normal file
58
runtime/helpers/timestamp_packet.cpp
Normal file
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* Copyright (C) 2018 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "runtime/command_stream/command_stream_receiver.h"
|
||||
#include "runtime/command_stream/linear_stream.h"
|
||||
#include "runtime/helpers/kernel_commands.h"
|
||||
#include "runtime/helpers/timestamp_packet.h"
|
||||
#include "runtime/memory_manager/memory_manager.h"
|
||||
#include "runtime/utilities/tag_allocator.h"
|
||||
|
||||
using namespace OCLRT;
|
||||
|
||||
TimestampPacketContainer::TimestampPacketContainer(MemoryManager *memoryManager) : memoryManager(memoryManager){};
|
||||
|
||||
void TimestampPacketContainer::add(Node *timestampPacketNode) {
|
||||
timestampPacketNodes.push_back(timestampPacketNode);
|
||||
}
|
||||
|
||||
TimestampPacketContainer::~TimestampPacketContainer() {
|
||||
for (auto &node : timestampPacketNodes) {
|
||||
memoryManager->getTimestampPacketAllocator()->returnTag(node);
|
||||
}
|
||||
}
|
||||
|
||||
void TimestampPacketContainer::swapNodes(TimestampPacketContainer ×tampPacketContainer) {
|
||||
timestampPacketNodes.swap(timestampPacketContainer.timestampPacketNodes);
|
||||
}
|
||||
|
||||
void TimestampPacketContainer::resolveDependencies(bool clearAllDependencies) {
|
||||
std::vector<Node *> pendingNodes;
|
||||
|
||||
for (auto &node : timestampPacketNodes) {
|
||||
if (node->tag->canBeReleased() || clearAllDependencies) {
|
||||
memoryManager->getTimestampPacketAllocator()->returnTag(node);
|
||||
} else {
|
||||
pendingNodes.push_back(node);
|
||||
}
|
||||
}
|
||||
|
||||
std::swap(timestampPacketNodes, pendingNodes);
|
||||
}
|
||||
|
||||
void TimestampPacketContainer::assignAndIncrementNodesRefCounts(TimestampPacketContainer ×tampPacketContainer) {
|
||||
timestampPacketNodes = timestampPacketContainer.timestampPacketNodes;
|
||||
for (auto &node : timestampPacketNodes) {
|
||||
node->incRefCount();
|
||||
}
|
||||
}
|
||||
|
||||
void TimestampPacketContainer::makeResident(CommandStreamReceiver &commandStreamReceiver) {
|
||||
for (auto &node : timestampPacketNodes) {
|
||||
commandStreamReceiver.makeResident(*node->getGraphicsAllocation());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user