Lumiera
0.pre.03
»edit your freedom«
|
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 "lib/time.h"
#include "lib/nocopy.hpp"
#include <string>
Classes | |
union | InvocationInstanceID |
opaque ID attached to each individual job invocation. More... | |
struct | InvocationInstanceID.code |
struct | InvocationInstanceID.part |
class | Job |
Individual frame rendering task, forwarding to a closure. More... | |
class | JobClosure |
Interface of the closure for frame rendering jobs. More... | |
class | JobFunctor |
struct | LumieraJobClosure |
closure representing the execution context of a job. More... | |
struct | lumiera_jobDefinition |
complete definition of an individual job More... | |
struct | lumiera_jobDescriptor |
Description of a job. More... | |
struct | lumiera_jobParameter |
invocation parameter for the individual frame calculation job. More... | |
Enumerations | |
enum | JobKind { CALC_JOB, LOAD_JOB, META_JOB, TEST_JOB } |
enum | JobPriority { TIMEBOUND_JOB, PAUSED_JOB, ASAP_JOB, BACKGROUND_JOB } |
enum | JobState { DONE, RUNNING, WAITING, REJECTED, EXPIRED, ABORTED } |
Functions | |
int | lumiera_invokey_eq (void *l, void *r) |
size_t | lumiera_job_get_hash (LumieraJobDefinition) |
calculate a hash value based on the Job's identity. More... | |
void | lumiera_job_invoke (LumieraJobDefinition) |
trigger execution of a specific job, assuming availability of all prerequisites | |
bool | operator!= (Job const &left, Job const &right) |
bool | operator== (Job const &left, Job const &right) |
Namespaces | |
vault | |
Vault-Layer implementation namespace root. | |
vault::gear | |
Active working gear and plumbing. | |
enum JobState |
enum JobKind |
enum JobPriority |
union InvocationInstanceID |
Class Members | ||
---|---|---|
lumiera_uid | luid | |
FrameCnt | frameNumber | |
struct InvocationInstanceID | part | |
struct InvocationInstanceID | code |
struct InvocationInstanceID.code |
struct InvocationInstanceID.part |
struct lumiera_jobDefinition_struct |
struct lumiera_jobDescriptor_struct |
Class Members | ||
---|---|---|
gavl_time_t | deadline | given in real wall clock time |
JobState | jobState | |
lumiera_jobDefinition | jobDefinition | of interest only to Steam-Layer |
LList | waiting | |
LList | failed | |
LList | completed |
struct lumiera_jobParameter_struct |
Class Members | ||
---|---|---|
gavl_time_t | nominalTime | |
InvocationInstanceID | invoKey |