Lumiera  0.pre.03
»edit your freedom«
nodeoperation.hpp File Reference

Go to the source code of this file.

Description

Chunks of operation for invoking the rendernodes.

This header defines part of the "glue" which holds together the render node network and enables to pull a result frames from the nodes. Especially, the aspect of buffer management and cache query is covered here. Each node has been preconfigured by the builder with a WiringDescriptor and a concrete type of a StateAdapter, including a specific Configuration, because the node can be built to

  • participate in the Caching or ignore the cache
  • actually process a result or just pull frames from a source
  • employ in-Place calculations or use separate in/out buffers Additionally, each node may have a given number of input/output pins, expecting to be provided with buffers holding a specific kind of data.
composition of the invocation Strategy
For each individual ProcNode::pull() call, the WiringAdapter::callDown() builds an Invocation state instance directly on the stack, holding references to the actual buffer pointers and state. Using this StateAdapter, the predecessor nodes are pulled. The way these operations are carried out is encoded in the actual type of Strategy, which is defined at the bottom of this header. Each Strategy is a chain of elementary operations invoking each other (NEXT::step(invocation) ). Notably, all those possible configurations are pre-built while compiling (it's a small number below 32 configuration instance). To be able to select the Strategy for each configuration, we need a Factory (ConfigSelector defined in nodewiring-config.hpp). which is actually instantiated and used in nodewiring.cpp, which is the object file holding all those instantiations.
See also
engine::ProcNode
engine::Invocation
engine::State
engine::NodeFactory
nodewiring-config.hpp
nodewiring.hpp interface for building/wiring the nodes

Definition in file nodeoperation.hpp.

Classes

struct  AllocBufferTable< NEXT >
 
struct  AllocOutput< NEXT >
 
struct  FeedCache< NEXT >
 
struct  OperationBase
 Base class of all concrete invocation sequences. More...
 
struct  ProcessData< NEXT >
 
struct  PullInput< NEXT >
 
struct  QueryCache< NEXT >
 
struct  ReadSource< NEXT >
 
struct  ReleaseBuffers< NEXT >
 
struct  SelectBuffProvider< CONF >
 
struct  SelectBuffProvider< Config< CACHING, STEAM_ign, INPLA_ign > >
 
struct  Strategy< Config >
 
struct  Strategy< Config< CACHING > >
 
struct  Strategy< Config< CACHING, PROCESS, INPLACE_ign > >
 
struct  Strategy< Config< INPLACE > >
 
struct  Strategy< Config< PROCESS, INPLACE_ign > >
 
struct  Strategy< Config<> >
 

Enumerations

enum  Cases {
  CACHING = 1,
  PROCESS,
  INPLACE,
  NOT_SET = 0,
  NUM_Cases = INPLACE
}
 

Namespaces

 steam
 Steam-Layer implementation namespace root.
 
 steam::engine
 Lumiera's render engine core and operational control.
 
 steam::engine::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.
 

Class Documentation

◆ steam::engine::config::SelectBuffProvider

struct steam::engine::config::SelectBuffProvider
Class Members
typedef AllocBufferFromParent Type
+ Collaboration diagram for SelectBuffProvider< CONF >:

◆ steam::engine::config::SelectBuffProvider< Config< CACHING, STEAM_ign, INPLA_ign > >

struct steam::engine::config::SelectBuffProvider< Config< CACHING, STEAM_ign, INPLA_ign > >
Class Members
typedef AllocBufferFromCache Type
+ Collaboration diagram for SelectBuffProvider< Config< CACHING, STEAM_ign, INPLA_ign > >:

◆ steam::engine::config::Strategy

struct steam::engine::config::Strategy
+ Collaboration diagram for Strategy< Config >: