7 #ifndef PXR_EXEC_VDF_EXECUTOR_INVALIDATOR_H
8 #define PXR_EXEC_VDF_EXECUTOR_INVALIDATOR_H
70 explicit _Visited(uint32_t ts) : timestamp(ts),
index(0) {}
77 struct _PoolDependency {
83 struct _Dependencies {
93 explicit _ReplayEntry(
const VdfOutput *o) : output(o) {}
101 struct _ReplayCache {
102 std::vector<_ReplayEntry> entries;
108 using _VisitedMap = std::vector<_Visited>;
111 using _OutputStack = std::vector<VdfMaskedOutput>;
114 using _PoolQueue = std::map<const VdfPoolChainIndex, VdfMaskedOutput>;
127 uint32_t *_Visit(
const VdfMaskedOutput &maskedOutput, uint32_t nextIndex);
132 _ReplayCache *replayCache);
135 bool _TraverseOutput(
143 bool _Replay(
const _ReplayCache &replayCache);
147 const _Dependencies &_GetDependencies(
151 void _ComputeDependencies(
153 _Dependencies *dependencies);
159 _VisitedMap _visited;
168 _DependencyMap _dependencyMap;
173 _ReplayLRU _replayLRU;
#define PXR_NAMESPACE_OPEN_SCOPE
A VdfMask is placed on connections to specify the data flowing through them.
VdfExecutorInvalidator(VdfExecutorInterface *executor)
*get result *(waiting if necessary)*A common idiom is to fire a bunch of sub tasks at the queue
Class to hold on to an externally owned output and a mask.
#define PXR_NAMESPACE_CLOSE_SCOPE
Abstract base class for classes that execute a VdfNetwork to compute a requested set of values...
std::vector< VdfMaskedOutput > VdfMaskedOutputVector
VDF_API void Invalidate(const VdfMaskedOutputVector &request)