Lumiera  0.pre.03
engine-service.hpp File Reference

Go to the source code of this file.


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.

draft from 2013, stalled, but still relevant and to be continued eventually
See also

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>


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...


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


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