#include <gpubuffer.h>
Public Member Functions | |
GPUBufferNumeric (Core &core, VkFormat format, uint32 elementSize) | |
GPUBufferNumeric (Core &core, VkFormat format, uint32 elementSize, EMemoryUsage usage) | |
virtual uint | getCount () const override |
virtual uint32 | getElementSize () const override |
virtual size_t | getSize () const override |
virtual VkFormat | getFormat () const |
virtual void | setCount (uint32 count) |
virtual bool | setData (const void *data, size_t elementCount, size_t reservedElementCount, utility::ErrorState &errorState) |
![]() | |
GPUBuffer (Core &core) | |
GPUBuffer (Core &core, EMemoryUsage usage) | |
virtual | ~GPUBuffer () |
virtual VkBuffer | getBuffer () const |
virtual const BufferData & | getBufferData () const |
virtual bool | init (utility::ErrorState &errorState) override |
virtual VkBufferUsageFlags | getBufferUsageFlags () const |
void | ensureUsage (VkBufferUsageFlags usage) |
virtual bool | isInitialized () const =0 |
void | asyncGetData (std::function< void(const void *, size_t)> copyFunction) |
![]() | |
Resource () | |
![]() | |
Object () | |
virtual | ~Object () |
virtual void | onDestroy () |
Object (Object &)=delete | |
Object & | operator= (const Object &)=delete |
Object (Object &&)=delete | |
Object & | operator= (Object &&)=delete |
Public Attributes | |
uint32 | mCount = 0 |
Property: 'Count' The number of elements to initialize/allocate the buffer with. More... | |
![]() | |
nap::Signal | bufferChanged |
EMemoryUsage | mMemoryUsage = EMemoryUsage::Static |
Property 'Usage' How the buffer is used: initialized once (Static), updated frequently from CPU to GPU (DynamicWrite) or read from GPU to CPU (DynamicRead). More... | |
![]() | |
std::string | mID |
Property: 'mID' unique name of the object. Used as an identifier by the system. More... | |
Additional Inherited Members | |
![]() | |
static bool | isIDProperty (rtti::Instance &object, const rtti::Property &property) |
![]() | |
bool | allocateInternal (size_t size, utility::ErrorState &errorState) |
bool | setDataInternal (const void *data, size_t size, size_t reservedSize, utility::ErrorState &errorState) |
void | requestClear () |
![]() | |
RenderService * | mRenderService = nullptr |
Handle to the render service. More... | |
std::vector< BufferData > | mRenderBuffers |
Render accessible buffers. More... | |
std::vector< BufferData > | mStagingBuffers |
Staging buffers, used when uploading or downloading data. More... | |
uint32 | mSize = 0 |
Current used buffer size in bytes. More... | |
int | mCurrentRenderBufferIndex = 0 |
Current render buffer index. More... | |
int | mCurrentStagingBufferIndex = 0 |
Current staging buffer index. More... | |
std::vector< int > | mDownloadStagingBufferIndices |
Staging buffer indices associated with a frameindex. More... | |
Base interface for all types of one dimensional GPU buffers. Supported values for child classes such as GPUBufferNumeric<T> must be primitives that can be mapped to VkFormat. This is enforced by the requirement to implement getFormat().
GPUBufferNumeric | ( | Core & | core, |
VkFormat | format, | ||
uint32 | elementSize | ||
) |
core | core reference |
format | Vulkan memory format |
elementSize | of a single element in bytes |
GPUBufferNumeric | ( | Core & | core, |
VkFormat | format, | ||
uint32 | elementSize, | ||
EMemoryUsage | usage | ||
) |
core | core reference |
format | Vulkan memory format |
elementSize | of a single element in bytes |
usage | CPU-GPU usage |
|
overridevirtual |
Implements GPUBuffer.
|
overridevirtual |
Implements GPUBuffer.
|
virtual |
|
overridevirtual |
Implements GPUBuffer.
|
virtual |
Sets the number of elements this buffer will contain
count | new number of elements |
|
virtual |
Uploads data to the GPU based on the settings provided. This function automatically allocates GPU memory if required.
data | pointer to the block of data that needs to be uploaded. |
elementCount | the number of elements |
reservedElementCount | the number of elements to reserve |
errorState | contains the error if upload operation failed |
uint32 mCount = 0 |
Property: 'Count' The number of elements to initialize/allocate the buffer with.