Lumiera  0.pre.03
buffer-provider.hpp File Reference

Go to the source code of this file.


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

Definition in file buffer-provider.hpp.

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


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


 Problem providing working buffers. More...


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