Lumiera  0.pre.03
»edit your freedom«
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 
23 #include "lib/time/timevalue.hpp"
24 
25 #include <boost/functional/hash.hpp>
26 
27 
28 
29 namespace steam {
30 namespace 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
52  RenderDrive::hashOfInstance (InvocationInstanceID invoKey) const
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  {
65  InvocationInstanceID invoKey;
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
81  RenderDrive::buildFollowUpJobFrom (Time refPoint)
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
Execution plan to generate render jobs within a specific render process.
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.
Steam-Layer implementation namespace root.
Lumiera&#39;s internal time value datatype.
Definition: timevalue.hpp:299
opaque ID attached to each individual job invocation.
Definition: job.h:103
size_t HashVal
a STL compatible hash value
Definition: hash-value.h:52
Individual frame rendering task, forwarding to a closure.
Definition: job.h:268
a family of time value like entities and their relationships.
The active core within a CalcStream, causing the render mechanism to re-trigger repeatedly.