Lumiera 0.pre.04~rc.1
»edit your freedom«
Loading...
Searching...
No Matches
buffer-provider.hpp File Reference

Abstraction to represent buffer management and lifecycle within the render engine. More...

Go to the source code of this file.

Description

Abstraction to represent buffer management and lifecycle within the render engine.

It turns out that – throughout the render engine implementation – we never need direct access to the buffers holding media data. Buffers are just some entity to be managed, i.e. "allocated", "locked" and "released"; the actual meaning of these operations is an implementation detail. The code within the render engine just pushes around BufferHandle objects, which act as a front-end, being created by and linked to a BufferProvider implementation. There is no need to manage the lifecycle of buffers automatically, because the use of buffers is embedded into the render calculation cycle, which follows a rather strict protocol anyway. Relying on the capabilities of the scheduler, the sequence of individual jobs in the engine ensures...

  • that the availability of a buffer was ensured prior to planning a job ("buffer allocation")
  • that a buffer handle was obtained ("locked") prior to any operation requiring a buffer
  • that buffers are marked as free ("released") after doing the actual calculations.
See also
state.hpp
output-slot.hpp

Definition in file buffer-provider.hpp.

#include "lib/error.hpp"
#include "lib/symbol.hpp"
#include "lib/hash-value.h"
#include "steam/engine/buffhandle.hpp"
#include "steam/engine/type-handler.hpp"
#include "steam/engine/buffer-local-tag.hpp"
#include "lib/nocopy.hpp"
#include <utility>
#include <memory>

Namespaces

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

Classes

class  BufferProvider
 Interface: a facility providing and managing working buffers for media calculations. More...
 

Functions

 LUMIERA_ERROR_DECLARE (BUFFER_MANAGEMENT)
 Problem providing working buffers.