7#ifndef PXR_EXEC_EXEC_REQUEST_IMPL_H
8#define PXR_EXEC_EXEC_REQUEST_IMPL_H
12#include "pxr/exec/exec/api.h"
13#include "pxr/exec/exec/request.h"
16#include "pxr/base/tf/bits.h"
17#include "pxr/base/tf/pxrTslRobinMap/robin_map.h"
25PXR_NAMESPACE_OPEN_SCOPE
29struct Exec_AttributeValueInvalidationResult;
31struct Exec_DisconnectedInputsInvalidationResult;
32struct Exec_MetadataInvalidationResult;
33class Exec_TimeChangeInvalidationResult;
34class Exec_ValueExtractor;
37template <
typename>
class TfSpan;
54 const Exec_AttributeValueInvalidationResult &invalidationResult);
60 const Exec_MetadataInvalidationResult &invalidationResult);
66 const Exec_DisconnectedInputsInvalidationResult &invalidationResult);
75 const Exec_TimeChangeInvalidationResult &invalidationResult);
88 ExecRequestComputedValueInvalidationCallback &&valueCallback,
89 ExecRequestTimeChangeInvalidationCallback &&timeCallback);
114 ExecValueOverrideVector &&valueOverrides);
143 void _BuildLeafNodeToIndexMap(
145 const std::vector<const EfLeafNode*> &leafNodes);
150 void _InvalidateLeafOutputs(
151 bool isNewlyInvalidInterval,
158 void _InvalidateScheduleForLeafNodes(
166 std::vector<VdfMaskedOutput> _leafOutputs;
169 std::vector<Exec_ValueExtractor> _extractors;
176 std::unique_ptr<VdfRequest> _computeRequest;
179 std::unique_ptr<VdfSchedule> _schedule;
185 TfBits _lastInvalidatedIndices;
188 ExecRequestComputedValueInvalidationCallback _valueCallback;
191 ExecRequestTimeChangeInvalidationCallback _timeCallback;
194PXR_NAMESPACE_CLOSE_SCOPE
A terminal node, which is never executed.
A class that represents a point in time for execution.
A class that represents an interval in EfTime.
A view into values cached by ExecSystem.
Contains data structures necessary to implement exec requests that are independent of scene descripti...
EXEC_API void _Schedule()
Builds the schedule for the request.
void DidInvalidateComputedValues(const Exec_AttributeValueInvalidationResult &invalidationResult)
Notify the request of invalid computed values as a consequence of attribute authored value invalidati...
void Expire()
Expires all request indices and discards the request.
EXEC_API Exec_CacheView _Compute()
Computes the value keys in the request.
EXEC_API void _ExpireIndices(const ExecRequestIndexSet &expired)
Expires the indices in expired.
EXEC_API void _Discard()
Removes the request from the system.
void DidChangeTime(const Exec_TimeChangeInvalidationResult &invalidationResult)
Notify the request of time having changed.
void DidInvalidateUnknownValues()
Notify the request to invalidate value keys that don't have a compiled leaf node.
void DidInvalidateComputedValues(const Exec_DisconnectedInputsInvalidationResult &invalidationResult)
Notify the request of invalid computed values as a consequence of uncompilation.
EXEC_API Exec_CacheView _ComputeWithOverrides(ExecValueOverrideVector &&valueOverrides)
Computes the value keys in the request in the presence of the provided valueOverrides.
EXEC_API bool _RequiresCompilation() const
Returns true if the request needs to be compiled.
void DidInvalidateComputedValues(const Exec_MetadataInvalidationResult &invalidationResult)
Notify the request of invalid computed values as a consequence of metadata authored value invalidatio...
EXEC_API void _Compile(TfSpan< const ExecValueKey > valueKeys)
Compiles outputs for the value keys in the request.
Base implementation of a system to procedurally compute values based on scene description and computa...
Specifies a computed value.
Fast bit array that keeps track of the number of bits set and can find the next set in a timely manne...
Represents a range of contiguous elements.
Contains a specification of how to execute a particular VdfNetwork.
Implementation of a hash map using open-addressing and the robin hood hashing algorithm with backward...
Implementation of a hash set using open-addressing and the robin hood hashing algorithm with backward...