46 lines
1.5 KiB
C++
46 lines
1.5 KiB
C++
/*
|
|
* Copyright (C) 2023 Intel Corporation
|
|
*
|
|
* SPDX-License-Identifier: MIT
|
|
*
|
|
*/
|
|
|
|
#pragma once
|
|
#include "shared/source/helpers/non_copyable_or_moveable.h"
|
|
#include "shared/source/utilities/stackvec.h"
|
|
|
|
namespace NEO {
|
|
|
|
class CommandStreamReceiver;
|
|
class TagNodeBase;
|
|
|
|
class TimestampPacketContainer : public NonCopyableClass {
|
|
public:
|
|
TimestampPacketContainer() = default;
|
|
TimestampPacketContainer(TimestampPacketContainer &&) = default;
|
|
TimestampPacketContainer &operator=(TimestampPacketContainer &&) = default;
|
|
MOCKABLE_VIRTUAL ~TimestampPacketContainer();
|
|
|
|
const StackVec<TagNodeBase *, 32u> &peekNodes() const { return timestampPacketNodes; }
|
|
void add(TagNodeBase *timestampPacketNode);
|
|
void swapNodes(TimestampPacketContainer ×tampPacketContainer);
|
|
void assignAndIncrementNodesRefCounts(const TimestampPacketContainer &inputTimestampPacketContainer);
|
|
void makeResident(CommandStreamReceiver &commandStreamReceiver);
|
|
void moveNodesToNewContainer(TimestampPacketContainer ×tampPacketContainer);
|
|
void releaseNodes();
|
|
|
|
protected:
|
|
StackVec<TagNodeBase *, 32u> timestampPacketNodes;
|
|
};
|
|
|
|
struct TimestampPacketDependencies : public NonCopyableClass {
|
|
TimestampPacketContainer cacheFlushNodes;
|
|
TimestampPacketContainer previousEnqueueNodes;
|
|
TimestampPacketContainer barrierNodes;
|
|
TimestampPacketContainer auxToNonAuxNodes;
|
|
TimestampPacketContainer nonAuxToAuxNodes;
|
|
|
|
void moveNodesToNewContainer(TimestampPacketContainer ×tampPacketContainer);
|
|
};
|
|
|
|
} // namespace NEO
|