Lumiera
0.pre.03
»edit your freedom«
|
#include "vault/gear/job.h"
Individual frame rendering task, forwarding to a closure.
This functor encodes all information necessary to trigger and invoke the actual rendering operation. It will be embedded by value into a job descriptor and then enqueued with the scheduler for invocation just in time. The job interface exposes everything necessary to plan, handle, schedule and abort jobs. The implementation refers to the concrete "execution plan" encoded into the corresponding engine::JobTicket. The latter is embedded into the storage for one segment of the low-level model and thus is shared for all frames and channels within this part of the timeline. Thus, the lumiera_jobParameter struct contains the "moving parts" different for each individual job.
Public Member Functions | |
Job (JobClosure &specificJobDefinition, InvocationInstanceID invoKey, Time nominalFrameTime) | |
InvocationInstanceID | getInvocationInstanceID () const |
JobKind | getKind () const |
find out about the classification of this job. More... | |
Time | getNominalTime () const |
void | triggerJob () const |
bool | usesClosure (JobClosure const &) const |
Friends | |
lib::HashVal | hash_value (Job const &) |
provide a hash based Job ID More... | |
JobKind getKind | ( | ) | const |
find out about the classification of this job.
Typically its not necessary for the normal scheduling of Jobs to know anything beyond the contents of the #lumiera_jobDescriptor, but the JobClosure is able to answer any additional introspection queries
|
friend |
provide a hash based Job ID
Job records hashing to the same value shall be considered equivalent. Since the interpretation of the InvocationInstanceID is a private detail of the JobClosure, calculating this hash requires a virtual call into the concrete JobClosure. This is not considered problematic, as the normal job operation and scheduling doesn't rely on the job's hash. Only some diagnostic facilities do.