Lumiera 0.pre.04~rc.1
»edit your freedom«
Loading...
Searching...
No Matches
render-drive.cpp
Go to the documentation of this file.
1/*
2 RenderDrive - repetitively advancing a render calculation stream
3
4 Copyright (C)
5 2023, Hermann Vosseler <Ichthyostega@web.de>
6
7  **Lumiera** is free software; you can redistribute it and/or modify it
8  under the terms of the GNU General Public License as published by the
9  Free Software Foundation; either version 2 of the License, or (at your
10  option) any later version. See the file COPYING for further details.
11
12* *****************************************************************/
13
14
24
25#include <boost/functional/hash.hpp>
26
27
28
29namespace steam {
30namespace engine {
31
32
36 void
37 RenderDrive::invokeJobOperation (JobParameter parameter)
38 {
39 ASSERT (parameter.nominalTime == getTimings().getFrameStartAt (parameter.invoKey.frameNumber));
40
41 this->performJobPlanningChunk (parameter.invoKey.frameNumber);
42 }
43
44
46 RenderDrive::buildInstanceID (HashVal seed) const
47 {
48 UNIMPLEMENTED ("systematically generate an invoKey, distinct for the nominal time");
49 }
50
51 size_t
53 {
54 UNIMPLEMENTED ("the actual meat: advance the render process");
55 return boost::hash_value (invoKey.frameNumber);
56 }
57
58
59
60
61
62 Job
64 {
66 invoKey.frameNumber = startFrame;
67 Time nominalPlanningStartTime = getTimings().getFrameStartAt (startFrame);
68
69 return Job(*this, invoKey, nominalPlanningStartTime);
70 }
71
72
73 void
74 RenderDrive::performJobPlanningChunk(FrameCnt nextStartFrame)
75 {
76 UNIMPLEMENTED ("the actual meat: advance the render process");
77 }
78
79
80 Job
82 {
83 UNIMPLEMENTED ("create a follow-up job to pick up job-planning at or after the refPoint");
84 }
85
86
87
88
89}} // namespace engine
Lumiera's internal time value datatype.
size_t hashOfInstance(InvocationInstanceID) const override
play::Timings const & getTimings() const
Job prepareRenderPlanningFrom(FrameCnt startFrame)
create the "start trigger job" Scheduling this job will effectively get a calculation stream into act...
void invokeJobOperation(JobParameter) override
entry point (interface JobClosure): invoke the concrete job operation.
InvocationInstanceID buildInstanceID(HashVal) const override
void performJobPlanningChunk(FrameCnt nextStartFrame)
Job buildFollowUpJobFrom(Time refPoint)
Time getFrameStartAt(FrameCnt frameNr) const
Definition timings.cpp:121
Individual frame rendering task, forwarding to a closure.
Definition job.h:276
Execution plan to generate render jobs within a specific render process.
FrameCnt frameNumber
Definition job.h:109
opaque ID attached to each individual job invocation.
Definition job.h:105
Steam-Layer implementation namespace root.
The active core within a CalcStream, causing the render mechanism to re-trigger repeatedly.
a family of time value like entities and their relationships.