Invocation: forge a path for integration
Facing quite some difficulties here, since there are (at least) two abandoned past efforts towards building a render node network in the code base; the structure and architecture decisions from these previous attempts seem largely valid still, yet on a technical level, the style of construction evolved considerably in the meantime. Moreover, these old fragments of code, written during the early stages of the project, were lacking clear goals and anchor points at places; the situation is quite different now in this respect. Sticking to well proven practice, the rework will be driven by a test setup, and will progress over three steps with increasing levels of integration.
This commit is contained in:
parent
47e26e2a65
commit
a11ee34fc8
7 changed files with 515 additions and 29 deletions
|
|
@ -6,13 +6,21 @@ PLANNED "Proc Node basics" NodeBasic_test <<END
|
|||
END
|
||||
|
||||
|
||||
PLANNED "Proc Node fabrication" NodeFabrication_test <<END
|
||||
PLANNED "Proc Node development" NodeDevel_test <<END
|
||||
END
|
||||
|
||||
|
||||
PLANNED "Proc Node fabrication" NodeFactory_test <<END
|
||||
END
|
||||
|
||||
|
||||
PLANNED "Proc Node connectivity" NodeLinkage_test <<END
|
||||
END
|
||||
|
||||
|
||||
PLANNED "Proc Node input reading" NodeInput_test <<END
|
||||
END
|
||||
|
||||
|
||||
PLANNED "Proc Node operation modes" NodeOperation_test <<END
|
||||
END
|
||||
|
||||
|
||||
PLANNED "source reading Node" NodeSource_test <<END
|
||||
END
|
||||
|
|
|
|||
59
tests/core/steam/engine/node-devel-test.cpp
Normal file
59
tests/core/steam/engine/node-devel-test.cpp
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
/*
|
||||
NodeDevel(Test) - verify proper render node operation and calldown
|
||||
|
||||
Copyright (C) Lumiera.org
|
||||
2009, Hermann Vosseler <Ichthyostega@web.de>
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of
|
||||
the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
* *****************************************************/
|
||||
|
||||
/** @file node-devel-test.cpp
|
||||
** unit test \ref NodeDevel_test
|
||||
*/
|
||||
|
||||
|
||||
#include "lib/test/run.hpp"
|
||||
//#include "lib/util.hpp"
|
||||
|
||||
|
||||
//using std::string;
|
||||
|
||||
|
||||
namespace steam {
|
||||
namespace engine{
|
||||
namespace test {
|
||||
|
||||
|
||||
|
||||
|
||||
/***************************************************************//**
|
||||
* @test check render node operation modes and collaboration.
|
||||
*/
|
||||
class NodeDevel_test : public Test
|
||||
{
|
||||
virtual void run(Arg)
|
||||
{
|
||||
UNIMPLEMENTED ("operate some render nodes as linked together");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/** Register this test class... */
|
||||
LAUNCHER (NodeDevel_test, "unit node");
|
||||
|
||||
|
||||
|
||||
}}} // namespace steam::engine::test
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
NodeFabrication(Test) - building render nodes
|
||||
NodeFactory(Test) - building render nodes
|
||||
|
||||
Copyright (C) Lumiera.org
|
||||
2009, Hermann Vosseler <Ichthyostega@web.de>
|
||||
|
|
@ -20,8 +20,8 @@
|
|||
|
||||
* *****************************************************/
|
||||
|
||||
/** @file node-fabrication-test.cpp
|
||||
** unit test \ref NodeFabrication_test
|
||||
/** @file node-factory-test.cpp
|
||||
** unit test \ref NodeFactory_test
|
||||
*/
|
||||
|
||||
|
||||
|
|
@ -42,7 +42,7 @@ namespace test {
|
|||
/***************************************************************//**
|
||||
* @test creating and wiring various kinds of render nodes.
|
||||
*/
|
||||
class NodeFabrication_test : public Test
|
||||
class NodeFactory_test : public Test
|
||||
{
|
||||
virtual void run(Arg)
|
||||
{
|
||||
|
|
@ -52,7 +52,7 @@ namespace test {
|
|||
|
||||
|
||||
/** Register this test class... */
|
||||
LAUNCHER (NodeFabrication_test, "unit node");
|
||||
LAUNCHER (NodeFactory_test, "unit node");
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
NodeSource(Test) - unit test of the source reading render node
|
||||
NodeInput(Test) - unit test of the source reading render node
|
||||
|
||||
Copyright (C) Lumiera.org
|
||||
2008, Hermann Vosseler <Ichthyostega@web.de>
|
||||
|
|
@ -20,8 +20,8 @@
|
|||
|
||||
* *****************************************************/
|
||||
|
||||
/** @file node-source-test.cpp
|
||||
** unit test \ref NodeSource_test
|
||||
/** @file node-input-test.cpp
|
||||
** unit test \ref NodeInput_test
|
||||
*/
|
||||
|
||||
|
||||
|
|
@ -42,7 +42,7 @@ namespace test {
|
|||
/***************************************************************//**
|
||||
* @test the source reading render node.
|
||||
*/
|
||||
class NodeSource_test : public Test
|
||||
class NodeInput_test : public Test
|
||||
{
|
||||
virtual void run(Arg)
|
||||
{
|
||||
|
|
@ -52,7 +52,7 @@ namespace test {
|
|||
|
||||
|
||||
/** Register this test class... */
|
||||
LAUNCHER (NodeSource_test, "unit node");
|
||||
LAUNCHER (NodeInput_test, "unit node");
|
||||
|
||||
|
||||
|
||||
59
tests/core/steam/engine/node-linkage-test.cpp
Normal file
59
tests/core/steam/engine/node-linkage-test.cpp
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
/*
|
||||
NodeLinkage(Test) - verify proper render node operation and calldown
|
||||
|
||||
Copyright (C) Lumiera.org
|
||||
2009, Hermann Vosseler <Ichthyostega@web.de>
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of
|
||||
the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
* *****************************************************/
|
||||
|
||||
/** @file node-linkage-test.cpp
|
||||
** unit test \ref NodeLinkage_test
|
||||
*/
|
||||
|
||||
|
||||
#include "lib/test/run.hpp"
|
||||
//#include "lib/util.hpp"
|
||||
|
||||
|
||||
//using std::string;
|
||||
|
||||
|
||||
namespace steam {
|
||||
namespace engine{
|
||||
namespace test {
|
||||
|
||||
|
||||
|
||||
|
||||
/***************************************************************//**
|
||||
* @test check render node operation modes and collaboration.
|
||||
*/
|
||||
class NodeLinkage_test : public Test
|
||||
{
|
||||
virtual void run(Arg)
|
||||
{
|
||||
UNIMPLEMENTED ("operate some render nodes as linked together");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/** Register this test class... */
|
||||
LAUNCHER (NodeLinkage_test, "unit node");
|
||||
|
||||
|
||||
|
||||
}}} // namespace steam::engine::test
|
||||
|
|
@ -6183,7 +6183,7 @@ This is the core service provided by the player subsystem. The purpose is to cre
|
|||
:any details of this processing remain opaque for the clients; even the player subsystem just accesses the EngineFaçade
|
||||
</pre>
|
||||
</div>
|
||||
<div title="PlaybackVerticalSlice" creator="Ichthyostega" modifier="Ichthyostega" created="202303272236" modified="202404192303" tags="overview impl discuss draft" changecount="38">
|
||||
<div title="PlaybackVerticalSlice" creator="Ichthyostega" modifier="Ichthyostega" created="202303272236" modified="202404222258" tags="overview impl discuss draft" changecount="39">
|
||||
<pre>//Integration effort to promote the development of rendering, playback and video display in the GUI//
|
||||
This IntegrationSlice was started in {{red{2023}}} as [[Ticket #1221|https://issues.lumiera.org/ticket/1221]] to coordinate the completion and integration of various implementation facilities, planned, drafted and built during the last years; this effort marks the return of development focus to the lower layers (after years of focussed UI development) and will implement the asynchronous and time-bound rendering coordinated by the [[Scheduler]] in the [[Vault|Vault-Layer]]
|
||||
|
||||
|
|
@ -6206,17 +6206,22 @@ __May.23__: taking a //prototyping approach// now, since further development was
|
|||
* ✔ implement a »~Split-Splice« algorithm for &rarr; SegmentationChange, rigged accordingly to generate a mocked Segementation for now
|
||||
* ✔ create a testbed to assemble a JobPlanningPipeline step by step (&rarr; [[#920|https://issues.lumiera.org/ticket/920]] and [[#1275|https://issues.lumiera.org/ticket/1275|]])
|
||||
|
||||
__June23__: building upon this prototyping approach, the dispatcher pipeline could be rearranged in the form of a pipeline builder, allowing to retract the originally used implementation scheme based on »Monads«. The implementation of the Dispatcher is complete, yet the build up of the [[»Render Drive« #1301|https://issues.lumiera.org/ticket/1301]] could not reasonably be completed, due to lack of a clear-shaped ''Scheduler interface''.
|
||||
__June.23__: building upon this prototyping approach, the dispatcher pipeline could be rearranged in the form of a pipeline builder, allowing to retract the originally used implementation scheme based on »Monads«. The implementation of the Dispatcher is complete, yet the build up of the [[»Render Drive« #1301|https://issues.lumiera.org/ticket/1301]] could not reasonably be completed, due to lack of a clear-shaped ''Scheduler interface''.
|
||||
|
||||
__July23__: this leads to a shift of work focus towards implementing the [[Scheduler]] itself.
|
||||
__July.23__: this leads to a shift of work focus towards implementing the [[Scheduler]] itself.
|
||||
The Scheduler will be structured into two Layers, where the lower layer is implemented as //priority queue// (using the STL). So the most tricky part to solve is the representation of //dependencies// between jobs, with the possible extension to handling IO operations asynchronously. Analysis and planning of the implementation indicate that the [[scheduler memory managment|SchedulerMemory]] can be based on //Extents//, which are interpreted as »Epochs« with a deadline. These considerations imply what steps to take next for building up Scheduler functionality and memory management required for processing a simple job
|
||||
* ✔ build a first working draft for the {{{BlockFlow}}} allocation scheme [[#1311|https://issues.lumiera.org/ticket/1311]]
|
||||
* ✔ define and cover the basic [[Activities|RenderActivity]] necessary to implement a plain-simple-Job (without dependencies)
|
||||
* ✔ pass such an Activity through the two layers of the Scheduler
|
||||
* 🗘 establish a baseline for //performance measurements//
|
||||
* ✔ establish a baseline for //performance measurements//
|
||||
* ⌛ adapt the [[job planning pipeline|JobPlanningPipeline]] implemented thus far to produce the appropriate {{{Activity}}} records for the scheduler
|
||||
|
||||
__December23__: building the Scheduler required some time and dedication, including some related topics like a [[dedicated memory management scheme|SchedulerMemory]], rework and modernisation of the [[#1279 thread handling framework|https://issues.lumiera.org/ticket/1279]], using a [[worker pool|SchedulerWorker]] and developing the [[foundation for load control|SchedulerLoadControl]]. This amounts to the creation of a considerable body of new code; some &rarr;[[load- and stress testing|SchedulerTest]] helps to establish &rarr;[[performance characteristics and traits|SchedulerBehaviour]].
|
||||
__December.23__: building the Scheduler required time and dedication, including some related topics like a [[suitable memory management scheme|SchedulerMemory]], rework and modernisation of the [[#1279 thread handling framework|https://issues.lumiera.org/ticket/1279]], using a [[worker pool|SchedulerWorker]] and developing the [[foundation for load control|SchedulerLoadControl]]. This amounts to the creation of a considerable body of new code; some &rarr;[[load- and stress testing|SchedulerTest]] helps to establish &rarr;[[performance characteristics and traits|SchedulerBehaviour]].
|
||||
|
||||
__April.24__: after completing an extended round of performance tests for the new Scheduler, development focus is shifted now shifted upwards to the [[Render Node Network|ProcNode]], where Engine activity is carried out. This part was addressed at the very start of the project, and later again -- yet could never be completed, due to a lack of clear reference points and technical requirements. Hope to achieve a breakthrough rests on this integration effort now.
|
||||
* 🗘 establish a test setup for developing render node functionality
|
||||
* ⌛ introduce a middle layer for linking the JobTicket to the actual invocation
|
||||
* ⌛ rework and complete the existing node invocation code
|
||||
|
||||
!Decisions
|
||||
;Scheduler
|
||||
|
|
@ -7382,19 +7387,21 @@ A special operational condition mentioned above is the ''Scheduler Emergency''.
|
|||
&rarr; [[Rendering]]
|
||||
</pre>
|
||||
</div>
|
||||
<div title="SchedulerRequirements" modifier="Ichthyostega" created="201107080145" modified="201112171835" tags="Rendering spec draft discuss">
|
||||
<div title="SchedulerRequirements" modifier="Ichthyostega" created="201107080145" modified="202404212325" tags="Rendering spec draft discuss" changecount="1">
|
||||
<pre>The [[Scheduler]] is responsible for geting the individual [[render jobs|RenderJob]] to run. The basic idea is that individual render jobs //should never block// -- and thus the calculation of a single frame might be split into several jobs, including resource fetching. This, together with the data exchange protocol defined for the OutputSlot, and the requirements of storage management (especially releasing of superseded render nodes &rarr; FixtureStorage), leads to certain requirements to be ensured by the scheduler:
|
||||
;ordering of jobs
|
||||
:the scheduler has to ensure all prerequisites of a given job are met
|
||||
;job time window
|
||||
:when it's not possible to run a job within the defined target time window, it must be marked as failure
|
||||
;failure propagation
|
||||
:when a job fails, either due to an job internal error, or by timing glitch, any dependent jobs need to receive that failure state
|
||||
:when it's not possible to run a job within the defined target time window, it should be silently dropped
|
||||
;event propagation
|
||||
:when some job is done, or due to an external event, a //notification// must be propagated to dependent jobs
|
||||
;guaranteed execution
|
||||
:some jobs are marked as "ensure run". These need to run reliable, even when prerequisite jobs fail -- and this failure state needs to be propagated
|
||||
:some jobs are marked as »compulsory«. These need to run reliable, even when prerequisite jobs fail -- and this failure state needs to be propagated
|
||||
;superseding groups of jobs
|
||||
:jobs can be marked as belonging to some group or stratum (called the »manifestation«); such a group can be masked out at a central registry, causing all the affected jobs to be //silently dropped//.
|
||||
|
||||
!detecting termination
|
||||
The way other parts of the system are built, requires us to obtain a guaranteed knowledge of some job's termination. It is possible to obtain that knowledge with some limited delay, but it nees to be absoultely reliable (violations leading to segfault). The requirements stated above assume this can be achieved through //jobs with guaranteed execution.// Alternatively we could consider installing specific callbacks -- in this case the scheduler itself has to guarantee the invocation of these callbacks, even if the corresponding job fails or is never invoked. It doesn't seem there is any other option.
|
||||
The way other parts of the system are built, requires us to obtain a guaranteed knowledge of some job's termination. It is possible to obtain that knowledge with some limited delay, but propagation of this information needs to be absolutely reliable (violations leading either to segfault, or memory leaks). The requirements stated above assume this can be achieved through a combination of //compulsory jobs// and //notifications.// Alternatively we could consider using a separate messaging system within the engine (the »EngineObserver«), which shall also be used for timing observations, higher level capacity management and for signaling exceptional operational failures.
|
||||
</pre>
|
||||
</div>
|
||||
<div title="SchedulerTest" creator="Ichthyostega" modifier="Ichthyostega" created="202312281814" modified="202404182232" tags="Rendering operational draft img" changecount="170">
|
||||
|
|
|
|||
|
|
@ -79513,12 +79513,12 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<arrowlink COLOR="#fc5172" DESTINATION="ID_1834678491" ENDARROW="Default" ENDINCLINATION="-410;29;" ID="Arrow_ID_139741662" STARTARROW="None" STARTINCLINATION="-339;0;"/>
|
||||
<linktarget COLOR="#ff3681" DESTINATION="ID_1642755650" ENDARROW="Default" ENDINCLINATION="-874;84;" ID="Arrow_ID_846448701" SOURCE="ID_1433064275" STARTARROW="None" STARTINCLINATION="-223;-228;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1699563656019" ID="ID_1361396246" MODIFIED="1699566672294" TEXT="Job-Planung muß aus Konsistenzgründen in einem Job laufen">
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1699563656019" ID="ID_1361396246" MODIFIED="1713709497438" TEXT="Job-Planung muß aus Konsistenzgründen in einem Job laufen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...damit sie das Grooming-Token hat und damit Zugriff auf die Scheduler-Ressourcen. Außerdem ist damit ein konsitenter Rahmen sichergestellt: geplante Startzeiten sollten frühestend 20ms danach beginnen
|
||||
...damit sie das Grooming-Token hat und damit Zugriff auf die Scheduler-Ressourcen. Außerdem ist damit ein konsitenter Rahmen sichergestellt: geplante Startzeiten sollten frühestens 20ms danach beginnen und können (einschließlich Deadline) höchstens ein Fenster von ~20 Sekunden überspannen
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
|
|
@ -79978,12 +79978,329 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1713661237357" ID="ID_5368181" MODIFIED="1713661263421" TEXT="habe anscheinend die "buff handle logic" in 2011 komplett umgekrempelt"/>
|
||||
</node>
|
||||
<node CREATED="1713794992321" ID="ID_267762321" MODIFIED="1713795160403" TEXT="dieser Test enthält aber bereits die Quintessenz des neuen Buffer-Protokolls">
|
||||
<arrowlink COLOR="#3c61b7" DESTINATION="ID_900623108" ENDARROW="Default" ENDINCLINATION="-475;-40;" ID="Arrow_ID_245920004" STARTARROW="None" STARTINCLINATION="-218;8;"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1713711220441" ID="ID_1706159559" MODIFIED="1713711225557" TEXT="Dokumentation lesen">
|
||||
<node CREATED="1713711236238" ID="ID_1078036041" MODIFIED="1713711237267" TEXT="NodeOperationProtocol">
|
||||
<node CREATED="1713711238327" ID="ID_1353161349" MODIFIED="1713711245530" TEXT="sehr abstrakt gehalten"/>
|
||||
<node CREATED="1713711247455" ID="ID_1684665301" MODIFIED="1713711263713" TEXT="das Konzept bestätige ich zu 100% als valide">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node CREATED="1713711268940" ID="ID_58785075" MODIFIED="1713711292672" TEXT="Unklarheiten bezüglich der »DataSink« vs. Buffer-Handle">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1687302645431" ID="ID_1377069136" MODIFIED="1687302651074" TEXT="Aufruf-Schnittstelle"/>
|
||||
<node CREATED="1713716080560" ID="ID_1140997216" MODIFIED="1713716082108" TEXT="RenderMechanics">
|
||||
<node COLOR="#5b280f" CREATED="1713716083216" ID="ID_264756254" MODIFIED="1713716111215" TEXT="— partiell obsolet gekennzeichnet —">
|
||||
<icon BUILTIN="stop-sign"/>
|
||||
</node>
|
||||
<node CREATED="1713716112683" ID="ID_1842023337" MODIFIED="1713716128262" TEXT="das UML-Klassendiagramm sieht strukturell sinnvoll aus"/>
|
||||
<node CREATED="1713716128930" ID="ID_1697592841" MODIFIED="1713716132573" TEXT="ja die Namen....">
|
||||
<node COLOR="#d20494" CREATED="1713716137963" ID="ID_1918966244" MODIFIED="1713716167447" TEXT="(ochnee — naming and cache invalidation here)">
|
||||
<font NAME="SansSerif" SIZE="10"/>
|
||||
<icon BUILTIN="smiley-oh"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713716178243" ID="ID_963083918" MODIFIED="1713716198671" TEXT="StateAdapter ⟼ StateClosure">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713716200831" ID="ID_1149448314" MODIFIED="1713716213811" TEXT="BuffTable ⟼ FeedManifold">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1713716868553" ID="ID_1136069824" MODIFIED="1713716878875" TEXT="ist aber alles sehr gut, was da in dem Text steht"/>
|
||||
<node CREATED="1713716882999" ID="ID_73961827" MODIFIED="1713716940376" TEXT="(gut ist auch, daß fast nix über die Implementierung geschrieben wurde)">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...mit der bin ich nämlich heute überhaupt nicht mehr d'accord...
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1713736666909" ID="ID_1897375430" MODIFIED="1713736668239" TEXT="RenderImplDetails">
|
||||
<node CREATED="1713736669365" ID="ID_1902730004" MODIFIED="1713736680893" TEXT="mäh"/>
|
||||
<node CREATED="1713736684680" ID="ID_1641726803" MODIFIED="1713736715791" TEXT="beschreibt eine Implementierung die nicht recht weiß, wo sie hin will"/>
|
||||
<node CREATED="1713736716524" ID="ID_1186414782" MODIFIED="1713736723494" TEXT="heute würde ich das nicht mehr so machen"/>
|
||||
<node CREATED="1713736724175" ID="ID_1273508457" MODIFIED="1713736738080">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
insofern wichtig für einen <b>2.Anlauf</b>
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1713741181434" ID="ID_1452626869" MODIFIED="1713741183262" TEXT="BufferProvider">
|
||||
<node CREATED="1713741184087" ID="ID_676222874" MODIFIED="1713741227941" TEXT="ja — das ist der 2.Entwurf von 2011 — und viel zutreffender im Gesamtverständnis">
|
||||
<icon BUILTIN="forward"/>
|
||||
</node>
|
||||
<node CREATED="1713742350320" ID="ID_1837542949" MODIFIED="1713742375316" TEXT="impliziert auch ein Buffer-Handling-Protokoll (unklar zu welchem Grade bereits implementiert)"/>
|
||||
<node CREATED="1713742540587" ID="ID_1934327577" MODIFIED="1713742560313" TEXT="alles 100% noch valide (und hinreichend abstrakt formuliert)"/>
|
||||
</node>
|
||||
<node CREATED="1713742101141" ID="ID_716691378" MODIFIED="1713742108608" TEXT="BuffHandle">
|
||||
<node CREATED="1713742564543" ID="ID_900021322" MODIFIED="1713742570490" TEXT="gehört direkt zum Buffer-Provider"/>
|
||||
<node CREATED="1713742790928" ID="ID_1107336740" LINK="#ID_1354248617" MODIFIED="1713742849975" TEXT="Vorsicht: Handles haben einen ref-Count (Problem ist bekannt)">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node CREATED="1713742571198" ID="ID_92255782" MODIFIED="1713742678699" TEXT="die Idee mit der Meta/Descriptor-ID ist gut — bedarf aber weiterer Klärung"/>
|
||||
</node>
|
||||
<node CREATED="1713742921783" ID="ID_8372846" MODIFIED="1713742922923" TEXT="BufferMetadata">
|
||||
<node CREATED="1713742924175" ID="ID_343152444" MODIFIED="1713742934747" TEXT="da hab ich mir wohl damals so einige Gedanken gemacht..."/>
|
||||
<node CREATED="1713742935285" ID="ID_1810442720" MODIFIED="1713742956581" TEXT="klingt alles erst mal gut — kann aber nicht sagen wie relevant es tatsächlich ist"/>
|
||||
<node CREATED="1713742957434" ID="ID_1517298653" MODIFIED="1713742971608" TEXT="hab den Eindruck, ich habe hier ein offenes, symbolisches Schema vorgesehen"/>
|
||||
<node CREATED="1713742972326" ID="ID_1592129443" MODIFIED="1713742985662" TEXT="dann würde sich das später durch den eigentlichen Nutzen noch klären"/>
|
||||
<node CREATED="1713742986571" ID="ID_1098578366" MODIFIED="1713743004178" TEXT="anscheinend ist ein solcher Nutzen bereits durch den OutputManager vorgegeben"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1713711064227" ID="ID_672666235" MODIFIED="1713711069918" TEXT="Feststellungen">
|
||||
<node CREATED="1713711073065" ID="ID_1795961167" MODIFIED="1713711103370" TEXT="der Fokus der Entwicklung bewegt sich nun wieder an den unteren Rand des Steam-Layers"/>
|
||||
<node CREATED="1713711153009" ID="ID_1437136149" MODIFIED="1713711212977" TEXT="der dokumentierte Ansatz erscheint valide — aber es ist weniger Substantielles da, als erhofft"/>
|
||||
<node CREATED="1713711355610" ID="ID_977818766" MODIFIED="1713711563085" TEXT="es gibt einen Zwischenschritt: die Planungs-Phase — diese läuft intermittent">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Das erscheint mir als eine wichtige neue Einsicht: wir haben keine Zweiteilung (in Planung vs. Ausführung), sondern eine dreistufige Organisation:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Builder ⟼ Render-Node network
|
||||
</li>
|
||||
<li>
|
||||
Job-Planning ⟼ JobTicket + Closure
|
||||
</li>
|
||||
<li>
|
||||
Invocation ⟼ pull-linkage
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1713716993583" ID="ID_26837068" MODIFIED="1713737900458" TEXT="diese muß auch einen Ausführuns-Plan bereitlegen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
beinhaltet all die Verbindungen, die bis zuletzt flexibel bleiben müssen und für jeden einzelnen Aufruf durchgegangen werden, um die korrekten Verbindungen herzustellen; beispielsweise Verbindungen, die noch von einem Schalter oder von Automation abhängen, oder Verzweigung infolge des Cache-Zustands
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<font NAME="SansSerif" SIZE="12"/>
|
||||
<node CREATED="1713717920157" ID="ID_201859142" MODIFIED="1713744093809" TEXT="»turnout system«">
|
||||
<arrowlink COLOR="#483e74" DESTINATION="ID_863347622" ENDARROW="Default" ENDINCLINATION="456;0;" ID="Arrow_ID_1595016691" STARTARROW="None" STARTINCLINATION="426;67;"/>
|
||||
</node>
|
||||
<node CREATED="1713718003250" ID="ID_137160155" MODIFIED="1713718025070" TEXT="to establish the linkage for processing"/>
|
||||
</node>
|
||||
<node CREATED="1713736853226" ID="ID_1211099522" MODIFIED="1713736858430" TEXT="obsolete Ideen">
|
||||
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1713736859658" ID="ID_731059768" MODIFIED="1713738016587" TEXT="»pull-processing« im wörtlichen Sinn">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...denn das wäre im direkten Widerspruch zu dem Builder-Ansatz; denn klassischerweise versteht man unter »pull-processing« eine <i>lazy evaluation,</i> eine <i>late discovery</i> — diese zielt im Kern darauf, eben genau keine erschöpfende Planung vorneweg zu machen. Das »pull principle« ist ein eleganter Implementierungs-Ansatz, der erstaunlich komplexe Funktionalität abbilden kann, ohne eigentlich vorher eine strukturierte Analyse und Vorbereitung zu machen; jedes Teil definiert nur seine Vorraussetzungen, und auf geheimnisvolle Weise findet die Berechnung ihren Weg, wenn man nur lange genung „saugt“. Tatsächlich ist es mir sogar im Gegenteil ein Anliegen, überhaupt nichts mehr zur Laufzeit „herauszufinden“. Ich ziele vielmehr auf eine komplette Durchdringung in einem vorgelagerten Compilations-Prozeß. Die genauere Analyse hat mich dorthin gebracht: ein klassisches »pull-processing« führt nämlich zu einem chaotischen Suchverhalten und erfordert zumindest dynamische Allokation, besser noch sogar einen Garbage-Collector. Und — was für mich noch viel wichtiger geworden ist — es verteilt die Entscheidungs-Logik über den Ausführungs-Pfad, und zwar in Form von <i>cleveren Tricks. </i>Kaum etwas verachte ich mehr, als einen solchen Programmierstil.
|
||||
</p>
|
||||
<p>
|
||||
Allerdings — <b>zwei Aspekte</b> bleiben von diesem Ansatz dennoch <b>erhalten</b>:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
der rekursive depth-first-Aufruf, und damit der Verzicht auf ein vorausgeplantes Daten-Management
|
||||
</li>
|
||||
<li>
|
||||
die <i>Analyse-Richtung</i> rückwärts vom Ergebnis zu den Vorraussetzungen (wenngleich auch dies bereits im Builder passiert)
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node CREATED="1713739052516" ID="ID_1749970594" MODIFIED="1713739377677" TEXT="polymorphe »Nodes«">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...so im Sinn eines »Node-Editors« — eine Node die eigentlich ein plug-in ist, und „alles machen“ kann; das würde nämlich voraussetzen, daß alle Nodes <i>irgendwie miteinander kompatibel </i>sind oder automatisch aneinander angepaßt werden — das wäre etwas, was wir hier <i>ganz explizit nicht wollen, </i>sondern bereits im Builder abhandeln
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node CREATED="1713740231502" ID="ID_629177110" MODIFIED="1713740548024" TEXT="direkter Model-Bezug">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...der erste Entwurf war viel zu sehr von der Idee einer „geschickten“ Implementierung geprägt; daher war vorgesehen, direkt auf eine »high-level«-Logik durchzugreifen — im Besonderen auch im Hinblick auf die Automation. Von diesem Ansatz habe ich mich inzwischen komplett gelöst; vielmehr setze ich auf <i>symbolische Repräsentation, </i>die dann die nächsten Übersetzungs-Schritte ansteuert, und so schrittweise in eine vollständige Parametrisierung und Konfiguration des Rechenvorgangs mündet
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node CREATED="1713740696724" ID="ID_806179742" MODIFIED="1713741161856" TEXT="direkter Umgang mit Data-Buffers">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...im ersten Entwurf dachte ich, daß der Kern der Berechnung aus dem direkten Aufruf von C-Funktionen bestehen muß, weil dadurch die Berechnung maximal performant wird; daraus ergab sich auch, daß der »pull-call« direkt ein Array von Buffer(pointern) weitergibt. Das hat sich auf mehreren Ebenen als naiv herausgestellt. Zunächst einmal, die Berechnung soll stets von einem externen plug-in oder einer Library übernommen werden; daher ist klar, daß jeder Aufruf <i>zwangsläufig durch einen Adapter-Layer geht. </i>Demzufolge wird es im »pull-call« stets darum gehen, gewisse Handles oder andere symbolische Repräsentationen weiterzuleiten, und die <i>vorgeblich besonders performante low-Leveligkeit</i> ist nichts als Augenwischerei, denn die Laufzeit wird ohnehin <i>in der Berechnungsfunktion</i> verbracht. Viel wichtiger ist es, <i>explizite Auswertungen zur Laufzeit</i> zu vermeiden, sofern diese bereits vorneweg für ein gesamtes Segment gemacht werden können.
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1713743244876" ID="ID_788939728" MODIFIED="1713743250142" TEXT="Einschätzung">
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1713743251125" ID="ID_1888464433" MODIFIED="1713743458090" TEXT="was ich schon befürchtet habe — sehr detailiert ausimplementiert und doch „frei schwebend“">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1713743423876" ID="ID_1769296388" MODIFIED="1713743465725">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
es besteht (weiterhin) ein bedenkliches <b>Henne-oder-Ei-Problem</b>
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1713743468114" ID="ID_1741718774" MODIFIED="1713743494782" TEXT="das hat mich damals (2012) bereits an der weiteren Implemetierung gehindert"/>
|
||||
<node CREATED="1713743498674" ID="ID_184410399" MODIFIED="1713743520587" TEXT="und es besteht bis heute nahezu unverändert weiter"/>
|
||||
<node BACKGROUND_COLOR="#ede064" COLOR="#fa002a" CREATED="1713743525943" ID="ID_640272147" MODIFIED="1713743654579" TEXT="ProcNode �� Invocation �� JobTicket �� Fixture �� ProcNode">
|
||||
<icon BUILTIN="clanbomber"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1713743677951" ID="ID_1878090601" MODIFIED="1713743711574" TEXT="es gibt keinerlei brauchbare Testabdeckung (genau wegen diesem Problem)">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node COLOR="#583453" CREATED="1713743739274" ID="ID_1675331897" MODIFIED="1713744114670" TEXT="ich bin damals ein Stück weit dem Template-Metaprogramming verfallen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...weil es so stringent ist und man direkt bei der Compilation eine Rückmeldung bekommt; aufgrund der fehlenden Außen-Verankerung habe ich lange gar nicht gemerkt, daß die <i>compiletime vs runtime division</i>  eine Hürde darstellt, die die verlockende Idee praktisch unmöglich macht. Andererseits habe ich hier erstmals die sehr fruchbare Idee des compiletime-Layering angewendet, konnte damals aber nicht richtig damit umgehen. Inzwischen habe ich die Möglichkeiten und Grenzen dieser Idee verstanden und erfolgreich angewandt (für die GenNode, das Diff-System, die Event-Log-Suche und den IterExplorer)
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="smiley-oh"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1713744037866" ID="ID_863347622" MODIFIED="1713744085721" TEXT="ich sollte das Thema komplett neu aufrollen — ausgehend vom »turnout system«">
|
||||
<linktarget COLOR="#483e74" DESTINATION="ID_863347622" ENDARROW="Default" ENDINCLINATION="456;0;" ID="Arrow_ID_1595016691" SOURCE="ID_201859142" STARTARROW="None" STARTINCLINATION="426;67;"/>
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1713793648079" ID="ID_907714892" MODIFIED="1713793672085" TEXT="aber vorhandener Code kann weitgehend mitverwendet werden">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1713795084878" ID="ID_900623108" MODIFIED="1713795152331" TEXT="das Buffer-Protocol gilt als gesetzt">
|
||||
<linktarget COLOR="#3c61b7" DESTINATION="ID_900623108" ENDARROW="Default" ENDINCLINATION="-475;-40;" ID="Arrow_ID_245920004" SOURCE="ID_267762321" STARTARROW="None" STARTINCLINATION="-218;8;"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1713819850506" ID="ID_1750491613" MODIFIED="1713819862771" TEXT="zu klären">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713819879109" ID="ID_943908122" MODIFIED="1713819899886" TEXT="Entwurf und Aufbau">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1713820093819" ID="ID_1401449333" MODIFIED="1713823888370" TEXT="Zugangsweg">
|
||||
<icon BUILTIN="forward"/>
|
||||
<node CREATED="1713820133641" ID="ID_888185703" MODIFIED="1713820154894" TEXT="Gliederung in drei Stufen">
|
||||
<node CREATED="1713820156058" ID="ID_196721850" MODIFIED="1713820161892" TEXT="Node-Graph bauen"/>
|
||||
<node CREATED="1713820162707" ID="ID_754976135" MODIFIED="1713820243651" TEXT="Turnout-System anlegen"/>
|
||||
<node CREATED="1713820261701" ID="ID_308303726" MODIFIED="1713820265885" TEXT="Einzelausführung linken"/>
|
||||
</node>
|
||||
<node CREATED="1713823582760" ID="ID_857212769" MODIFIED="1713823865318" TEXT="Klärung: einfach ⟶ komplex">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713823596151" ID="ID_252499492" MODIFIED="1713823821817" TEXT="Node-Grundstruktur">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713823635758" ID="ID_899523613" MODIFIED="1713823821818" TEXT="Gundelemente des Aufrufs">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713823642113" ID="ID_1687015571" MODIFIED="1713823821818" TEXT="TurnoutSystem als Zentral-Element">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713823682795" ID="ID_868323088" MODIFIED="1713823821819" TEXT="Klären der Probleme mit den Prototypen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713823751762" ID="ID_1428576691" MODIFIED="1713823821819" TEXT="Node-Basisfälle">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713823756010" ID="ID_1046868216" MODIFIED="1713823821820" TEXT="einfachst möglicher Generator">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713823770168" ID="ID_299121993" MODIFIED="1713823821820" TEXT="herausführen in Exit-Node">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713823762377" ID="ID_1217889312" MODIFIED="1713823821820" TEXT="einfache Processor-Node">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1713823918124" ID="ID_1749289662" MODIFIED="1713823922851" TEXT="Testbarkeit">
|
||||
<node CREATED="1713823928074" ID="ID_1359856614" MODIFIED="1713823939046" TEXT="Node muß direkt konstruierbar sein"/>
|
||||
<node CREATED="1713823944920" ID="ID_1929417005" MODIFIED="1713823954451" TEXT="Node muß Verschaltungs-API bieten"/>
|
||||
<node CREATED="1713823999457" ID="ID_1445622002" MODIFIED="1713824007500" TEXT="Steuerbarkeit per TurnoutSystem"/>
|
||||
<node CREATED="1713824070968" ID="ID_1427325952" MODIFIED="1713824271145" TEXT="Struktur TurnoutSystem ableiten"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1713821236750" ID="ID_1655113761" MODIFIED="1713823539175" TEXT="testgetriebener Aufbau">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713821606607" ID="ID_492497884" MODIFIED="1713823536290" TEXT="NodeDevel_test">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1713823362710" ID="ID_66967253" MODIFIED="1713823377315" TEXT="Hilfsmittel zur Entwicklung und zum Aufbau"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1713821694886" ID="ID_1102491970" MODIFIED="1713823534427" TEXT="NodeLinkage_test">
|
||||
<icon BUILTIN="flag-pink"/>
|
||||
<node CREATED="1713823379083" ID="ID_673154392" MODIFIED="1713823395389" TEXT="die drei Stufen der Verschaltung"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1713823407007" ID="ID_392149724" MODIFIED="1713823477637" STYLE="bubble" TEXT="▶ fördert den Kern des Aufbaus ◀">
|
||||
<edge COLOR="#985353"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1713821706444" ID="ID_1035135639" MODIFIED="1713823527160" TEXT="NodeBasic_test">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
<node CREATED="1713823489509" ID="ID_738439301" MODIFIED="1713823496942" TEXT="idealerweise nebenbei mit anlegen"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1713821728361" ID="ID_1456365802" MODIFIED="1713823527161" TEXT="NodeFactory_test">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
<node CREATED="1713823503251" ID="ID_1961332963" MODIFIED="1713823519437" TEXT="möglicherweise einfachsten Fall hier"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713824325760" ID="ID_1661035289" MODIFIED="1713824498751" TEXT="BufferProviderProtocol_test">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1713824328087" ID="ID_1065671274" MODIFIED="1713824335184" TEXT="Standard-Fall fertigstellen"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1713824835597" ID="ID_1311484733" MODIFIED="1713825651947" TEXT="Dokumentation">
|
||||
<icon BUILTIN="bell"/>
|
||||
<node BACKGROUND_COLOR="#c5aba5" CREATED="1713824849805" ID="ID_261141897" MODIFIED="1713825857023" TEXT="erfolgt im TiddlyWiki">
|
||||
<arrowlink COLOR="#7881a8" DESTINATION="ID_738696775" ENDARROW="Default" ENDINCLINATION="-1101;-221;" ID="Arrow_ID_475958331" STARTARROW="None" STARTINCLINATION="-1253;151;"/>
|
||||
<icon BUILTIN="info"/>
|
||||
</node>
|
||||
<node CREATED="1713825527837" ID="ID_629287654" MODIFIED="1713825543551" TEXT="Konzept / Protocol umgestalten"/>
|
||||
<node CREATED="1713825545675" ID="ID_366279400" MODIFIED="1713825552646" TEXT="RenderMechanics anpassen"/>
|
||||
<node CREATED="1713825555297" ID="ID_886335223" MODIFIED="1713825560834" TEXT="RenderImplDetails aktualisieren"/>
|
||||
<node CREATED="1713825561360" ID="ID_1766337727" MODIFIED="1713825572283" TEXT="RenderEntities komplett neu gestalten"/>
|
||||
<node CREATED="1713825583890" ID="ID_768871043" MODIFIED="1713825602591" TEXT="Wiring und FeedManifold"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1687302645431" ID="ID_1377069136" MODIFIED="1687302651074" TEXT="Aufruf-Schnittstelle">
|
||||
<node CREATED="1713819959995" ID="ID_179899941" MODIFIED="1713819974612" TEXT="für den Modell-Aufbau"/>
|
||||
<node CREATED="1713819975157" ID="ID_169491541" MODIFIED="1713819978793" TEXT="für die Job-Planung"/>
|
||||
<node CREATED="1713819979316" ID="ID_1674780860" MODIFIED="1713820000472" TEXT="für die Ausführung"/>
|
||||
<node CREATED="1713820001615" ID="ID_1711530409" MODIFIED="1713820004276" TEXT="zum Test"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1687302361438" ID="ID_519176123" MODIFIED="1687302695659" TEXT="Umgang mit der DataSink">
|
||||
<linktarget COLOR="#7d3f56" DESTINATION="ID_519176123" ENDARROW="Default" ENDINCLINATION="-1337;-138;" ID="Arrow_ID_1252848442" SOURCE="ID_819115625" STARTARROW="None" STARTINCLINATION="-721;60;"/>
|
||||
<icon BUILTIN="hourglass"/>
|
||||
|
|
@ -118119,6 +118436,7 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1702415678299" ID="ID_1106874700" MODIFIED="1702416416054" TEXT="TiddlyWiki">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node CREATED="1702416367474" ID="ID_954748325" LINK="file:///Lager/heim/devel/lumi/wiki/renderengine.html#PlaybackVerticalSlice%20RenderEngine%20Scheduler%20SchedulerWorker%20SchedulerMemory%20RenderActivity%20Player%20FrameDispatcher%20JobPlanningPipeline%20PlayProcess%20Rendering%20ProcNode%20NodeOperationProtocol" MODIFIED="1702416400953" TEXT="Permalink-1"/>
|
||||
<node CREATED="1713825795423" ID="ID_1279363046" LINK="file:///Lager/heim/devel/lumi/wiki/renderengine.html#PlaybackVerticalSlice%20RenderEngine%20ProcNode%20RenderProcess%20NodeOperationProtocol%20RenderMechanics%20RenderImplDetails%20WiringDescriptor%20BufferTable%20BufferProvider%20BuffHandle%20BufferMetadata%20OutputManagement%20OutputSlot" MODIFIED="1713825800705" TEXT="Permalink-2"/>
|
||||
<node COLOR="#338800" CREATED="1702416739656" ID="ID_768711282" MODIFIED="1713568867103" TEXT="Scheduler">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1702416780922" ID="ID_1005887393" MODIFIED="1713568864194" TEXT="RenderActivity">
|
||||
|
|
@ -118177,6 +118495,41 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713825427642" ID="ID_738696775" MODIFIED="1713825857023" TEXT="Invocation">
|
||||
<linktarget COLOR="#7881a8" DESTINATION="ID_738696775" ENDARROW="Default" ENDINCLINATION="-1101;-221;" ID="Arrow_ID_475958331" SOURCE="ID_261141897" STARTARROW="None" STARTINCLINATION="-1253;151;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1713824862942" ID="ID_1909421670" MODIFIED="1713824877100" TEXT="ProcNode — Einstiegsseite"/>
|
||||
<node CREATED="1713824933924" ID="ID_493944146" MODIFIED="1713824943191" TEXT="RenderProcess — Übersicht"/>
|
||||
<node CREATED="1713824953018" ID="ID_276155929" MODIFIED="1713824968468" TEXT="NodeOperationProtocol — Konzept"/>
|
||||
<node CREATED="1713825035029" ID="ID_549287819" MODIFIED="1713825083212" TEXT="RenderMechanics — Invocation-Struktur"/>
|
||||
<node CREATED="1713825093447" ID="ID_1279773508" MODIFIED="1713825107025" TEXT="RenderImplDetails — Sammlung von Detailaspekten"/>
|
||||
<node CREATED="1713825119373" ID="ID_1135448833" MODIFIED="1713825128606" TEXT="WiringDescriptor — Verschaltung">
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1713825129642" HGAP="23" ID="ID_384013577" MODIFIED="1713825443352" TEXT="wird vermutlich umbenannt" VSHIFT="1">
|
||||
<font NAME="SansSerif" SIZE="10"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1713825180819" ID="ID_1989875443" MODIFIED="1713825185303" TEXT="Einzel-Elemente">
|
||||
<node CREATED="1713825170661" ID="ID_159721409" MODIFIED="1713825179856" TEXT="BufferTable">
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1713825129642" HGAP="23" ID="ID_235865414" MODIFIED="1713825443352" TEXT="wird vermutlich umbenannt" VSHIFT="1">
|
||||
<font NAME="SansSerif" SIZE="10"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1713825226079" ID="ID_1309107373" MODIFIED="1713825459346" TEXT="StateAdapter">
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1713825129642" HGAP="23" ID="ID_1249060254" MODIFIED="1713825443352" TEXT="wird vermutlich umbenannt" VSHIFT="1">
|
||||
<font NAME="SansSerif" SIZE="10"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1713825230197" ID="ID_1105758480" MODIFIED="1713825233824" TEXT="StateProxy"/>
|
||||
<node CREATED="1713825281234" ID="ID_220738428" MODIFIED="1713825282602" TEXT="BufferProvider"/>
|
||||
<node CREATED="1713825295268" ID="ID_1163491513" MODIFIED="1713825296320" TEXT="BuffHandle"/>
|
||||
<node CREATED="1713825314633" ID="ID_896282050" MODIFIED="1713825315510" TEXT="BufferMetadata"/>
|
||||
<node CREATED="1713825372517" ID="ID_483066313" MODIFIED="1713825375024" TEXT="OutputManager"/>
|
||||
<node CREATED="1713825375559" ID="ID_1937537099" MODIFIED="1713825378379" TEXT="OutputSlot"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1702415745677" ID="ID_889077707" MODIFIED="1702416408821" TEXT="Website">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue