7 #ifndef PXR_EXEC_VDF_TEST_UTILS_H
8 #define PXR_EXEC_VDF_TEST_UTILS_H
74 namespace VdfTestUtils
93 :
VdfNode(network, inputSpecs, outputSpecs),
110 ValueFunction *
const _cb;
147 const VdfMask &inputDependencyMask,
157 CallbackNode(network, inputSpecs, outputSpecs, function),
158 _inputDependencyFunction(inputDependencyFunction),
159 _outputDependencyFunction(outputDependencyFunction) {
166 if (_inputDependencyFunction) {
167 return _inputDependencyFunction(
168 maskedOutput, inputConnection);
171 maskedOutput, inputConnection);
177 const VdfMask &inputDependencyMask,
179 if (_outputDependencyFunction) {
180 return _outputDependencyFunction(
181 inputConnection, inputDependencyMask, output);
184 inputConnection, inputDependencyMask, output);
189 InputDependencyFunction _inputDependencyFunction;
190 OutputDependencyFunction _outputDependencyFunction;
244 _function(function) {
252 net, _inputSpecs, _outputSpecs,
253 _function, _inputDependencyFunction, _outputDependencyFunction);
258 template <
typename T>
286 _inputDependencyFunction =
function;
295 _outputDependencyFunction =
function;
386 void _Connect(
const _NodeInput &rhs,
VdfOutput *output);
422 _EditMonitor(
Network *network) : _network(network) {}
434 void WillDelete(
const VdfNode *node)
override;
440 void WillClear()
override;
446 void DidAddNode(
const VdfNode *node)
override {}
475 void Add(
const std::string &nodeName,
const NodeType &nodeType);
482 void Add(
const std::string &nodeName,
VdfNode *customNode);
486 template <
typename T>
542 _EditMonitor _editMonitor;
570 std::vector<VdfExecutionStats::Event>>
646 ~_ExecutionStats() {}
670 std::unique_ptr<_ExecutionStats> _stats;
677 inline std::unique_ptr<VdfSpeculationExecutorBase>
683 return std::unique_ptr<VdfSpeculationExecutorBase>(
687 speculationNode, parentExecutor));
691 return std::unique_ptr<VdfSpeculationExecutorBase>(
695 speculationNode, parentExecutor));
std::vector< ExecutionStatsProcessor * > subStats
const VdfNode * GetVdfNode() const
virtual bool _IsDerivedEqual(const VdfNode &rhs) const override
CallbackNodeType & Read(const TfToken &name)
VdfNetwork & GetNetwork()
#define PXR_NAMESPACE_OPEN_SCOPE
CallbackNodeType & ComputeInputDependencyMaskCallback(const DependencyCallbackNode::InputDependencyFunction &function)
void AddInputVector(const std::string &nodeName, size_t size=1)
CallbackNode(VdfNetwork *network, const VdfInputSpecs &inputSpecs, const VdfOutputSpecs &outputSpecs, ValueFunction *const cb)
CallbackNodeType(CallbackNode::ValueFunction *function)
VDF_API _NodeOutput Output(const TfToken &outputName)
A VdfMask is placed on connections to specify the data flowing through them.
**But if you need a or simply need to know when the task has note that the like this
const VdfOutput * GetOutput(const TfToken &name) const
This is a container class used to hold on to all the nodes and to facilitate their management...
std::function< VdfMask::Bits(const VdfMaskedOutput &maskedOutput, const VdfConnection &inputConnection)> InputDependencyFunction
Executor used in speculation.
VDF_API Node & operator[](const std::string &nodeName)
VDF_API void Log(VdfExecutionStats::EventType event, VdfId nodeId, uint64_t data)
OutputAccessor(const VdfContext &context)
virtual VdfNode * NewNode(VdfNetwork *net) const
Fast, compressed bit array which is capable of performing logical operations without first decompress...
virtual void Compute(const VdfContext &context) const override
VDF_API VdfConnection * GetConnection(const std::string &connectionName)
This is a data manager for executors that uses data stored in a vector indexed by output ids...
CallbackNodeType & Out(const TfToken &name)
DependencyCallbackNode(VdfNetwork *network, const VdfInputSpecs &inputSpecs, const VdfOutputSpecs &outputSpecs, ValueFunction *function, const InputDependencyFunction &inputDependencyFunction, const OutputDependencyFunction &outputDependencyFunction)
VDF_API Node & operator>>(const _NodeInput &rhs)
VDF_API _NodeInput In(const TfToken &inputName, const VdfMask &inputMask)
VDF_API void GetProcessedStats(VdfExecutionStatsProcessor *processor) const
std::unique_ptr< VdfSpeculationExecutorBase > CreateSpeculationExecutor(const VdfSpeculationNode *speculationNode, const VdfExecutorInterface *parentExecutor)
const VdfOutput * GetOutput() const
A helper class which enables access to a VdfOutput from a VdfContext.
This class is a wrapper around a VdfNode.
ExecutionStatsProcessor()
Simple processor that processor ExecutionStats into a vector of vector of events and a vector of subs...
VDF_API void Add(const std::string &nodeName, const NodeType &nodeType)
A helper class that implements a simple callback node.
Simple wrapper around ExecutionStats that allows for logging arbitrary data for testing.
GLuint const GLchar * name
A node that pulls on a vector of value that are downstream of the current execution position...
VDF_API bool VdfIsParallelEvaluationEnabled()
void(const VdfContext &context) ValueFunction
VDF_API void LogEnd(VdfExecutionStats::EventType event, VdfId nodeId, uint64_t data)
virtual VDF_API VdfMask _ComputeOutputDependencyMask(const VdfConnection &inputConnection, const VdfMask &inputDependencyMask, const VdfOutput &output) const
CallbackNodeType & ReadWrite(const TfToken &name, const TfToken &outName)
Class to hold on to an externally owned output and a mask.
This is a data manager for executors that uses data stored in a vector indexed by output ids...
VdfOutput * GetOutput() const
A CallbackNode which allows for passing in a custom input / output dependency callback.
VDF_API void UnregisterEditMonitor(EditMonitor *monitor)
std::unordered_map< ExecutionStatsProcessor::ThreadId, std::vector< VdfExecutionStats::Event > > ThreadToEvents
#define PXR_NAMESPACE_CLOSE_SCOPE
VdfOutputSpecs & Connector(const TfToken &name)
Create an "Out" connector with the given name.
const VdfNetwork & GetNetwork() const
virtual VdfMask _ComputeOutputDependencyMask(const VdfConnection &inputConnection, const VdfMask &inputDependencyMask, const VdfOutput &output) const
const VdfNode & _GetNode(const VdfContext &context) const
VDF_API void LogBegin(VdfExecutionStats::EventType event, VdfId nodeId, uint64_t data)
std::function< VdfMask(const VdfConnection &inputConnection, const VdfMask &inputDependencyMask, const VdfOutput &output)> OutputDependencyFunction
virtual VDF_API VdfMask::Bits _ComputeInputDependencyMask(const VdfMaskedOutput &maskedOutput, const VdfConnection &inputConnection) const
This class provides an executor engine to the speculation executor.
VDF_API void AddSubStat(VdfId nodeId)
Abstract base class for classes that execute a VdfNetwork to compute a requested set of values...
VDF_API void RegisterEditMonitor(EditMonitor *monitor)
VDF_API const std::string GetNodeName(const VdfId nodeId)
CallbackNodeType & ComputeOutputDependencyMaskCallback(const DependencyCallbackNode::OutputDependencyFunction &function)
Base class for various kinds of nodes that can be created.
This class specifies a CallbackNode with a given callback function.
virtual VdfMask::Bits _ComputeInputDependencyMask(const VdfMaskedOutput &maskedOutput, const VdfConnection &inputConnection) const
Node & SetValue(int index, const T &val)
uint64_t VdfId
The unique identifier type for Vdf objects.