7#ifndef PXR_EXEC_VDF_PARALLEL_SPECULATION_EXECUTOR_ENGINE_H
8#define PXR_EXEC_VDF_PARALLEL_SPECULATION_EXECUTOR_ENGINE_H
19PXR_NAMESPACE_OPEN_SCOPE
32template <
typename DataManagerType >
35 VdfParallelSpeculationExecutorEngine<DataManagerType>,
51 const VdfSpeculationExecutorBase &speculationExecutor,
52 DataManagerType *dataManager);
79 const typename Base::_DataHandle dataHandle,
85 void _FinalizeEvaluation() {}
94template <
typename DataManagerType >
97 const VdfSpeculationExecutorBase &speculationExecutor,
98 DataManagerType *dataManager) :
99 Base(speculationExecutor, dataManager),
101 speculationExecutor.GetNonSpeculationParentExecutor()))
106template <
typename DataManagerType >
114 const VdfSpeculationExecutorBase &speculationExecutor =
115 static_cast<const VdfSpeculationExecutorBase &
>(state.
GetExecutor());
119 return speculationExecutor.IsSpeculatingNode(&node);
122template <
typename DataManagerType >
129 Base::_executor._TouchOutput(output);
132template <
typename DataManagerType >
138 const typename Base::_DataHandle dataHandle,
150 Base::_dataManager->GetPrivateBufferData(dataHandle);
157 if (_writeBackExecutor->GetOutputValue(output, mask)) {
165 if (_writeBackExecutor->TakeOutputValue(output, value, mask)) {
170PXR_NAMESPACE_CLOSE_SCOPE
This object holds state that remains persistent during one round of network evaluation.
const VdfExecutorInterface & GetExecutor() const
The executor used for evaluation.
This object is responsible for storing the executor buffer data, comprised of the executor cache vect...
const VdfMask & GetExecutorCacheMask() const
Get the available mask.
bool HasOwnership() const
Returns true if the buffer owns the executor cache.
VdfVector * GetExecutorCache() const
Returns the executor cache stored at this buffer data instance.
void YieldOwnership()
Yields ownership of the internal vector, i.e.
Abstract base class for classes that execute a VdfNetwork to compute a requested set of values.
A VdfMask is placed on connections to specify the data flowing through them.
This is the base class for all nodes in a VdfNetwork.
A VdfOutput represents an output on a node.
The base class for all parallel executor engines.
An executor engine used for parallel speculation node evaluation, deriving from VdfParallelExecutorEn...
VdfParallelSpeculationExecutorEngine(const VdfSpeculationExecutorBase &speculationExecutor, DataManagerType *dataManager)
Constructor.
VdfParallelExecutorEngineBase< VdfParallelSpeculationExecutorEngine< DataManagerType >, DataManagerType > Base
Base class.
An OutputId is a small key object that, once obtained for a particular VdfOutput, can be used to quer...
This class is used to abstract away knowledge of the cache data used for each node.
uint32_t VdfScheduleTaskIndex
Type describing a task index.