Lumiera
0.pre.03
»edit your freedom«
|
Go to the source code of this file.
Metadata for managing and accessing buffers.
The Lumiera Engine uses the Abstraction of an BufferProvider to handle various kinds of buffer organisation and access in a uniform way. Actually, buffers can be exposed and provided by several facilities, which might even be implemented through an external library. Thus the engine and the abstraction placed in between needs a common set of control data, to be able to expose the correct buffer for each request. Typically – and independent of the actual implementation – the following properties need to be tracked
These additional distinctions and properties are associated with the help of the BufferDescriptor, embedded into each BuffHandle. While the engine just uses these handles in the way of a pointer, the buffer descriptor acts as an additional tag attached to the buffer access, allowing to re-access a context within the buffer provider implementation.
Definition in file buffer-metadata.hpp.
#include "lib/error.hpp"
#include "lib/symbol.hpp"
#include "lib/hash-value.h"
#include "lib/util-foreach.hpp"
#include "include/logging.h"
#include "steam/engine/type-handler.hpp"
#include "steam/engine/buffer-local-key.hpp"
#include "lib/nocopy.hpp"
#include <unordered_map>
Classes | |
class | BufferMetadata |
Registry for managing buffer metadata. More... | |
class | Entry |
A complete metadata Entry, based on a Key. More... | |
class | Key |
Description of a Buffer-"type". More... | |
class | Table |
(Hash)Table to store and manage buffer metadata. More... | |
Enumerations | |
enum | BufferState { NIL, FREE, LOCKED, EMITTED, BLOCKED } |
Buffer states usable within BufferProvider and stored within the metadata. More... | |
Functions | |
template<typename VAL > | |
HashVal | chainedHash (HashVal accumulatedHash, VAL changedValue) |
bool | nontrivial (TypeHandler const &toVerify) |
bool | nontrivial (LocalKey const &toVerify) |
Variables | |
const TypeHandler | RAW_BUFFER |
const LocalKey | UNSPECIFIC |
Namespaces | |
steam | |
Steam-Layer implementation namespace root. | |
steam::engine | |
Lumiera's render engine core and operational control. | |