Lumiera  0.pre.03
»edityourfreedom«
engine-service.hpp File Reference

Go to the source code of this file.

Description

Access point for the (core) calculation service of the render engine.

This Proc-Layer internal service is provided for use by the Player subsystem. The actual implementation is forwarded to backend services (especially the scheduler). The EngineService singleton has no state beyond the jobs currently managed by the scheduler; when the latter isn't available, any invocation will throw.

The central concept provided through this facade interface is the calculation stream. This represents a series of calculations, expected to happen in a timely fashion and in order to deliver a frame data stream into an opened output connection. On the implementation side, a calculation stream will be translated into a series of jobs to invoke render nodes; these jobs are to be executed through the scheduler in the backend layer.

While the individual CalcStram is simple, linear and unmodifiable, any CalcStream may be superseded by a new definition. In this case, the engine will care for a seamless switch and continuation; under the hood, there is a mechanism to discard resources tied to the original CalcStream, once the switch to the new definition is complete.

Todo:
draft from 2013, stalled, but still relevant and to be continued eventually
See also
EngineInterface_test
CalcStream_test
proc::play::PlayerService
backend::engine::EngineConfig

Definition in file engine-service.hpp.

#include "lib/error.hpp"
#include "lib/nocopy.hpp"
#include "proc/engine/calc-stream.hpp"
#include "proc/mobject/model-port.hpp"
#include "proc/play/timings.hpp"
#include "proc/play/output-slot.hpp"
#include "lib/polymorphic-value.hpp"
#include "lib/depend.hpp"
#include <functional>

Classes

class  EngineService
 A service to schedule series of calculations, delivering the rendered data into an external output sink in a timely fashion. More...
 
class  EngineService::Quality
 Quality-of-Service definition for an Render Engine usage. More...
 

Typedefs

typedef proc::play::OutputSlot::Allocation OutputConnection
 

Namespaces

 proc
 Proc-Layer implementation namespace root.
 
 proc::engine
 Render engine code as part of the Proc-Layer.