2023-01-20 13:01:19 +00:00
|
|
|
/*
|
2024-04-30 10:55:44 +00:00
|
|
|
* Copyright (C) 2023-2024 Intel Corporation
|
2023-01-20 13:01:19 +00:00
|
|
|
*
|
|
|
|
|
* SPDX-License-Identifier: MIT
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
#include "shared/source/helpers/non_copyable_or_moveable.h"
|
2023-02-03 16:43:19 +00:00
|
|
|
#include "shared/source/utilities/stackvec.h"
|
2023-01-20 13:01:19 +00:00
|
|
|
|
|
|
|
|
namespace NEO {
|
|
|
|
|
|
2023-02-03 16:43:19 +00:00
|
|
|
class CommandStreamReceiver;
|
2023-01-20 13:01:19 +00:00
|
|
|
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);
|
2023-05-24 15:23:48 +00:00
|
|
|
void releaseNodes();
|
2023-01-20 13:01:19 +00:00
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
StackVec<TagNodeBase *, 32u> timestampPacketNodes;
|
|
|
|
|
};
|
|
|
|
|
|
2023-01-20 17:45:04 +00:00
|
|
|
struct TimestampPacketDependencies : public NonCopyableClass {
|
|
|
|
|
TimestampPacketContainer cacheFlushNodes;
|
|
|
|
|
TimestampPacketContainer previousEnqueueNodes;
|
|
|
|
|
TimestampPacketContainer barrierNodes;
|
|
|
|
|
TimestampPacketContainer auxToNonAuxNodes;
|
|
|
|
|
TimestampPacketContainer nonAuxToAuxNodes;
|
2024-05-09 11:17:06 +00:00
|
|
|
TimestampPacketContainer multiCsrDependencies;
|
2023-01-20 17:45:04 +00:00
|
|
|
|
|
|
|
|
void moveNodesToNewContainer(TimestampPacketContainer ×tampPacketContainer);
|
|
|
|
|
};
|
|
|
|
|
|
2023-01-20 13:01:19 +00:00
|
|
|
} // namespace NEO
|