Lumiera 0.pre.04~rc.1
»edit your freedom«
Loading...
Searching...
No Matches
steam::engine Namespace Reference

Description

Lumiera's render engine core and operational control.

Backbone of the engine, render nodes base and cooperation. A good deal of the active engine code is outside the scope of the Steam-Layer, e.g. code located in vault services and plugins.

Namespaces

 
namespace  anonymous_namespace{buffer-provider.cpp}
 
namespace  anonymous_namespace{buffer-proxy-provider.cpp}
 
namespace  anonymous_namespace{engine-ctx-facilities.cpp}
 
namespace  anonymous_namespace{engine-service.cpp}
 
namespace  anonymous_namespace{exit-node.hpp}
 
namespace  anonymous_namespace{feed-manifold.hpp}
 
namespace  anonymous_namespace{job-ticket.cpp}
 
namespace  anonymous_namespace{node-builder.hpp}
 
namespace  anonymous_namespace{node-factory.cpp}
 
namespace  anonymous_namespace{render-invocation.cpp}
 
namespace  anonymous_namespace{tracking-heap-block-provider.cpp}
 
namespace  anonymous_namespace{turnout-system.cpp}
 
namespace  anonymous_namespace{type-handler.hpp}
 
namespace  config
 Policies, definitions and tweaks to control the actual setup and behaviour of the render engine, and the way, render nodes are wired and instantiated.
 
namespace  diagn
 
 
namespace  test
 

Typedefs

using CalcStreams = std::vector< CalcStream >
 
using OutputConnection = steam::play::OutputSlot::Allocation
 
using ExitNodes = std::deque< engine::ExitNode >
 
template<class POL , class I , class E = I>
using DataBuilder = lib::SeveralBuilder< I, E, POL::template Policy >
 A builder to collect working data.
 
using StrView = std::string_view
 
using ProcNodeRef = std::reference_wrapper< ProcNode >
 
using OptionalBuff = std::optional< BuffHandle >
 
using PortRef = std::reference_wrapper< Port >
 
using Buff = StreamType::ImplFacade::DataBuffer
 
using ProcessKey = uint64_t
 
template<uint siz>
using SizMark = std::integral_constant< uint, siz >
 

Enumerations

enum  BufferState {
  NIL ,
  FREE ,
  LOCKED ,
  EMITTED ,
  BLOCKED
}
 Buffer states usable within BufferProvider and stored within the metadata. More...
 
enum  CalcType {
  PLAYBACK ,
  RENDER ,
  BACKGROUND
}
 

Classes

class  _ConCheck
 Helper for connectivity-checks in tests. More...
 
struct  _StorageSetup
 Configuration context for a FeedManifold. More...
 
class  _TurnoutDiagnostic
 
class  BuffDescr
 An opaque descriptor to identify the type and further properties of a data buffer. More...
 
class  BufferMetadata
 Registry for managing buffer metadata. More...
 
class  BufferProvider
 Interface: a facility providing and managing working buffers for media calculations. More...
 
class  BufferProxyProvider
 Adapter to expose access to data blocks via BuffHandle and the BufferProvider protocol. More...
 
class  BuffHandle
 Handle for a buffer for processing data, abstracting away the actual implementation. More...
 
struct  BuffTable
 Tables of buffer handles and corresponding dereferenced buffer pointers. More...
 
class  CalcStream
 A calculation stream groups and abstracts a series of calculation jobs, delivering frames into the configured OutputSlot in a timely fashion. More...
 
class  Compromise
 
class  Connectivity
 Interface: Description of the input and output ports, processing function and predecessor nodes for a given ProcNode. More...
 
class  DefaultQoS
 
class  DiagnosticBufferProvider
 Helper for unit tests: Buffer provider reference implementation. More...
 
class  Dispatcher
 Internal abstraction: a service within the engine for translating a logical calculation stream (corresponding to a PlayProcess) into a sequence of individual RenderJob entries for calculations and data access. More...
 
class  DispatchTable
 
class  EngineCtx
 
class  EngineDiagnostics
 Render engine diagnostic facility. More...
 
class  EngineService
 A service to schedule series of calculations, delivering the rendered data into an external output sink in a timely fashion. More...
 
class  ExitNode
 A top-level point in the render node network where data generation can be driven. More...
 
struct  FeedManifold
 Adapter to connect input/output buffers to a processing functor backed by an external library. More...
 
class  FeedPrototype
 Builder-Prototype to create FeedManifold instances. More...
 
class  JobPlanning
 View on the execution planning for a single calculation step. More...
 
class  JobTicket
 execution plan for pulling a specific exit node. More...
 
class  LinkBuilder
 
class  LocalTag
 an opaque mark to be used by the BufferProvider implementation. More...
 
struct  MediaWeavingPattern
 Standard implementation for a Weaving Pattern to connect the input and output data feeds (buffers) into a processing function. More...
 
class  NodeBuilder
 Top-level builder to create a single Render Node. More...
 
