7 #ifndef PXR_EXEC_EF_MASKED_SUB_EXECUTOR_H
8 #define PXR_EXEC_EF_MASKED_SUB_EXECUTOR_H
21 #include <tbb/concurrent_unordered_map.h>
66 virtual ~EfMaskedSubExecutor();
117 const VdfMask &invalidationMask)
override;
143 const VdfId outputId,
144 const VdfMask &invalidationMask)
const override;
148 static const _Factory _factory;
154 using _InvalidOutputs = tbb::concurrent_unordered_map<VdfId, VdfMask>;
155 _InvalidOutputs _invalidOutputs;
161 EfMaskedSubExecutor::_GetOutputValueForReading(
168 _InvalidOutputs::const_iterator it =
169 _invalidOutputs.find(output.
GetId());
170 if (parentExecutor &&
171 (it == _invalidOutputs.end() || !it->second.Overlaps(mask))) {
virtual bool _InvalidateOutput(const VdfOutput &output, const VdfMask &invalidationMask)=0
#define PXR_NAMESPACE_OPEN_SCOPE
friend class VdfSpeculationExecutorEngine
A VdfMask is placed on connections to specify the data flowing through them.
An abstract base class for executors, which do not store any data at all. This class mainly serves th...
Executor used in speculation.
virtual void _Run(const VdfSchedule &schedule, const VdfRequest &computeRequest, VdfExecutorErrorLogger *errorLogger)=0
This is a data manager for executors that uses data stored in a vector indexed by output ids...
Contains a specification of how to execute a particular VdfNetwork.
GLsizei GLsizei GLchar * source
virtual void _ClearData() override
const VdfExecutorFactoryBase & GetFactory() const override
virtual bool IsEmpty() const override
virtual bool HasInvalidationTimestampMismatch(const VdfOutput &source, const VdfOutput &dest) const =0
This sub-executor masks the parent executor. It is a dataless executor, i.e. it does not hold on to a...
const VdfVector * GetOutputValue(const VdfOutput &output, const VdfMask &mask) const
#define PXR_NAMESPACE_CLOSE_SCOPE
virtual bool _IsOutputInvalid(const VdfId outputId, const VdfMask &invalidationMask) const =0
Abstract base class for classes that execute a VdfNetwork to compute a requested set of values...
virtual const VdfVector * _GetOutputValueForReading(const VdfOutput &output, const VdfMask &mask) const override
virtual void DuplicateOutputData(const VdfOutput &sourceOutput, const VdfOutput &destOutput)=0
const VdfExecutorInterface * GetParentExecutor() const
virtual bool HasInvalidationTimestampMismatch(const VdfOutput &source, const VdfOutput &dest) const override
uint64_t VdfId
The unique identifier type for Vdf objects.