7 #ifndef PXR_EXEC_EF_LOFTED_OUTPUT_SET_H 8 #define PXR_EXEC_EF_LOFTED_OUTPUT_SET_H 12 #include "pxr/exec/ef/api.h" 16 #include <tbb/concurrent_hash_map.h> 24 PXR_NAMESPACE_OPEN_SCOPE
29 using VdfMaskedOutputVector = std::vector<VdfMaskedOutput>;
46 return _loftedOutputs.size();
86 VdfMaskedOutputVector *processedRequest)
const;
92 using _LoftedOutputsMap = tbb::concurrent_hash_map<VdfId, VdfMask>;
93 _LoftedOutputsMap _loftedOutputs;
97 std::unique_ptr<std::atomic<uint32_t>[]> _loftedNodeRefs;
101 size_t _numLoftedNodeRefs = 0;
104 PXR_NAMESPACE_CLOSE_SCOPE
A VdfNetwork is a collection of VdfNodes and their connections.
EF_API bool Add(const VdfOutput &output, const VdfMask &mask)
Adds an output to the set of lofted outputs.
This is the base class for all nodes in a VdfNetwork.
A VdfMask is placed on connections to specify the data flowing through them.
EF_API void Clear()
Removes all outputs from the set of lofted outputs.
EF_API void CollectLoftedDependencies(const VdfOutputToMaskMap &deps, VdfMaskedOutputVector *processedRequest) const
Inserts any lofted outputs in deps into processedRequest.
size_t GetSize() const
Returns the number of outputs lofted into the page cache.
EF_API void RemoveAllOutputsForNode(const VdfNode &node)
Removes all outputs on node from the set of lofted outputs.
std::unordered_map< const VdfOutput *, VdfMask, TfHash > VdfOutputToMaskMap
A map from output pointer to mask.
Class to hold on to an externally owned output and a mask.
A VdfOutput represents an output on a node.
EF_API void Remove(const VdfId outputId, const VdfId nodeId, const VdfMask &mask)
Removes an output from the set of lofted outputs.
EF_API void Resize(const VdfNetwork &network)
Allocates storage to accommodate the maximum capacity of the network.
Tracks the set of lofted outputs (outputs whose values were sourced from the page cache during evalua...
uint64_t VdfId
The unique identifier type for Vdf objects.