CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
CeresEngine::VKBuffer Class Referencefinal

#include <CeresEngine/RenderAPI/Vulkan/VKBuffer.hpp>

Inheritance diagram for CeresEngine::VKBuffer:
CeresEngine::GPUBuffer CeresEngine::VKDeviceObject< VKBuffer, GPUBuffer > CeresEngine::TDeviceObject< GPUBufferDescriptor, GPUResource > CeresEngine::VKObject< ChildTypeName, ParentType > CeresEngine::VKDeviceObjectBase CeresEngine::GPUResource CeresEngine::VKObjectBase CeresEngine::GPUDeviceObject CeresEngine::GPUObject

Public Types

using Allocator = VKObjectAllocator
 An allocator type used to allocate new VKBuffer instances from a memory pool.
 
- Public Types inherited from CeresEngine::TDeviceObject< GPUBufferDescriptor, GPUResource >
using Descriptor = GPUBufferDescriptor
 An type-alias to the descriptor struct type.
 

Public Member Functions

 VKBuffer (VKDevice &device, VKMemoryAllocator &memoryAllocator, const GPUBufferDescriptor &descriptor)
 Creates a new Vulkan buffer object.
 
 ~VKBuffer () final
 Destroys the buffer object and releases the GPU memory.
 
 operator VkBuffer () const noexcept
 The Vulkan buffer object.
 
GPUBufferData map () final
 
void unmap () final
 
GPUBufferSize getSize () const final
 
void flush (GPUBufferSize offset=0, GPUBufferSize size=whole) final
 
void invalidate (GPUBufferSize offset=0, GPUBufferSize size=whole) final
 
- Public Member Functions inherited from CeresEngine::GPUBuffer
 GPUBuffer (const GPUBuffer &)=delete
 Deleted copy constructor.
 
GPUBufferoperator= (const GPUBuffer &)=delete
 
 GPUBuffer (GPUBuffer &&)=delete
 Deleted move constructor.
 
GPUBufferoperator= (GPUBuffer &&)=delete
 
Async< ByteBufferread (GPUBufferSize offset=0, GPUBufferSize size=whole)
 Performs an asynchronous read operation on the buffer.
 
Async< ByteBufferread (GPUCommandBuffer &commandBuffer, GPUBufferSize offset=0, GPUBufferSize size=whole)
 Performs an asynchronous read operation on the buffer in an specific command buffer.
 
Async write (ByteBuffer &&rawData, GPUBufferSize offset=0, GPUBufferSize size=whole)
 Performs an asynchronous write operation on the buffer.
 
Async write (GPUCommandBuffer &commandBuffer, ByteBuffer &&rawData, GPUBufferSize offset=0, GPUBufferSize size=whole)
 Performs an asynchronous write operation on the buffer in an specific command buffer.
 
template<typename Block >
void data (Block &&block)
 Executes block with a pointer that gives direct access to the buffer data.
 
 TDeviceObject (GPUDevice &device, const Descriptor &descriptor)
 Inherited constructors.
 
 TDeviceObject (const TDeviceObject &)=delete
 Inherited constructors.
 
 TDeviceObject (TDeviceObject &&)=delete
 Inherited constructors.
 
- Public Member Functions inherited from CeresEngine::TDeviceObject< GPUBufferDescriptor, GPUResource >
 TDeviceObject (GPUDevice &device, const Descriptor &descriptor)
 Initializes a new RenderAPI device object instance.
 
 TDeviceObject (const TDeviceObject &)=delete
 
 TDeviceObject (TDeviceObject &&)=delete
 
 ~TDeviceObject () override=default
 
TDeviceObjectoperator= (const TDeviceObject &)=delete
 
TDeviceObjectoperator= (TDeviceObject &&)=delete
 
- Public Member Functions inherited from CeresEngine::GPUResource
 GPUDeviceObject (GPUDevice &device)
 
- Public Member Functions inherited from CeresEngine::GPUDeviceObject
 GPUDeviceObject (GPUDevice &device)
 
 ~GPUDeviceObject () override
 
- Public Member Functions inherited from CeresEngine::GPUObject
 GPUObject ()=default
 
virtual ~GPUObject ()=default
 
 GPUObject (const GPUObject &)=delete
 
GPUObjectoperator= (const GPUObject &)=delete
 
 GPUObject (GPUObject &&)=delete
 
GPUObjectoperator= (GPUObject &&)=delete
 
void retain () noexcept
 Retains the object by increment it's reference count by one.
 
bool release () noexcept
 Releases the object by decrementing it's reference count by one.
 
- Public Member Functions inherited from CeresEngine::VKDeviceObjectBase
 VKDeviceObjectBase (VKDevice &device) noexcept
 Creates a new VKDeviceObjectBase from the given device.
 
 ~VKDeviceObjectBase () noexcept
 Destroys the VKDeviceObjectBase.
 

Static Public Member Functions

static AllocatorgetAllocator () noexcept
 Returns the allocator for VKBuffer.
 
static voidoperator new (size_t size) noexcept
 Allocates memory for a new instance of VKBuffer.
 