class  NodeFactory
 Create processing nodes based on given objects of the high-level model. More...
 
class  ParamAgentBuilder
 Nested sub-Builder analogous to PortBuilder, but for building a »Param Agent Node«. More...
 
struct  ParamBuildSpec
 Specification record for the setup of a »Param Agent Node«. More...
 
struct  ParamWeavingPattern
 Implementation for a Weaving Pattern to conduct extended parameter evaluation. More...
 
struct  PatternData
 Recursive functional data structure to collect weaving pattern data and finally to emplace a Turnout instance into the data storage for each port, as specified by preceding builder-API invocations. More...
 
struct  PatternDataAnchor
 Data recursion end: prime the port data storage by reserving appropriate storage to hold all known Turnout elements. More...
 
class  Port
 
class  PortBuilder
 Nested DSL-Builder context to define a regular media processing Port. More...
 
class  PortBuilderRoot
 Nested DSL builder scope to define a single Port for the enclosing Node. More...
 
class  PortDiagnostic
 
class  PriorityQoS
 
struct  ProcAttrib
 Extended Attributes for ProcID metadata. More...
 
class  ProcBuilder
 
class  ProcID
 Metadata to qualify a Port (and implicitly the enclosing Node). More...
 
class  ProcNode
 Key abstraction of the Render Engine: A Data processing Node. More...
 
class  ProcNodeDiagnostic
 
class  RenderDrive
 The active drive to keep the render process going – implemented as a job planning job, that repeatedly triggers itself again for the next planning chunk. More...
 
class  RenderEnvironment
 Abstract definition of the environment hosting a given render activity (CalcStream). More...
 
class  RenderGraph
 
class  RenderInvocation
 A concrete JobFunctor with the ability to activate the »Render Node Network«. More...
 
class  TrackingHeapBlockProvider
 simple BufferProvider implementation with additional allocation tracking. More...
 
class  Turnout
 Processing structure to activate a Render Node and produce result data. More...
 
class  TurnoutSystem
 Communication hub to coordinate and activate the »Render Node Network« performance. More...
 
struct  TypeHandler
 A pair of functors to maintain a datastructure within a buffer. More...
 
struct  WeavingBuilder
 A low-level Builder to prepare and adapt for a specific node invocation. More...
 

Functions

 LUMIERA_ERROR_DEFINE (BUFFER_MANAGEMENT, "Problem providing working buffers")
 
 LUMIERA_ERROR_DECLARE (BUFFER_MANAGEMENT)
 Problem providing working buffers.
 
template<class POL , class D0 , uint siz, class BUILD >
 NodeBuilder (NodeBuilder< POL, D0 > &&, SizMark< siz >, BUILD &&) -> NodeBuilder< POL, PatternData< D0, BUILD, siz > >
 Deduction Guide: help the compiler with deducing follow-up NodeBuilder parameters.
 
auto prepareNode (StrView nodeSymbol)
 Entrance point for building actual Render Node Connectivity (Level-2)
 
auto retrieve (void *streamType)
 Entrance point for defining data flows and processing steps.
 
auto buildParamSpec ()
 
ProcNodeDiagnostic watch (ProcNode &theNode)
 
PortDiagnostic watch (Port &thePort)
 
_ConCheck is_linked (ProcNode &n)
 start a DSL expression to verify node connectivity.
 
template<class ADA >
constexpr bool _verify_usable_as_InvocationAdapter ()
 Definition to emulate a Concept for the Invocation Adapter.
 
template<class PAT >
constexpr bool _verify_usable_as_WeavingPattern ()
 

Variables

const size_t MAX_NODE_ARG = LUMIERA_MAX_ORDINAL_NUMBER / 2
 arbitrary safety limit on fain-in / fan-out
 

Typedef Documentation

◆ CalcStreams

using CalcStreams = std::vector<CalcStream>

Definition at line 120 of file calc-stream.hpp.

◆ OutputConnection

◆ ExitNodes

using ExitNodes = std::deque<engine::ExitNode>

Definition at line 43 of file exit-node.hpp.

◆ DataBuilder

template<class POL , class I , class E = I>
using DataBuilder = lib::SeveralBuilder<I,E, POL::template Policy>

A builder to collect working data.

Implemented through a suitable configuration of lib::SeveralBuilder, with a policy configuration parameter to define the allocator to use.

Definition at line 164 of file node-builder.hpp.

◆ StrView

typedef std::string_view StrView

Definition at line 82 of file proc-id.hpp.

◆ ProcNodeRef

Definition at line 127 of file proc-node.hpp.

◆ OptionalBuff

using OptionalBuff = std::optional<BuffHandle>

Definition at line 128 of file proc-node.hpp.

◆ PortRef

Definition at line 153 of file proc-node.hpp.

◆ Buff

◆ ProcessKey

using ProcessKey = uint64_t

Definition at line 51 of file turnout-system.hpp.

◆ SizMark

template<uint siz>
using SizMark = std::integral_constant<uint,siz>

