7 #ifndef PXR_EXEC_VDF_SPARSE_VECTORIZED_INPUT_TRAVERSER_H
8 #define PXR_EXEC_VDF_SPARSE_VECTORIZED_INPUT_TRAVERSER_H
26 #include <unordered_map>
128 class _MasksToRequestsMap
133 _MaskToRequestBitsMap;
138 _MasksToRequestsMap(
size_t numRequests = 0)
139 : _numRequests(numRequests) {}
143 : _numRequests(requestBits.GetSize()) {
144 _maskToRequestBitsMap[
mask] = requestBits;
148 void AddMask(
const VdfMask &
mask,
size_t requestIndex) {
152 std::pair<_MaskToRequestBitsMap::iterator, bool> res =
153 _maskToRequestBitsMap.insert(std::make_pair(mask, empty));
156 res.first->second.
Resize(_numRequests);
157 res.first->second.ClearAll();
160 TF_VERIFY(!res.first->second.IsSet(requestIndex));
161 res.first->second.Set(requestIndex);
165 void AddMask(
const VdfMask &mask,
const TfBits &requestBits) {
167 std::pair<_MaskToRequestBitsMap::iterator, bool> res =
168 _maskToRequestBitsMap.insert(std::make_pair(mask, requestBits));
174 res.first->second |= requestBits;
180 const_iterator
begin()
const {
181 return _maskToRequestBitsMap.begin();
184 const_iterator
end()
const {
185 return _maskToRequestBitsMap.end();
196 _MaskToRequestBitsMap _maskToRequestBitsMap;
203 void _TraverseOutput(
205 const _MasksToRequestsMap &masks);
229 _VisitedConnections _visitedConnections;
235 std::unordered_map<const VdfOutput *, _MasksToRequestsMap, TfHash>
241 typedef std::pair<const VdfOutput *, _MasksToRequestsMap> _PrioritizedOutput;
250 std::greater<VdfPoolChainIndex> > _PrioritizedOutputMap;
252 _PrioritizedOutputMap _prioritizedOutputs;
255 _MasksToRequestsMap _emptyRequestToMaskMap;
_IteratorBase< const value_type, typename _Vector::const_iterator > const_iterator
#define PXR_NAMESPACE_OPEN_SCOPE
A VdfMask is placed on connections to specify the data flowing through them.
Fast bit array that keeps track of the number of bits set and can find the next set in a timely manne...
PcpNodeRef_ChildrenIterator begin(const PcpNodeRef::child_const_range &r)
Support for range-based for loops for PcpNodeRef children ranges.
#define PXR_NAMESPACE_CLOSE_SCOPE
std::vector< VdfMaskedOutput > VdfMaskedOutputVector