static void operator delete (void *p, std::size_t size) noexcept
 Deletes memory for an instance of VKBuffer.
 
- Static Public Member Functions inherited from CeresEngine::VKObject< ChildTypeName, ParentType >
static RC< ChildTypeNamecast (const RC< ParentType > &ptr)
 Casts a RC containing a ParentType pointer to a pointer to a pointer to a ChildTypeName.
 
static ChildTypeNamecast (ParentType &object)
 Casts a object of type ParentType to a object of type ChildTypeName.
 
static const ChildTypeNamecast (const ParentType &object)
 Casts a object of type ParentType to a object of type ChildTypeName.
 
static ChildTypeNamecast (ParentType *object)
 Casts a object of type ParentType to a object of type ChildTypeName.
 
static const ChildTypeNamecast (const ParentType *object)
 Casts a object of type ParentType to a object of type ChildTypeName.
 
- Static Public Member Functions inherited from CeresEngine::VKObjectBase
static voidoperator new (size_t size) noexcept
 
static void operator delete (void *p, std::size_t sz) noexcept
 

Private Attributes

const GPUBufferDescriptor descriptorVK
 A structure that describes the buffer and it's properties.
 
VkBuffer mBuffer = VK_NULL_HANDLE
 The Vulkan buffer object.
 
VKMemoryAllocation mBufferMemory
 The allocated memory.
 
GPUBufferData mMappedMemory = nullptr
 The buffer mapped memory address.
 

Additional Inherited Members

- Public Attributes inherited from CeresEngine::TDeviceObject< GPUBufferDescriptor, GPUResource >
const Descriptordescriptor
 A structure that describes the object and it's properties.
 
- Public Attributes inherited from CeresEngine::GPUDeviceObject
GPUDevicedevice
 The owning device this object was created from.
 
- Public Attributes inherited from CeresEngine::VKDeviceObjectBase
VKDevicedeviceVK
 The owning VKDevice instance.
 
- Static Public Attributes inherited from CeresEngine::GPUBuffer
static const constexpr GPUBufferSize whole = ~0UL
 A constant the represents the whole buffer length.
 
- Protected Member Functions inherited from CeresEngine::GPUObject
virtual void destroy () noexcept
 A internal method called by the system when the object reference count reaches zero.
 
- Protected Member Functions inherited from CeresEngine::VKDeviceObject< VKBuffer, GPUBuffer >
 VKDeviceObject (VKDevice &device) noexcept
 Creates a new VKDeviceObject from the given device.
 

Member Typedef Documentation

◆ Allocator

An allocator type used to allocate new VKBuffer instances from a memory pool.

Constructor & Destructor Documentation

◆ VKBuffer()

CeresEngine::VKBuffer::VKBuffer ( VKDevice device,
VKMemoryAllocator memoryAllocator,
const GPUBufferDescriptor descriptor 
)

Creates a new Vulkan buffer object.

Parameters
deviceThe device to allocate a new buffer from.
memoryAllocatorThe memory allocator
descriptorThe buffer descriptor

◆ ~VKBuffer()

CeresEngine::VKBuffer::~VKBuffer ( )
final

Destroys the buffer object and releases the GPU memory.

Member Function Documentation

◆ flush()

void CeresEngine::VKBuffer::flush ( GPUBufferSize  offset = 0,
GPUBufferSize  size = whole 
)
finalvirtual

◆ getAllocator()

static Allocator & CeresEngine::VKBuffer::getAllocator ( )
staticnoexcept

Returns the allocator for VKBuffer.

◆ getSize()

GPUBufferSize CeresEngine::VKBuffer::getSize ( ) const
finalvirtual

◆ invalidate()

void CeresEngine::VKBuffer::invalidate ( GPUBufferSize  offset = 0,
GPUBufferSize  size = whole 
)
finalvirtual

◆ map()

GPUBufferData CeresEngine::VKBuffer::map ( )
finalvirtual

◆ operator delete()

static void CeresEngine::VKBuffer::operator delete ( void p,
std::size_t  size 
)
staticnoexcept

Deletes memory for an instance of VKBuffer.

◆ operator new()

static void * CeresEngine::VKBuffer::operator new ( size_t  size)
staticnoexcept

Allocates memory for a new instance of VKBuffer.

◆ operator VkBuffer()

CeresEngine::VKBuffer::operator VkBuffer ( ) const
inlinenoexcept

The Vulkan buffer object.

◆ unmap()

void CeresEngine::VKBuffer::unmap ( )
finalvirtual

Member Data Documentation

◆ descriptorVK

const GPUBufferDescriptor CeresEngine::VKBuffer::descriptorVK
private

A structure that describes the buffer and it's properties.

◆ mBuffer

VkBuffer CeresEngine::VKBuffer::mBuffer = VK_NULL_HANDLE
private

The Vulkan buffer object.

◆ mBufferMemory

VKMemoryAllocation CeresEngine::VKBuffer::mBufferMemory
private

The allocated memory.

◆ mMappedMemory

GPUBufferData CeresEngine::VKBuffer::mMappedMemory = nullptr
private

The buffer mapped memory address.


The documentation for this class was generated from the following file: