Kanzi Graphics Engine
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
kzc_gpu_buffer_manager.h File Reference

GPU buffer manager. More...

Data Structures

struct  KzcGPUBufferManagerStatistics
 Statistics of GPU buffer manager usage. More...
 

Macros

#define KZC_GPU_BUFFER_MANAGER_ENABLED
 Is the GPU buffer manager in use. More...
 

Enumerations

enum  KzcGPUBufferManagerType { KZC_GPU_BUFFER_MANAGER_TYPE_VERTEX, KZC_GPU_BUFFER_MANAGER_TYPE_INDEX }
 Type enumeration of the buffer. More...
 

Functions

kzsError kzcGPUBufferManagerCreate (const struct KzcMemoryManager *memoryManager, struct KzcRenderer *renderer, kzUint vertexBufferPoolSize, kzUint indexBufferPoolSize, struct KzcGPUBufferManager **out_bufferManager)
 Creates a new buffer manager. More...
 
kzsError kzcGPUBufferManagerDelete (struct KzcGPUBufferManager *bufferManager)
 Deletes buffer manager. More...
 
kzsError kzcGPUBufferManagerInvalidateGPUMemory (struct KzcGPUBufferManager *bufferManager)
 Invalidates GPU memory manager by this manager. More...
 
kzsError kzcGPUBufferManagerUploadData (struct KzcGPUBufferManager *bufferManager, enum KzcGPUBufferManagerType bufferType, const void *data, kzUint size, const struct KzcGPUBufferMemoryHandle **out_handle)
 Uploads vertex data to VBO. More...
 
kzsError kzcGPUBufferManagerFreeData (const struct KzcGPUBufferManager *bufferManager, const struct KzcGPUBufferMemoryHandle *handle)
 Frees vertex data in VBO. More...
 
enum KzcGPUBufferManagerType kzcGPUBufferMemoryHandleGetBufferType (const struct KzcGPUBufferMemoryHandle *handle)
 Gets type of buffer object referenced by specified handle. More...
 
kzUint kzcGPUBufferMemoryHandleGetBufferHandle (const struct KzcGPUBufferMemoryHandle *handle)
 Gets handle of buffer object referenced by specified handle. More...
 
kzUint kzcGPUBufferMemoryHandleGetDataOffset (const struct KzcGPUBufferMemoryHandle *handle)
 Gets offset in bytes in buffer object for the memory referenced by specified handle. More...
 
void kzcGPUBufferManagerGetStatistics (const struct KzcGPUBufferManager *bufferManager, enum KzcGPUBufferManagerType bufferType, struct KzcGPUBufferManagerStatistics *statistics)
 Returns statistics for GPU buffer manager. More...
 
void kzcGPUBufferManagerDumpStatistics (const struct KzcGPUBufferManager *bufferManager, kzBool dumpPoolBlocks)
 Prints out statistics for GPU buffer manager. More...
 

Detailed Description

GPU buffer manager.

Copyright 2008-2019 by Rightware. All rights reserved.

Macro Definition Documentation

#define KZC_GPU_BUFFER_MANAGER_ENABLED

Is the GPU buffer manager in use.

Enumeration Type Documentation

Type enumeration of the buffer.

Enumerator
KZC_GPU_BUFFER_MANAGER_TYPE_VERTEX 

Vertex buffer.

KZC_GPU_BUFFER_MANAGER_TYPE_INDEX 

Index buffer.

Function Documentation

kzsError kzcGPUBufferManagerCreate ( const struct KzcMemoryManager memoryManager,
struct KzcRenderer renderer,
kzUint  vertexBufferPoolSize,
kzUint  indexBufferPoolSize,
struct KzcGPUBufferManager **  out_bufferManager 
)

Creates a new buffer manager.

Parameters
vertexBufferPoolSize- default size of vertex buffer pool (== VBO). If equal to 0, the no default buffer will be created, and new pool will be created for each uploaded data.
indexBufferPoolSize- default size of index buffer pool (== IBO). If equal to 0, the no default buffer will be created, and new pool will be created for each uploaded data.
kzsError kzcGPUBufferManagerDelete ( struct KzcGPUBufferManager bufferManager)

Deletes buffer manager.

kzsError kzcGPUBufferManagerInvalidateGPUMemory ( struct KzcGPUBufferManager bufferManager)

Invalidates GPU memory manager by this manager.

All pools will be removed and handles to this manager will became invalid.

kzsError kzcGPUBufferManagerUploadData ( struct KzcGPUBufferManager bufferManager,
enum KzcGPUBufferManagerType  bufferType,
const void data,
kzUint  size,
const struct KzcGPUBufferMemoryHandle **  out_handle 
)

Uploads vertex data to VBO.

If there is no available memory left in existing VBO's, the new one will be created.

Parameters
handleto uploaded vertex data (owned by GPU buffer manager so user should not delete it).
kzsError kzcGPUBufferManagerFreeData ( const struct KzcGPUBufferManager bufferManager,
const struct KzcGPUBufferMemoryHandle handle 
)

Frees vertex data in VBO.

Parameters
handleto uploaded vertex data. The handle will be deleted by GPU buffer manager and should not be used after calling this function.
enum KzcGPUBufferManagerType kzcGPUBufferMemoryHandleGetBufferType ( const struct KzcGPUBufferMemoryHandle handle)

Gets type of buffer object referenced by specified handle.

kzUint kzcGPUBufferMemoryHandleGetBufferHandle ( const struct KzcGPUBufferMemoryHandle handle)

Gets handle of buffer object referenced by specified handle.

kzUint kzcGPUBufferMemoryHandleGetDataOffset ( const struct KzcGPUBufferMemoryHandle handle)

Gets offset in bytes in buffer object for the memory referenced by specified handle.

void kzcGPUBufferManagerGetStatistics ( const struct KzcGPUBufferManager bufferManager,
enum KzcGPUBufferManagerType  bufferType,
struct KzcGPUBufferManagerStatistics statistics 
)

Returns statistics for GPU buffer manager.

User is responsible for deleting returned struct instance.

Parameters
statistics- pointer to KzcGpuBufferManagerStatistics struct instance which will be filled with statistics data.
void kzcGPUBufferManagerDumpStatistics ( const struct KzcGPUBufferManager bufferManager,
kzBool  dumpPoolBlocks 
)

Prints out statistics for GPU buffer manager.