7#ifndef PXR_EXEC_VDF_DATA_MANAGER_BASED_EXECUTOR_H
8#define PXR_EXEC_VDF_DATA_MANAGER_BASED_EXECUTOR_H
18PXR_NAMESPACE_OPEN_SCOPE
30template<
typename DataManagerType,
typename BaseClass>
43 BaseClass(parentExecutor)
53 _dataManager.Resize(network);
65 _dataManager.SetOutputValue(output, value, mask);
74 return _dataManager.TakeOutputValue(output, value, mask);
83 _dataManager.DuplicateOutputData(sourceOutput, destOutput);
89 return _dataManager.IsEmpty();
98 return _dataManager.HasInvalidationTimestampMismatch(
99 _dataManager.GetDataHandle(source.
GetId()),
100 _dataManager.GetDataHandle(dest.
GetId()));
109 const VdfMask &mask)
const override {
110 return _dataManager.GetInputValue(connection, mask);
117 const VdfMask &mask)
const override {
118 return _dataManager.GetOutputValueForReading(
119 _dataManager.GetDataHandle(output.
GetId()), mask);
125 const VdfOutput &output)
const override {
126 return _dataManager.GetOrCreateOutputValueForWriting(
127 output, _dataManager.GetDataHandle(output.
GetId()));
133 const VdfId outputId,
const VdfId nodeId)
override {
134 _dataManager.ClearDataForOutput(outputId);
141 const VdfId outputId,
142 const VdfMask &invalidationMask)
const override {
143 return _dataManager.IsOutputInvalid(outputId, invalidationMask);
158 const VdfMask &invalidationMask)
160 return _dataManager.InvalidateOutput(output, invalidationMask);
169 _dataManager.UpdateInvalidationTimestamp(
170 BaseClass::GetExecutorInvalidationTimestamp());
179 const VdfMask &sourceMask)
const {
187 _dataManager.SetReferenceOutputValue(sourceValue, destOutput.
GetId());
196 _dataManager.DataManagerType::Base::Touch(output);
204 DataManagerType _dataManager;
207PXR_NAMESPACE_CLOSE_SCOPE
A class that fully represents a connection between two VdfNodes.
Base class for executors that use a data manager.
virtual bool HasInvalidationTimestampMismatch(const VdfOutput &source, const VdfOutput &dest) const
Returns true, if the invalidation timestamps between the source and dest outputs do not match,...
virtual ~VdfDataManagerBasedExecutor()
Destructor.
virtual void DuplicateOutputData(const VdfOutput &sourceOutput, const VdfOutput &destOutput)
Duplicates the output data associated with sourceOutput and copies it to destOutput.
virtual void Resize(const VdfNetwork &network) override
Resize the executor data manager to accommodate the given network.
virtual void _UpdateInvalidationTimestamp()
Called before invalidation begins to update the timestamp that will be written for every VdfOutput vi...
VdfDataManagerBasedExecutor(const VdfExecutorInterface *parentExecutor)
Construct with a parent executor.
virtual void _TouchOutput(const VdfOutput &output) const override
Mark the output as having been visited.
void _ClearDataForOutput(const VdfId outputId, const VdfId nodeId) override
Clears the data for a specific output on this executor.
virtual bool _IsOutputInvalid(const VdfId outputId, const VdfMask &invalidationMask) const override
Returns true if the output is already invalid for the given invalidationMask.
virtual bool _InvalidateOutput(const VdfOutput &output, const VdfMask &invalidationMask)
Called during invalidation to mark outputs as invalid and determine when the traversal can terminate ...
virtual VdfVector * _GetOutputValueForWriting(const VdfOutput &output) const override
Returns an output value for writing.
virtual void SetOutputValue(const VdfOutput &output, const VdfVector &value, const VdfMask &mask)
Sets the cached value for a given output.
virtual const VdfVector * _GetOutputValueForReading(const VdfOutput &output, const VdfMask &mask) const override
Returns an output value for reading.
virtual const VdfVector * _GetInputValue(const VdfConnection &connection, const VdfMask &mask) const override
Returns value for the cache that flows across connection.
virtual bool TakeOutputValue(const VdfOutput &output, VdfVector *value, const VdfMask &mask)
Transfers the value to the given output.
VdfDataManagerBasedExecutor()
Default constructor.
virtual bool IsEmpty() const
Returns true of the data manager is empty.
virtual void _SetReferenceOutputValue(const VdfOutput &destOutput, const VdfOutput &sourceOutput, const VdfMask &sourceMask) const
Called to set destOutput's buffer output to be a reference to the buffer output of sourceOutput.
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.
A VdfNetwork is a collection of VdfNodes and their connections.
A VdfOutput represents an output on a node.
VdfId GetId() const
The unique id of this output.
This class is used to abstract away knowledge of the cache data used for each node.
uint64_t VdfId
The unique identifier type for Vdf objects.