Lumiera  0.pre.03
»edit your freedom«
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 Steam-Layer internal service is provided for use by the Player subsystem. The actual implementation is forwarded to Vault 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 Vault 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
Warning
as of 4/2023 Render-Engine integration work is underway ////////////////////////////////////////TICKET #1233
See also
EngineInterface_test
CalcStream_test
steam::play::PlayerService
vault::engine::EngineConfig

Definition in file engine-service.hpp.

#include "lib/error.hpp"
#include "lib/nocopy.hpp"
#include "steam/engine/calc-stream.hpp"
#include "steam/mobject/model-port.hpp"
#include "steam/play/timings.hpp"
#include "steam/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 steam::play::OutputSlot::Allocation OutputConnection
 

Namespaces

 steam
 Steam-Layer implementation namespace root.
 
 steam::engine
 Lumiera's render engine core and operational control.