![]() |
Lumiera 0.pre.04
»edit your freedom«
|
Definition of a render job. More...
Go to the source code of this file.
Definition of a render job.
Jobs are defined within Steam-Layer and passed to the scheduler in the Back-end for time bound invocation. This header defines the data structures used to describe a job, and the basic data structures used by the scheduler to keep track of individual jobs. Moreover, within the C++ part of this header, some classes are layered on top of these data structures; especially the JobClosure ABC describes the generic part of each job, while the "moving parts" are embedded within the lumiera_jobParameter.
A render job is a parameterless function, ready to be invoked by the scheduler.. Since every non trivial job actually needs some parameters (at least a frame number) and relies on additional definitions and data structures, a closure is created to make these dependencies explicit and opaque for the scheduler. The actual job invocation is forwarded to a virtual function JobClosure::invokeJobOperation(JobParameter), which is defined "somewhere" in a subclass and remains opaque for the scheduler; the frame dispatcher takes care to configure each job descriptor with the correct pointer to a concrete closure prior to handing the job over to the scheduler.
Definition in file job.h.
#include "lib/llist.h"#include "lib/hash-value.h"#include <inttypes.h>#include "lib/nocopy.hpp"#include "lib/time/timevalue.hpp"#include <string>Namespaces | |
| namespace | vault |
| Vault-Layer implementation namespace root. | |
| namespace | vault::gear |
| Active working gear and plumbing. | |
Typedefs | |
| typedef int64_t | raw_time_64 |
| typedef int64_t | FrameCnt |
| typedef lumiera_jobParameter * | LumieraJobParameter |
| typedef lumiera_jobDefinition * | LumieraJobDefinition |
| typedef lumiera_jobDescriptor * | LumieraJobDescriptor |
| typedef lumiera_jobParameter const & | JobParameter |
Enumerations | |
| enum | JobState { DONE , RUNNING , WAITING , REJECTED , EXPIRED , ABORTED } |
| enum | JobKind { CALC_JOB , LOAD_JOB , META_JOB , TEST_JOB } |
| enum | JobPriority { TIMEBOUND_JOB , PAUSED_JOB , ASAP_JOB , BACKGROUND_JOB } |
Classes | |
| struct | LumieraJobClosure |
| closure representing the execution context of a job. More... | |
| union | InvocationInstanceID |
| opaque ID attached to each individual job invocation. More... | |
| struct | lumiera_jobParameter |
| invocation parameter for the individual frame calculation job. More... | |
| struct | lumiera_jobDefinition |
| complete definition of an individual job More... | |
| struct | lumiera_jobDescriptor |
| Description of a job. More... | |
| class | JobFunctor |
| class | JobClosure |
| Interface of the closure for frame rendering jobs. More... | |
| class | Job |
| Individual frame rendering task, forwarding to a closure. More... | |
| struct | InvocationInstanceID.part |
| struct | InvocationInstanceID.code |
Functions | |
| bool | operator== (Job const &left, Job const &right) |
| bool | operator!= (Job const &left, Job const &right) |
| void | lumiera_job_invoke (LumieraJobDefinition) |
| trigger execution of a specific job, assuming availability of all prerequisites | |
| size_t | lumiera_job_get_hash (LumieraJobDefinition) |
| calculate a hash value based on the Job's identity. | |
| int | lumiera_invokey_eq (void *l, void *r) |
| typedef int64_t raw_time_64 |
| typedef lumiera_jobParameter* LumieraJobParameter |
| typedef lumiera_jobDefinition* LumieraJobDefinition |
| typedef lumiera_jobDescriptor* LumieraJobDescriptor |
| enum JobState |
| enum JobKind |
| enum JobPriority |
| union InvocationInstanceID |
| Class Members | ||
|---|---|---|
| lumiera_uid | luid {0} | |
| FrameCnt | frameNumber | |
| struct InvocationInstanceID.part | part | |
| struct InvocationInstanceID.code | code | |
Collaboration diagram for InvocationInstanceID:| struct lumiera_jobParameter_struct |
| Class Members | ||
|---|---|---|
| raw_time_64 | nominalTime | |
| InvocationInstanceID | invoKey | |
Collaboration diagram for lumiera_jobParameter:| struct lumiera_jobDefinition_struct |
| struct lumiera_jobDescriptor_struct |
| Class Members | ||
|---|---|---|
| raw_time_64 | deadline | given in real wall clock time |
| JobState | jobState | |
| lumiera_jobDefinition | jobDefinition | of interest only to Steam-Layer |
| LList | waiting | |
| LList | failed | |
| LList | completed | |
Collaboration diagram for lumiera_jobDescriptor:| struct InvocationInstanceID.part |
| struct InvocationInstanceID.code |
| void lumiera_job_invoke | ( | LumieraJobDefinition | jobDef | ) |
trigger execution of a specific job, assuming availability of all prerequisites
Definition at line 137 of file job.cpp.
References anonymous_namespace{job.cpp}::forwardInvocation(), and Job::triggerJob().
Here is the call graph for this function:| size_t lumiera_job_get_hash | ( | LumieraJobDefinition | jobDef | ) |
calculate a hash value based on the Job's identity.
Definition at line 144 of file job.cpp.
References anonymous_namespace{job.cpp}::forwardInvocation().
Here is the call graph for this function:| int lumiera_invokey_eq | ( | void * | l, |
| void * | r | ||
| ) |
Definition at line 154 of file job.cpp.
References lumiera_uid_eq().
Referenced by MockJob::isNopJob(), JobTicket::isValid(), steam::engine::anonymous_namespace{job-ticket.cpp}::operator==(), MockSupport_test::verify_MockJobTicket(), and MockSupport_test::verify_MockSegmentation().
Here is the call graph for this function:
Here is the caller graph for this function: