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>
24PXR_NAMESPACE_OPEN_SCOPE
29using 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;
104PXR_NAMESPACE_CLOSE_SCOPE
Tracks the set of lofted outputs (outputs whose values were sourced from the page cache during evalua...
size_t GetSize() const
Returns the number of outputs lofted into the page cache.
EF_API bool Add(const VdfOutput &output, const VdfMask &mask)
Adds an output to the set of lofted outputs.
EF_API void Clear()
Removes all outputs from the set of lofted outputs.
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 RemoveAllOutputsForNode(const VdfNode &node)
Removes all outputs on node from the set of lofted outputs.
EF_API void CollectLoftedDependencies(const VdfOutputToMaskMap &deps, VdfMaskedOutputVector *processedRequest) const
Inserts any lofted outputs in deps into processedRequest.
EF_API void Resize(const VdfNetwork &network)
Allocates storage to accommodate the maximum capacity of the network.
A VdfMask is placed on connections to specify the data flowing through them.
Class to hold on to an externally owned output and a mask.
A VdfNetwork is a collection of VdfNodes and their connections.
This is the base class for all nodes in a VdfNetwork.
A VdfOutput represents an output on a node.
uint64_t VdfId
The unique identifier type for Vdf objects.
std::unordered_map< const VdfOutput *, VdfMask, TfHash > VdfOutputToMaskMap
A map from output pointer to mask.