|
HDK
|
This sub-executor masks the parent executor. It is a dataless executor, i.e. it does not hold on to any data caches. It does, however, support invalidation and locally trackes invalidation state. If an output is invalid on this executor, the call to GetOutputValue() will not look up the data cache on the parent executor, and will instead return NULL. Thus, the EfMaskedSubExecutor allows for correctly tracking invalidation without affecting the invalidation state on the parent executor, potentially messing with mung buffer locking, or stomping on existing buffers. More...
#include <maskedSubExecutor.h>
Inheritance diagram for EfMaskedSubExecutor:Protected Member Functions | |
| virtual bool | _InvalidateOutput (const VdfOutput &output, const VdfMask &invalidationMask) override |
| virtual void | _ClearData () override |
Protected Member Functions inherited from VdfDatalessExecutor | |
| VDF_API | VdfDatalessExecutor () |
| virtual const VdfVector * | _GetInputValue (const VdfConnection &connection, const VdfMask &mask) const override |
| virtual VdfVector * | _GetOutputValueForWriting (const VdfOutput &output) const override |
| void | _ClearDataForOutput (const VdfId outputId, const VdfId nodeId) override |
| virtual void | _UpdateInvalidationTimestamp () override |
| virtual VDF_API void | _SetReferenceOutputValue (const VdfOutput &destOutput, const VdfOutput &sourceOutput, const VdfMask &sourceMask) const override |
| virtual void | _TouchOutput (const VdfOutput &output) const override |
Protected Member Functions inherited from VdfExecutorInterface | |
| VDF_API | VdfExecutorInterface () |
| VDF_API | VdfExecutorInterface (const VdfExecutorInterface *parentExecutor) |
| virtual bool | _PreProcessInvalidation (const VdfMaskedOutputVector &invalidationRequest, VdfMaskedOutputVector *processedRequest) |
This sub-executor masks the parent executor. It is a dataless executor, i.e. it does not hold on to any data caches. It does, however, support invalidation and locally trackes invalidation state. If an output is invalid on this executor, the call to GetOutputValue() will not look up the data cache on the parent executor, and will instead return NULL. Thus, the EfMaskedSubExecutor allows for correctly tracking invalidation without affecting the invalidation state on the parent executor, potentially messing with mung buffer locking, or stomping on existing buffers.
Definition at line 41 of file maskedSubExecutor.h.
| EF_API EfMaskedSubExecutor::EfMaskedSubExecutor | ( | const VdfExecutorInterface * | parentExecutor | ) |
Constructor
Note, this executor must be constructed with a parent executor present, because it dispatches the calls to GetOutputValue to the parent.
|
virtual |
Destructor
|
overrideprotectedvirtual |
Clears all the data caches associated with any output in the network.
This has no effect on this type of executor.
Reimplemented from VdfDatalessExecutor.
|
overrideprotectedvirtual |
Called during invalidation to mark outputs as invalid and determine when the traversal can terminate early.
Returns true if there was anything to invalidate and false if output was already invalid.
Implements VdfExecutorInterface.
|
overridevirtual |
Duplicates the output data associated with sourceOutput and copies it to destOutput.
Implements VdfExecutorInterface.
|
inlineoverridevirtual |
Factory construction.
Implements VdfExecutorInterface.
Definition at line 70 of file maskedSubExecutor.h.
|
inlineoverridevirtual |
Returns true if the invalidation timestamps mismatch between the source and dest outputs. This information is used to determine whether to lock the source output for mung buffer locking.
Although, this executor does store invalidation state, we refer to the parent executor to look up invalidation timestamps.
Implements VdfExecutorInterface.
Definition at line 101 of file maskedSubExecutor.h.
|
inlineoverridevirtual |
Indicates whether this executor contains data.
Note, that this method always returns false on this executor. We do this in order to trick invalidation into thinking that there is always data living on this executor. This allows us to push invalidation through the entire network and record the invalidation state, without regard for what state the parent executor is in.
Reimplemented from VdfDatalessExecutor.
Definition at line 90 of file maskedSubExecutor.h.