58#ifndef STEAM_ENGINE_JOB_PLANNING_H
59#define STEAM_ENGINE_JOB_PLANNING_H
149 NOTREACHED (
"unexpected playbackUrgency");
164 UNIMPLEMENTED (
"Job planning logic to establish Leeway for scheduling");
182 return JobPlanning{*this, prereqTicket};
200 : jobTicket_{prerequisite}
201 , nominalTime_{parent.nominalTime_}
202 , frameNr_{parent.frameNr_}
203 , dependentPlan_{&parent}
212 - jobTicket_.getExpectedRuntime()
216 return dependentPlan_->determineDeadline (timings)
217 - jobTicket_.getExpectedRuntime()
Duration is the internal Lumiera time metric.
a mutable time value, behaving like a plain number, allowing copy and re-accessing
Lumiera's internal time value datatype.
static const Time ANYTIME
border condition marker value. ANYTIME <= any time value
View on the execution planning for a single calculation step.
JobPlanning(JobPlanning &parent, JobTicket &prerequisite)
JobPlanning * dependentPlan_
link to a dependent JobPlanning, for planning of prerequisites
TimeVar const & nominalTime_
JobPlanning(JobTicket &ticket, TimeVar const &nominalTime, FrameCnt const &frameNr)
Time determineDeadline(Timings const &timings)
Calculate the latest time point when to start the job, so it can still possibly reach the timing goal...
Job buildJob()
Connect and complete the planning information assembled thus far to create a frame job descriptor,...
Time doCalcDeadline(Timings const &timings)
Duration determineLeeway(Timings const &)
Determine a timing buffer for flexibility to allow starting the job already before its deadline; espe...
FrameCnt const & frameNr_
auto buildDependencyPlanning()
Build a sequence of dependent JobPlanning scopes for all prerequisites of this current JobPlanning,...
execution plan for pulling a specific exit node.
Job createJobFor(Time nominalTime)
Core operation: build a concrete render job based on this blueprint.
auto getPrerequisites()
Core operation: iterate over the prerequisites, required to carry out a render operation based on thi...
Generic frame timing specification.
Time getTimeDue(FrameCnt frameOffset) const
real time deadline for the given frame, without any latency.
PlaybackUrgency playbackUrgency
Duration engineLatency
reasonable guess at the scheduling and dispatch-delay of the render engine
Types marked with this mix-in may be moved but not copied.
Individual frame rendering task, forwarding to a closure.
Execution plan to generate render jobs within a specific render process.
Definition of a render job.
auto transformIterator(IT const &src, FUN processingFunc)
Build a TransformIter: convenience free function shortcut, picking up the involved types automaticall...
Steam-Layer implementation namespace root.
Mix-Ins to allow or prohibit various degrees of copying and cloning.
An (abstract) capability to send media data to an external output.
Basic set of definitions and includes commonly used together.
a family of time value like entities and their relationships.
How to define a timing specification or constraint.