Lumiera  0.pre.03
»edit your freedom«
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

 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.
 

Typedefs

using Buff = StreamType::ImplFacade::DataBuffer
 
typedef std::vector< CalcStreamCalcStreams
 
template<class POL , class I , class E = I>
using DataBuilder = lib::SeveralBuilder< I, E, POL::template Policy >
 A builder to collect working data. More...
 
using ExitNodes = std::deque< engine::ExitNode >
 
using OptionalBuff = std::optional< BuffHandle >
 
typedef steam::play::OutputSlot::Allocation OutputConnection
 
typedef ProcNode_ObsoletePNode
 
using PortRef = std::reference_wrapper< Port >
 
using ProcNodeRef = std::reference_wrapper< ProcNode >
 
typedef EngineService::Quality Quality
 
template<uint N, class FUN >
using SimpleDirectInvoke = SimpleWeavingPattern< DirectFunctionInvocation< N, FUN > >
 
template<uint siz>
using SizMark = std::integral_constant< uint, siz >
 
using StrView = std::string_view
 

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  ActualInvocationProcess
 The real invocation context state implementation. More...
 
struct  AllocBufferFromCache
 < using the global current StateClosure, which will delegate to Cache More...
 
struct  AllocBufferFromParent
 < using the parent StateAdapter for buffer allocations More...
 
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  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  BuffTableChunk
 Obsolete, to be rewritten /////TICKET #826 to be allocated on the stack while evaluating a ProcNode::pull() call. More...
 
class  BuffTableStorage
 Obsolete, to be rewritten /////TICKET #826. 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...
 
struct  ChannelDescriptor
 
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...
 
struct  DirectFunctionInvocation
 Typical base configuration for a Weaving-Pattern chain: 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  EngineServiceMock
 Variant of the render engine, reconfigured for mock operation. More...
 
class  ExitNode
 A top-level point in the render node network where data generation can be driven. More...
 
struct  FeedManifold
 Obsolete, to be rewritten /////TICKET #826. More...
 
struct  InChanDescriptor
 
struct  Invocation
 Invocation context state. 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...
 
class  NodeBuilder
 
class  NodeFactory
 Create processing nodes based on given objects of the high-level model. More...
 
class  NodeWiring
 Actual implementation of the link between nodes, also acting as "track switch" for the execution path chosen while operating the node network for rendering. More...
 
class  ParamStorageFrame
 
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
 
class  PortBuilderRoot
 
class  PriorityQoS
 
class  ProcBuilder
 
class  ProcID
 
class  ProcNode
 Key abstraction of the Render Engine: A Data processing Node. More...
 
class  ProcNode_Obsolete
 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  RenderEngine
 
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...
 
struct  SimpleFunctionInvocationAdapter
 Adapter to handle a simple yet common setup for media processing. More...
 
struct  SimpleWeavingPattern
 Standard implementation for a Weaving Pattern to connect the input and output data feeds (buffers) into a processing function. More...
 
class  StateAdapter
 Adapter to shield the ProcNode from the actual buffer management, allowing the processing function within ProcNode to use logical buffer IDs. More...
 
class  StateClosure_OBSOLETE
 Abstraction to access the state of a currently ongoing render/calculation process, as it is tied to the supporting facilities of the vault layer. 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...
 
class  WiringFactory
 
class  WiringSituation
 Finding out about a concrete way of wiring up a ProcNode about to be built. More...
 

Functions

template<class ADA >
constexpr bool _verify_usable_as_InvocationAdapter ()
 Definition to emulate a Concept for the Invocation Adapter. More...
 
HashVal hash_value (ProcID const &procID)
 generate registry hash value based on the distinct data in ProcID. More...
 
 LUMIERA_ERROR_DECLARE (BUFFER_MANAGEMENT)
 Problem providing working buffers.
 
 LUMIERA_ERROR_DEFINE (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) More...
 
auto retrieve (void *streamType)
 Entrance point for defining data flows and processing steps.
 
ProcNodeDiagnostic watch (ProcNode &theNode)
 

Typedef Documentation

◆ DataBuilder

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 129 of file node-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.

Function Documentation

◆ prepareNode()

auto steam::engine::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 428 of file node-builder.hpp.

Referenced by NodeLink_test::build_connected_nodes().

+ Here is the caller graph for this function:

◆ hash_value()

HashVal steam::engine::hash_value ( ProcID const &  procID)

generate registry hash value based on the distinct data in ProcID.

This function is intended to be picked up by ADL, and should be usable both with std::hash and <boost/functional/hash.hpp>.

Definition at line 105 of file proc-node.cpp.

Referenced by JobTicket::timeHash().

+ Here is the caller graph for this function:

◆ _verify_usable_as_InvocationAdapter()

constexpr bool steam::engine::_verify_usable_as_InvocationAdapter ( )

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 92 of file turnout.hpp.

References ASSERT_MEMBER_FUNCTOR.