7 #ifndef PXR_EXEC_VDF_EXECUTOR_API_H
8 #define PXR_EXEC_VDF_EXECUTOR_API_H
121 virtual void SetOutputValue(
132 virtual bool TakeOutputValue(
144 return _GetOutputValueForReading(output, mask);
150 virtual void DuplicateOutputData(
163 return _parentExecutor;
189 void InvalidateValues(
203 void InvalidateTopologicalState();
213 void ClearDataForOutput(
const VdfId outputId,
const VdfId nodeId);
217 virtual bool IsEmpty()
const = 0;
229 ++_executorInvalidationTimestamp;
235 _executorInvalidationTimestamp =
242 return _executorInvalidationTimestamp;
249 virtual bool HasInvalidationTimestampMismatch(
262 _interruptionFlag = interruptionFlag;
268 return _interruptionFlag;
276 return _interruptionFlag && _interruptionFlag->load();
330 virtual const VdfVector *_GetOutputValueForReading(
336 virtual VdfVector *_GetOutputValueForWriting(
342 virtual bool _IsOutputInvalid(
343 const VdfId outputId,
344 const VdfMask &invalidationMask)
const = 0;
352 virtual bool _InvalidateOutput(
354 const VdfMask &invalidationMask) = 0;
371 virtual void _UpdateInvalidationTimestamp() = 0;
377 virtual void _ClearData();
383 virtual void _ClearDataForOutput(
const VdfId outputId,
const VdfId nodeId);
388 virtual void _SetReferenceOutputValue(
391 const VdfMask &sourceMask)
const = 0;
397 virtual void _TouchOutput(
const VdfOutput &output)
const = 0;
413 template<
template <
typename>
class E,
class D>
424 std::unique_ptr<VdfExecutorInvalidator> _invalidator;
440 mutable std::recursive_mutex _observersLock;
451 const std::atomic_bool *_interruptionFlag;
VdfExecutionStats * GetExecutionStats() const
VdfInvalidationTimestamp GetExecutorInvalidationTimestamp() const
const std::atomic_bool * GetInterruptionFlag() const
#define PXR_NAMESPACE_OPEN_SCOPE
GLsizei const GLfloat * value
virtual void Resize(const VdfNetwork &network)
A VdfMask is placed on connections to specify the data flowing through them.
This is an interface for any class that wants to listen to specific executor events, such as executor deletion, or clearing data on the executor.
Executor used in speculation.
Contains a specification of how to execute a particular VdfNetwork.
bool HasBeenInterrupted() const
GLsizei GLsizei GLchar * source
void SetInterruptionFlag(const std::atomic_bool *interruptionFlag)
A node that pulls on a vector of value that are downstream of the current execution position...
virtual bool _PreProcessInvalidation(const VdfMaskedOutputVector &invalidationRequest, VdfMaskedOutputVector *processedRequest)
void InheritExecutorInvalidationTimestamp(const VdfExecutorInterface &executor)
LeafData & operator=(const LeafData &)=delete
unsigned int VdfInvalidationTimestamp
Type of the timestamp that identifies the most recent round of invalidation.
const VdfVector * GetOutputValue(const VdfOutput &output, const VdfMask &mask) const
#define PXR_NAMESPACE_CLOSE_SCOPE
void IncrementExecutorInvalidationTimestamp()
void SetExecutionStats(VdfExecutionStats *stats)
This class provides an executor engine to the speculation executor.
This class is a collection of common functions used by pulled based executors.
Abstract base class for classes that execute a VdfNetwork to compute a requested set of values...
std::vector< VdfMaskedOutput > VdfMaskedOutputVector
const VdfExecutorInterface * GetParentExecutor() const
uint64_t VdfId
The unique identifier type for Vdf objects.