Invocation: draft setup for engine context and config

Prototyping and analysis revealed that some aspects of the render node wiring
refers to effectively global services and can thus be taken out of the picture
by relying on classical ''Dependency Injection''

Consequently, `EngineCtx` needs a default implementation, which brings up
a simplistic fall-back version of those services in support for prototyping.
Moreover, dedicated lifecycle functionality must be provided to bring up
and shut down the actual service instances intended for operational use.
This commit is contained in:
Fischlurch 2024-10-11 16:57:10 +02:00
parent a02873a015
commit 4a83f97c9e
6 changed files with 266 additions and 64 deletions

View file

@ -46,7 +46,7 @@
#include "lib/symbol.hpp"
#include "lib/hash-value.h"
#include "steam/engine/buffhandle.hpp"
#include "steam/engine/engine-ctx.hpp"
//#include "steam/engine/engine-ctx.hpp"
#include "steam/engine/type-handler.hpp"
#include "steam/engine/buffer-local-tag.hpp"
#include "lib/nocopy.hpp"

View file

@ -0,0 +1,77 @@
/*
EngineCtxFacilities - Implementation of global render engine operational services
Copyright (C) Lumiera.org
2024, 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 engine-ctx-facilities.hpp
** Implementation parts of render engine operational services.
** @warning as of 10/2024 a preliminary integration of Render-Engine underway ////////////////////////////////////////TICKET #1367
*/
#include "steam/engine/engine-ctx-facilities.hpp"
//#include <string>
//#include <memory>
//#include <functional>
namespace steam {
namespace engine{
// using std::string;
// using lumiera::Subsys;
// using std::function;
// using std::bind;
// using std::ref;
namespace { // hidden local details of the service implementation....
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : Temp Placeholder
BufferProvider* kabooom{nullptr};
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : Temp Placeholder
} // (End) hidden service impl details
/** storage for the EngineService interface object */
lib::Depend<EngineCtx> EngineCtx::access;
/** */
EngineCtx::EngineCtx()
: mem{*kabooom}
, cache{*kabooom}
{ }
/** core operation: blah blubb....
*/
}} // namespace steam::engine

View file

@ -0,0 +1,62 @@
/*
ENGINE-CTX-FACILITIES.hpp - Implementation of global render engine operational services
Copyright (C) Lumiera.org
2024, 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 engine-ctx-facilities.hpp
** Implementation of render engine operational configuration and services.
** Without further setup, [dependency injection](\ref depend.hpp) will establish a
** minimalistic default instantiation of these services, sufficient for demonstration
** and tests. For the real render engine however, dedicated service instances will be
** created and managed actively.
** @todo and we'll have yet to »figure out« what specifically to do for these
** services and how to start an active render engine for productive use.
** @todo WIP-WIP 10/2024 strive at first complete prototypical engine usage ////////////////////////////////////////TICKET #1367
**
** @see engine-ctx.hpp
** @see weaving-pattern-builder.hpp
*/
#ifndef STEAM_ENGINE_ENGINE_CTX_FACILITIES_H
#define STEAM_ENGINE_ENGINE_CTX_FACILITIES_H
#include "steam/engine/engine-ctx.hpp"
//#include <utility>
//#include <memory>
namespace steam {
namespace engine {
// using lib::Literal;
// using std::unique_ptr;
// using std::forward;
class EngineCtx::Facilities
{
public:
};
}} // namespace steam::engine
#endif /*STEAM_ENGINE_ENGINE_CTX_FACILITIES_H*/

View file