Definition at line 171 of file weaving-pattern-builder.hpp.

Enumeration Type Documentation

◆ BufferState

Buffer states usable within BufferProvider and stored within the metadata.

Enumerator
NIL 

abstract entry, not yet allocated

FREE 

allocated buffer, no longer in use

LOCKED 

allocated buffer actively in use

EMITTED 

allocated buffer, returned from client

BLOCKED 

allocated buffer blocked by protocol failure

Definition at line 86 of file buffer-metadata.hpp.

◆ CalcType

enum CalcType
Enumerator
PLAYBACK 
RENDER 
BACKGROUND 

Definition at line 179 of file engine-service.cpp.

Function Documentation

◆ LUMIERA_ERROR_DEFINE()

LUMIERA_ERROR_DEFINE ( BUFFER_MANAGEMENT  ,
"Problem providing working buffers"   
)

◆ LUMIERA_ERROR_DECLARE()

LUMIERA_ERROR_DECLARE ( BUFFER_MANAGEMENT  )

Problem providing working buffers.

◆ NodeBuilder()

template<class POL , class D0 , uint siz, class BUILD >
NodeBuilder ( NodeBuilder< POL, D0 > &&  ,
SizMark< siz >  ,
BUILD &&   
) -> NodeBuilder< POL, PatternData< D0, BUILD, siz > >

Deduction Guide: help the compiler with deducing follow-up NodeBuilder parameters.

◆ prepareNode()

auto prepareNode ( StrView  nodeSymbol)
inline

Entrance point for building actual Render Node Connectivity (Level-2)

Note
when using a custom allocator, the first follow-up builder function to apply should be withAllocator<ALO>(args...), prior to adding any further specifications and data elements.

Definition at line 802 of file node-builder.hpp.

Referenced by NodeLink_test::build_connected_nodes(), NodeBuilder_test::build_connectedNodes(), NodeBuilder_test::build_Node_adaptedParam(), NodeBuilder_test::build_Node_closedParam(), NodeBuilder_test::build_Node_dynamicParam(), NodeBuilder_test::build_Node_fixedParam(), NodeBuilder_test::build_ParamNode(), NodeLink_test::build_simple_node(), NodeBuilder_test::build_simpleNode(), NodeFeed_test::feedParamNode(), NodeDevel_test::makeSrcNode(), NodeDevel_test::testRand_buildFilterNode(), NodeDevel_test::testRand_buildMixNode(), NodeDevel_test::testRand_simpleUsage(), NodeLink_test::trigger_node_port_invocation(), and NodeMeta_test::verify_ID_connectivity().

+ Here is the caller graph for this function:

◆ retrieve()

auto retrieve ( void *  streamType)
inline

Entrance point for defining data flows and processing steps.

Definition at line 862 of file node-builder.hpp.

◆ buildParamSpec()

auto buildParamSpec ( )
inline

Definition at line 266 of file param-weaving-pattern.hpp.

Referenced by NodeBuilder_test::build_ParamNode(), NodeFeed_test::feedParamNode(), NodeLink_test::trigger_node_port_invocation(), and NodeBase_test::verify_TurnoutSystem().

+ Here is the caller graph for this function:

◆ watch() [1/2]

ProcNodeDiagnostic watch ( ProcNode theNode)
inline

◆ watch() [2/2]

PortDiagnostic watch ( Port thePort)
inline

Definition at line 315 of file proc-node.hpp.

◆ is_linked()

_ConCheck is_linked ( ProcNode n)
inline

start a DSL expression to verify node connectivity.

See also
NodeMeta_test::verify_ID_connectivity()

Definition at line 357 of file proc-node.hpp.

Referenced by NodeLink_test::build_connected_nodes(), NodeBuilder_test::build_connectedNodes(), and NodeMeta_test::verify_ID_connectivity().

+ Here is the caller graph for this function:

◆ _verify_usable_as_InvocationAdapter()

template<class ADA >
constexpr bool _verify_usable_as_InvocationAdapter ( )
constexpr

Definition to emulate a Concept for the Invocation Adapter.

For each Proc-Asset, the corresponding Library Adapter must provide such adapters to access the input and result buffers and finally to invoke the processing functions from this library.

  • connect(fanIn,fanOut) access the Feed Manifold and link the buffers
  • invoke() invoke the processing function, passing the connected buffers

Definition at line 80 of file turnout.hpp.

References ASSERT_MEMBER_FUNCTOR.

◆ _verify_usable_as_WeavingPattern()

template<class PAT >
constexpr bool _verify_usable_as_WeavingPattern ( )
constexpr

Definition at line 92 of file turnout.hpp.

References ASSERT_MEMBER_FUNCTOR.

Variable Documentation

◆ MAX_NODE_ARG

const size_t MAX_NODE_ARG = LUMIERA_MAX_ORDINAL_NUMBER / 2

arbitrary safety limit on fain-in / fan-out

Note
expect lower limits in practice caused by AllocationCluster

Definition at line 133 of file proc-node.hpp.