@ -26,11 +26,13 @@
** render node connectivity, where they are used for each invocation of a render job.
**
** The EngineCtx itself is meant to be [dependency injected](\ref lib::Depend), so that
** tests can use suitably adapted variants for verifications.
** tests can use suitably adapted variants for verifications. The default instantiation
** provides a naive self-contained implementation suitable for demonstration and test.
** @todo who is responsible for setup of the services for the actual render engine?
** Might be closely related to brining up façade interfaces.
** @todo WIP 8/2024 provide render node structures
** @todo WIP-WIP 10/2024 provide render node structures
**
** @see engine-ctx-facilities.hpp implementation
** @see buffer-provider.hpp
** @see buffhandle.hpp
*/
@ -44,14 +46,14 @@
#include "lib/nocopy.hpp"
//#include <utility>
#include <memory>
//#include <memory>
namespace steam {
namespace engine {
// using lib::Literal;
using std::unique_ptr;
// using std::unique_ptr;
// using std::forward;
class EngineCtx
@ -60,11 +62,16 @@ namespace engine {
public:
BufferProvider& mem;
BufferProvider& cache;
BufferProvider& output;
// BufferProvider& output; /////////////////////////OOO presumably no longer necessary
class Services;
class Facilities;
static lib::Depend<EngineCtx> access;
private:
EngineCtx();
friend class lib::DependencyFactory<EngineCtx>;
};

View file

@ -280,9 +280,9 @@ namespace engine {
* the input and output data feeds (buffers) into a processing function.
* @tparam CONF a configuration / policy base class
* @note assumptions made regarding the overall structure
* - CONF::Feed defines an _invocation adapter_ for the processing function
* - CONF::buildFeed is a functor to (repeatedly) build `Feed` instances
* - this adapter in turn embeds a `FeedManifold<N>` to hold
* - `CONF::Feed` defines an _invocation adapter_ for the processing function
* - `CONF::buildFeed()` is a functor to (repeatedly) build `Feed` instances
* - the _invocation adapter_ in turn embeds a `FeedManifold<N>` to hold
* + an array of input buffer pointers
* + an array of output buffer pointers
* + `CONF::MAX_SIZ` limits both arrays

View file

@ -7199,9 +7199,7 @@
<node CREATED="1506180752104" ID="ID_534962278" MODIFIED="1506180752104" TEXT="extend the path by ...creates uncovered extension sequence"/>
<node CREATED="1506180752104" ID="ID_552405160" MODIFIED="1576282358128" TEXT="create suitable children">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...halten wir besser raus aus diesem Design.
@ -7255,9 +7253,7 @@
</node>
<node CREATED="1504458255403" FOLDED="true" HGAP="41" ID="ID_246632028" MODIFIED="1576282358127" TEXT="F&#xe4;lle" VSHIFT="9">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...was f&#252;r verschiedene Arten von Zugriff
@ -7292,9 +7288,7 @@
<arrowlink COLOR="#535189" DESTINATION="ID_1448696607" ENDARROW="Default" ENDINCLINATION="-391;179;" ID="Arrow_ID_1194909838" STARTARROW="None" STARTINCLINATION="691;-200;"/>
<node CREATED="1504479456449" ID="ID_959239388" MODIFIED="1518487921063">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
m&#246;gliche
@ -7404,9 +7398,7 @@
<node CREATED="1508109233808" ID="ID_816587529" MODIFIED="1518487921064" TEXT="erfordert gemeinsames Interface"/>
<node CREATED="1508109252574" ID="ID_1185099286" MODIFIED="1518487921064">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
betrachte ich als <i>ungesund</i>
@ -7483,9 +7475,7 @@
<icon BUILTIN="help"/>
<node CREATED="1507940046234" ID="ID_577613088" MODIFIED="1561827464792">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
auf welche Eigenschaften
@ -8012,9 +8002,7 @@
<icon BUILTIN="button_ok"/>
<node CREATED="1508539226014" ID="ID_1714773115" MODIFIED="1576282358122" TEXT="informell...">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
Tiefensuche &#252;ber die reale UI-Topologie
@ -8513,9 +8501,7 @@
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1510446221317" HGAP="52" ID="ID_1590483406" MODIFIED="1535892751360" VSHIFT="42">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
sind Monaden
@ -9674,9 +9660,7 @@
<icon BUILTIN="idea"/>
<node CREATED="1512440307185" ID="ID_1513737160" MODIFIED="1512440431319" TEXT="weil das doch nicht gecheckt werden kann">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...ohne da&#223; die Funktionen auch virtuell sind,
@ -11847,9 +11831,7 @@
<node CREATED="1514340273349" ID="ID_1117812340" MODIFIED="1514908827230" TEXT="kein match"/>
<node BACKGROUND_COLOR="#e2f2c8" CREATED="1514340293010" ID="ID_108821287" MODIFIED="1514908880409">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
ist <i>keine </i>L&#246;sung
@ -15774,9 +15756,7 @@
<node CREATED="1504479807066" ID="ID_1318651039" MODIFIED="1518487921072" TEXT="m&#xe4;&#xdf;ig komplex"/>
<node CREATED="1504479813553" ID="ID_141842675" MODIFIED="1576282358111" TEXT="ehr effizient">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<ul>
<li>
@ -85795,15 +85775,25 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1714181482947" ID="ID_845562088" MODIFIED="1714181555132" TEXT="Ticket #905 als Anker verwenden">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1714181482947" ID="ID_845562088" LINK="https://issues.lumiera.org/ticket/905" MODIFIED="1728656690658" TEXT="Ticket #905 als Anker verwenden">
<linktarget COLOR="#c80a37" DESTINATION="ID_845562088" ENDARROW="Default" ENDINCLINATION="-130;10;" ID="Arrow_ID_66382855" SOURCE="ID_943908122" STARTARROW="None" STARTINCLINATION="42;-31;"/>
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1714181927456" ID="ID_7655935" MODIFIED="1714181946722" TEXT="Tracking-Ticket #1364 &#xbb;Render Node Network&#xab;">
<node COLOR="#435e98" CREATED="1714181927456" ID="ID_7655935" LINK="https://issues.lumiera.org/ticket/1364" MODIFIED="1728656675946" TEXT="Tracking-Ticket #1364 &#xbb;Render Node Network&#xab;">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1718845242691" ID="ID_377937950" MODIFIED="1718845248435" TEXT="#1367 build a node invocation">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728656618228" ID="ID_562698637" LINK="https://issues.lumiera.org/ticket/826" MODIFIED="1728656658677" TEXT="#826 render nodes invocation sequence">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1718845256006" ID="ID_130047105" MODIFIED="1718845263388" TEXT="als direkter Treiber f&#xfc;r die n&#xe4;chsten Arbeiten"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1718845242691" ID="ID_377937950" LINK="https://issues.lumiera.org/ticket/1367" MODIFIED="1728656683891" TEXT="#1367 build a node invocation">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1718845256006" ID="ID_130047105" MODIFIED="1718845263388" TEXT="als direkter Treiber f&#xfc;r die n&#xe4;chsten Arbeiten">
<node CREATED="1728657539476" ID="ID_953218363" MODIFIED="1728657553150" TEXT="mu&#xdf; den NodeBuilder und PortBuilder konstruieren k&#xf6;nnen"/>
<node CREATED="1728657554481" ID="ID_1763878258" MODIFIED="1728658107738" TEXT="brauche ein Default-Setup f&#xfc;r EngineCtx">
<arrowlink COLOR="#496d98" DESTINATION="ID_980783783" ENDARROW="Default" ENDINCLINATION="-1507;-94;" ID="Arrow_ID_11368875" STARTARROW="None" STARTINCLINATION="392;28;"/>
</node>
<node CREATED="1728657599660" ID="ID_1919244666" MODIFIED="1728657606815" TEXT="mu&#xdf; einfache Node bauen k&#xf6;nnen"/>
<node CREATED="1728657607703" ID="ID_1131573155" MODIFIED="1728657612430" TEXT="mu&#xdf; Node aufrufen k&#xf6;nnen"/>
</node>
<node CREATED="1718845263947" ID="ID_1747091374" MODIFIED="1718845332197" TEXT="Ziel: den NodeLinkage_test aufbauen">
<arrowlink COLOR="#fe018a" DESTINATION="ID_673154392" ENDARROW="Default" ENDINCLINATION="3;-16;" ID="Arrow_ID_894402730" STARTARROW="None" STARTINCLINATION="-151;11;"/>
<icon BUILTIN="yes"/>
@ -88425,8 +88415,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1721834025376" ID="ID_853984700" MODIFIED="1721834036731" TEXT="aus zus&#xe4;tzlichen &#xdc;berlegungen zum Caching"/>
<node CREATED="1721834044974" ID="ID_1751951250" MODIFIED="1721834055712" TEXT="und als Fallback: ein generischer Memory-Buffer-Provider"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1721835912891" ID="ID_174258961" MODIFIED="1721835947007" TEXT="Aufgabe f&#xfc;r die Builder-Mechanik">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1721835912891" ID="ID_174258961" MODIFIED="1728654004568" TEXT="Aufgabe f&#xfc;r die Builder-Mechanik">
<icon BUILTIN="button_ok"/>
<node CREATED="1721835960018" ID="ID_393730575" MODIFIED="1721835975204" TEXT="der BufferDescriptor gilt als opaques Handle"/>
<node CREATED="1721835976166" ID="ID_1045731243" MODIFIED="1721835984813" TEXT="er ist implizit an den BufferProvider gebunden">
<node COLOR="#5b280f" CREATED="1721835986478" ID="ID_131800806" MODIFIED="1721836014435" TEXT="man k&#xf6;nnte das lockern">
@ -88454,7 +88444,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1721838715106" ID="ID_742042797" MODIFIED="1721838751008" TEXT="unangenehme Konsequenz &#x27f9; Provider mu&#xdf; vor derm Descriptor festgelegt sein">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1721838715106" ID="ID_742042797" MODIFIED="1728654001444" TEXT="unangenehme Konsequenz &#x27f9; Provider mu&#xdf; vor derm Descriptor festgelegt sein">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1721838753885" ID="ID_117794585" MODIFIED="1721838768742" TEXT="das widerspricht unimttelbar der Builder-API-Logik"/>
<node CREATED="1721838769522" ID="ID_230120050" MODIFIED="1721838872487" TEXT="und stellt eine l&#xe4;stige / problematische Einschr&#xe4;nkung dar">
@ -88547,7 +88537,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="forward"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1721842271062" ID="ID_957156267" MODIFIED="1721842285156" TEXT="zweite L&#xf6;sung gem&#xe4;&#xdf; YAGNI">
<node COLOR="#435e98" CREATED="1721842271062" ID="ID_957156267" MODIFIED="1728653995190" TEXT="zweite L&#xf6;sung gem&#xe4;&#xdf; YAGNI">
<icon BUILTIN="yes"/>
</node>
</node>
@ -88557,7 +88547,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node COLOR="#338800" CREATED="1721842328021" ID="ID_1494182835" MODIFIED="1721844743382" TEXT="selectOutputSlot()">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1721842335404" ID="ID_1250028316" MODIFIED="1721842383194" TEXT="setAllCached()"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1721842335404" ID="ID_1250028316" MODIFIED="1728654030097" TEXT="setAllCached()">
<icon BUILTIN="bell"/>
</node>
<node CREATED="1721842384902" ID="ID_533404449" MODIFIED="1721842395765" TEXT="setCached(i...i)"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1721842523924" ID="ID_1665424296" MODIFIED="1721842678142" TEXT="zudem: &#xbb;Service-Kontext&#xab; bereitstellen">
@ -88566,8 +88558,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1722274451779" ID="ID_1072443707" LINK="https://issues.lumiera.org/ticket/1373" MODIFIED="1722274484633" TEXT="#1373 Default-BufferProvider">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1722274502942" ID="ID_1076067994" LINK="https://issues.lumiera.org/ticket/1374" MODIFIED="1722275936824" TEXT="#1374 Output-BufferProvider">
<arrowlink COLOR="#861f49" DESTINATION="ID_80799942" ENDARROW="Default" ENDINCLINATION="-75;-520;" ID="Arrow_ID_1180739231" STARTARROW="None" STARTINCLINATION="1006;82;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1722274502942" ID="ID_1076067994" LINK="https://issues.lumiera.org/ticket/1374" MODIFIED="1728653444493" TEXT="#1374 Output-BufferProvider">
<arrowlink COLOR="#1f4486" DESTINATION="ID_80799942" ENDARROW="Default" ENDINCLINATION="-75;-520;" ID="Arrow_ID_1180739231" STARTARROW="None" STARTINCLINATION="1006;82;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
@ -88597,7 +88589,18 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<arrowlink COLOR="#426b9b" DESTINATION="ID_1427714372" ENDARROW="Default" ENDINCLINATION="-959;175;" ID="Arrow_ID_770296022" STARTARROW="None" STARTINCLINATION="-446;-54;"/>
<node CREATED="1719162514087" ID="ID_416948245" MODIFIED="1719162521740" TEXT="f&#xfc;r Working Buffers"/>
<node CREATED="1719162522590" ID="ID_545575789" MODIFIED="1719162528681" TEXT="als Front-End f&#xfc;r den Cache"/>
<node CREATED="1720485474864" ID="ID_1518497515" MODIFIED="1720485489986" TEXT="als Front-End f&#xfc;r OutputSlot / DataSink"/>
<node COLOR="#5b280f" CREATED="1720485474864" ID="ID_1518497515" MODIFIED="1728653276605" TEXT="als Front-End f&#xfc;r OutputSlot / DataSink">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
nein! jetzt direkt im Aufruf gel&#246;st
</p>
</body>
</html>
</richcontent>
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node CREATED="1721059527488" ID="ID_824337184" MODIFIED="1721059685476" TEXT="tats&#xe4;chlich liegt diese Info bereits im BufferDescriptor">
<arrowlink COLOR="#516883" DESTINATION="ID_562004793" ENDARROW="Default" ENDINCLINATION="-1136;1066;" ID="Arrow_ID_1799901944" STARTARROW="None" STARTINCLINATION="-504;-31;"/>
@ -88612,7 +88615,17 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1721866481394" ID="ID_1853457963" MODIFIED="1721866534078" TEXT="zu kl&#xe4;ren: Scope zur Verdrahtung dieser Services">
<icon BUILTIN="yes"/>
<node CREATED="1721866537521" ID="ID_1964460392" MODIFIED="1721866548867" TEXT="sie sind effektiv global"/>
<node CREATED="1721866551423" ID="ID_779602459" MODIFIED="1721866584882" TEXT="problematisch dabei: der Output-BufferProivder">
<node COLOR="#5b280f" CREATED="1721866551423" ID="ID_779602459" MODIFIED="1728654358835" TEXT="problematisch dabei: der Output-BufferProivder">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
ja: ist problematisch &#8212; und genau deshalb ziehe ich jetzt vor, den Output-Buffer direkt &#252;ber den Aufruf bereitzustellen; dieser Aspekt spielt damit f&#252;r das Thema Dependency-Injection keine Rolle mehr
</p>
</body>
</html>
</richcontent>
<icon BUILTIN="button_cancel"/>
<node CREATED="1721866589257" ID="ID_1094487880" MODIFIED="1721866862199" TEXT="dieser mu&#xdf; allerdings einen konkreten Bezug herstellen">
<richcontent TYPE="NOTE"><html>
<head/>
@ -88679,7 +88692,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</html></richcontent>
</node>
</node>
<node COLOR="#5b280f" CREATED="1721956892200" ID="ID_1451110951" MODIFIED="1722470788939" TEXT="strukturell w&#xe4;re das Spezial-Tag die beste L&#xf6;sung">
<node COLOR="#5b280f" CREATED="1721956892200" FOLDED="true" ID="ID_1451110951" MODIFIED="1722470788939" TEXT="strukturell w&#xe4;re das Spezial-Tag die beste L&#xf6;sung">
<arrowlink COLOR="#4395d3" DESTINATION="ID_1329080039" ENDARROW="Default" ENDINCLINATION="-105;0;" ID="Arrow_ID_1999279188" STARTARROW="None" STARTINCLINATION="6;-21;"/>
<arrowlink COLOR="#414bc3" DESTINATION="ID_603785440" ENDARROW="Default" ENDINCLINATION="-465;-28;" ID="Arrow_ID_1386315858" STARTARROW="None" STARTINCLINATION="-31;500;"/>
<icon BUILTIN="yes"/>
@ -88776,12 +88789,13 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1722005561810" ID="ID_605283552" MODIFIED="1722005604557" TEXT="zu dem Zeitpunkt haben wir einen Buffer-Descriptor vorliegen">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1722006966966" ID="ID_80799942" MODIFIED="1722275926136" TEXT="neues API ben&#xf6;tigt">
<linktarget COLOR="#861f49" DESTINATION="ID_80799942" ENDARROW="Default" ENDINCLINATION="-75;-520;" ID="Arrow_ID_1180739231" SOURCE="ID_1076067994" STARTARROW="None" STARTINCLINATION="1006;82;"/>
<icon BUILTIN="flag-pink"/>
<node COLOR="#338800" CREATED="1722006966966" ID="ID_80799942" MODIFIED="1728653437446" TEXT="neues API ben&#xf6;tigt">
<linktarget COLOR="#1f4486" DESTINATION="ID_80799942" ENDARROW="Default" ENDINCLINATION="-75;-520;" ID="Arrow_ID_1180739231" SOURCE="ID_1076067994" STARTARROW="None" STARTINCLINATION="1006;82;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1722006974253" ID="ID_1472014079" MODIFIED="1722006984025" TEXT="aufrufbar auf/mit einem BufferDescriptor"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1722006984755" ID="ID_1802025811" MODIFIED="1722092863044" TEXT="kann ein LocalTag setzen">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1722006984755" ID="ID_1802025811" MODIFIED="1728653433016" TEXT="kann ein LocalTag setzen">
<icon BUILTIN="button_ok"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1722092776817" ID="ID_1178263086" MODIFIED="1722092793427" TEXT="Bezugspunkt: BufferMetadata::lock()">
<node CREATED="1722092795833" ID="ID_444477764" MODIFIED="1722092803241" TEXT="konstruiert einen abgeleiteten Entry"/>
<node CREATED="1722092804037" ID="ID_696205920" MODIFIED="1722092813545" TEXT="konstruiert dabei einen abgeleiteten Key"/>
@ -89070,10 +89084,11 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1722384533324" ID="ID_128884200" MODIFIED="1722392116636" TEXT="API-Erg&#xe4;nzung: LocalTag durchreichen">
<node COLOR="#435e98" CREATED="1722384533324" ID="ID_128884200" MODIFIED="1728654385202" TEXT="API-Erg&#xe4;nzung: LocalTag durchreichen">
<arrowlink COLOR="#8c1444" DESTINATION="ID_450967698" ENDARROW="Default" ENDINCLINATION="-313;-10;" ID="Arrow_ID_414353144" STARTARROW="None" STARTINCLINATION="-367;0;"/>
<linktarget COLOR="#8e30c2" DESTINATION="ID_128884200" ENDARROW="Default" ENDINCLINATION="53;-3;" ID="Arrow_ID_182326182" SOURCE="ID_70781847" STARTARROW="None" STARTINCLINATION="-9;58;"/>
<icon BUILTIN="flag-pink"/>
<icon BUILTIN="yes"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1722392284686" ID="ID_1073120762" MODIFIED="1722392451719" TEXT="mu&#xdf; das wohl doch in den Buffer-Descriptor einbauen">
<richcontent TYPE="NOTE"><html>
<head/>
@ -89085,6 +89100,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</html></richcontent>
</node>
<node CREATED="1722392313295" ID="ID_854136592" MODIFIED="1722392349478" TEXT="allerdings nur transient &#x2014; damit eine andere Type-ID ankommt"/>
<node CREATED="1728654390651" ID="ID_1271433973" LINK="#ID_475931392" MODIFIED="1728654403283" TEXT="(letzten Endes anders gel&#xf6;st)"/>
</node>
</node>
</node>
@ -89117,9 +89133,22 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<linktarget COLOR="#8c1444" DESTINATION="ID_450967698" ENDARROW="Default" ENDINCLINATION="-313;-10;" ID="Arrow_ID_414353144" SOURCE="ID_128884200" STARTARROW="None" STARTINCLINATION="-367;0;"/>
</node>
<node CREATED="1722445242908" ID="ID_1389873312" MODIFIED="1722445279859" TEXT="allerdings wird dieses speziell pr&#xe4;parierte BuffHandle besser direkt eingef&#xfc;gt"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1722384890441" ID="ID_438526459" MODIFIED="1722385120612" TEXT="zu kl&#xe4;ren bleibt: wie wird diese Info genau eingebunden?">
<node COLOR="#5b280f" CREATED="1722384890441" ID="ID_438526459" MODIFIED="1728653318306" TEXT="zu kl&#xe4;ren bleibt: wie wird diese Info genau eingebunden?">
<arrowlink COLOR="#932840" DESTINATION="ID_657216791" ENDARROW="Default" ENDINCLINATION="103;-2;" ID="Arrow_ID_1546346335" STARTARROW="None" STARTINCLINATION="-431;18;"/>
<icon BUILTIN="help"/>
<icon BUILTIN="button_cancel"/>
<node BACKGROUND_COLOR="#c8c0b6" CREATED="1728653320962" ID="ID_965156506" MODIFIED="1728653416812" TEXT="Antwort: gar nicht"/>
<node CREATED="1728653327912" ID="ID_475931392" LINK="#ID_1963170563" MODIFIED="1728654411295" TEXT="hab dann letztlich diese L&#xf6;sung doch verworfen">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...es ist zwar gut, da&#223; es das LocalTag gibt, aber f&#252;r diesen Fall ist das eine unsinnige Trickserei; es ist viel besser, an der einzigen Stelle, wo das ben&#246;tigt wird (n&#228;mlich auf top-Level) explizit eine Flag zu setzen und dann den Buffer zu entnehmen
</p>
</body>
</html>
</richcontent>
</node>
</node>
</node>
</node>
@ -89136,12 +89165,15 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</html></richcontent>
</node>
</node>
<node CREATED="1722612598373" ID="ID_1824837145" MODIFIED="1722612697640" TEXT="Fazit: damit ist ein globaler Scope m&#xf6;glich">
<node CREATED="1722612598373" ID="ID_1824837145" MODIFIED="1728654533346" TEXT="Fazit: damit ist ein globaler Scope m&#xf6;glich">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Den OutputBufferProvider handhaben wir jetzt eine Ebene h&#246;her, und dort k&#246;nnen wir direkt ein LocalTag setzen und dann ein zugeh&#246;riges BuffHandle erstellen, das nur an einen bestimmten Buffer im Output-system gebunden ist. Alle anderen Use-Cases (Memory-Bl&#246;cke und Cache) sind ohnehin global f&#252;r die gesamte RenderEngine
Den OutputBufferProvider handhaben wir jetzt eine Ebene h&#246;her; genauer, wir hanhaben ihn direkt, denn es ist nur ein einziger Buffer auf top-Level.
</p>
<p>
Alle anderen Use-Cases (Memory-Bl&#246;cke und Cache) sind ohnehin global f&#252;r die gesamte RenderEngine, und damit handhabbar mit den normalen DI-Mechanismen
</p>
</body>
</html></richcontent>
@ -89164,6 +89196,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
<node CREATED="1722647413798" ID="ID_1607895967" MODIFIED="1722647418305" TEXT="Struktur">
<linktarget COLOR="#626f93" DESTINATION="ID_1607895967" ENDARROW="Default" ENDINCLINATION="54;426;" ID="Arrow_ID_1301744172" SOURCE="ID_478319632" STARTARROW="None" STARTINCLINATION="720;24;"/>
<node CREATED="1722647419605" ID="ID_1700431737" MODIFIED="1722647426928" TEXT="ein Front-End mit Referenzen"/>
<node CREATED="1722647429699" ID="ID_1374967687" MODIFIED="1722647484152" TEXT="ein (opaque) Services-Objekt"/>
<node CREATED="1722647819006" ID="ID_1544083902" MODIFIED="1722647825463" TEXT="Anforderungen">
@ -89180,6 +89213,22 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1722648096856" ID="ID_1675656022" MODIFIED="1722648117988" TEXT="kann explizit einen Kontext f&#xfc;r die RenderEngine hochfahren"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1728654667677" ID="ID_202980797" MODIFIED="1728654672230" TEXT="Implementierung">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1728654679810" ID="ID_180965419" MODIFIED="1728654697576" TEXT="Header: steam/engine/engine-ctx.hpp">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728655382477" ID="ID_980783783" MODIFIED="1728658107738" TEXT="Implementierung: engine-ctx-facilities.hpp|cpp">
<linktarget COLOR="#496d98" DESTINATION="ID_980783783" ENDARROW="Default" ENDINCLINATION="-1507;-94;" ID="Arrow_ID_11368875" SOURCE="ID_1763878258" STARTARROW="None" STARTINCLINATION="392;28;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1728658365910" ID="ID_831264983" MODIFIED="1728658406545" TEXT="brauche L&#xf6;sung um die Referenz-Member direkt auf eine Service-Instanz zu binden">
<icon BUILTIN="flag-pink"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1728658390507" ID="ID_1131398613" MODIFIED="1728658406545" TEXT="Implementierung vom default-ctor mu&#xdf; eine Dummy-Impl hochziehen">
<icon BUILTIN="flag-pink"/>
</node>
</node>
</node>
</node>
</node>
</node>
@ -89270,6 +89319,13 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1722445400526" ID="ID_270562222" MODIFIED="1722445411968" TEXT="daf&#xfc;r ist nur ein einziger Eingriff in shed() notwendig"/>
</node>
</node>
<node CREATED="1728653092345" ID="ID_670416401" MODIFIED="1728653095731" TEXT="Fazit">
<node CREATED="1728653097295" ID="ID_1497905125" MODIFIED="1728653116584" TEXT="der Ausgabepuffer wird direkt &#xfc;ber den Aufruf herausgef&#xfc;hrt"/>
<node CREATED="1728653130694" ID="ID_1242564198" MODIFIED="1728653148596" TEXT="das ganze Konzept des OutputBufferProvider wird damit hinf&#xe4;llig"/>
<node CREATED="1728653149728" ID="ID_478319632" MODIFIED="1728653219457" TEXT="unabh&#xe4;ngig davon bleibt Dependency-Injection notwendig f&#xfc;r Cache und Buffer-Service">
<arrowlink COLOR="#626f93" DESTINATION="ID_1607895967" ENDARROW="Default" ENDINCLINATION="54;426;" ID="Arrow_ID_1301744172" STARTARROW="None" STARTINCLINATION="720;24;"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1721003681836" ID="ID_536010685" MODIFIED="1721061587708" TEXT="erst mal: Bulk-Konfig f&#xfc;r alle">
<icon BUILTIN="flag-yellow"/>