![]() |
XII Release 0.1.0
|
Interface that defines methods to manipulate a buffer object. More...
#include <Buffer.h>
Public Member Functions | |
XII_ALWAYS_INLINE const xiiGALBufferCreationDescription & | GetDescription () const |
This returns the creation description for this object. | |
XII_ALWAYS_INLINE xiiUInt64 | GetSize () const |
This returns the buffer size. | |
virtual XII_ALWAYS_INLINE xiiUInt64 | GetMemoryConsumption () const |
Returns the calculated memory consumption for buffer. | |
xiiSharedPtr< xiiGALBufferView > | GetDefaultView (xiiEnum< xiiGALBufferViewType > viewType) |
This returns the handle of the default view. | |
XII_ALWAYS_INLINE xiiBitflags< xiiGALMemoryPropertyFlags > | GetMemoryProperties () const |
This returns the buffer memory properties. | |
virtual void | FlushMappedRange (xiiUInt64 uiStartOffset, xiiUInt64 uiSize)=0 |
This flushes the specified range of non-coherent memory from the host cache to make it available to the GPU. | |
virtual void | InvalidateMappedRange (xiiUInt64 uiStartOffset, xiiUInt64 uiSize)=0 |
This invalidates the specified range of non-coherent memory modified by the GPU to make it visible to the CPU. | |
xiiSharedPtr< xiiGALBufferView > | CreateView (xiiGALBufferViewCreationDescription &description) |
This creates a new buffer view. | |
virtual xiiGALSparseBufferProperties | GetSparseProperties () const =0 |
This returns the sparse buffer memory properties. | |
![]() | |
virtual void | SetResourceState (xiiBitflags< xiiGALResourceStateFlags > stateFlags) |
This sets the buffer usage state. | |
virtual XII_ALWAYS_INLINE xiiBitflags< xiiGALResourceStateFlags > | GetResourceState () const |
This returns the buffer state. | |
XII_ALWAYS_INLINE bool | IsInKnownState () const |
This returns true if the resource is in known state by the engine. | |
XII_ALWAYS_INLINE bool | CheckState (xiiBitflags< xiiGALResourceStateFlags > resourceState) const |
This returns true if the given resource state is set. | |
XII_ALWAYS_INLINE bool | CheckAnyState (xiiBitflags< xiiGALResourceStateFlags > resourceState) const |
This returns true if any of the given resource state are set. | |
![]() | |
XII_ALWAYS_INLINE xiiSharedPtr< xiiGALDevice > | GetDevice () const |
Returns the xiiGALDevice that created this resource. | |
![]() | |
XII_ALWAYS_INLINE xiiStringView | GetDebugName () const |
Returns the debug name of this resource. | |
void | SetDebugName (xiiStringView sDebugName) const |
Sets the debug name for this resource. | |
![]() | |
virtual const xiiRTTI * | GetDynamicRTTI () const |
bool | IsInstanceOf (const xiiRTTI *pType) const |
Returns whether the type of this instance is of the given type or derived from it. | |
template<typename T> | |
XII_ALWAYS_INLINE bool | IsInstanceOf () const |
Returns whether the type of this instance is of the given type or derived from it. | |
![]() | |
virtual | ~xiiRefCounted ()=default |
Adds a virtual destructor. | |
![]() | |
xiiRefCountingImpl ()=default | |
Constructor. | |
xiiRefCountingImpl (const xiiRefCountingImpl &rhs) | |
void | operator= (const xiiRefCountingImpl &rhs) |
xiiUInt32 | AddRef () const |
Increments the reference counter. Returns the new reference count. | |
xiiUInt32 | ReleaseRef () const |
Decrements the reference counter. Returns the new reference count. | |
bool | IsReferenced () const |
Returns true if the reference count is greater than 0, false otherwise. | |
xiiUInt32 | GetRefCount () const |
Returns the current reference count. | |
Protected Member Functions | |
xiiGALBuffer (xiiSharedPtr< xiiGALDevice > pDevice, const xiiGALBufferCreationDescription &creationDescription) | |
virtual xiiResult | InitPlatform (const xiiGALBufferData *pInitialData)=0 |
virtual xiiInternal::NewInstance< xiiGALBufferView > | CreateViewPlatform (const xiiGALBufferViewCreationDescription &description)=0 |
void | VerifyFlushMappedRangeArguments (xiiUInt64 uiStartOffset, xiiUInt64 uiSize) const |
void | VerifyInvalidateMappedRangeArguments (xiiUInt64 uiStartOffset, xiiUInt64 uiSize) const |
![]() | |
xiiGALResource (xiiSharedPtr< xiiGALDevice > pDevice) | |
![]() | |
xiiGALDeviceObject (xiiSharedPtr< xiiGALDevice > pDevice) | |
![]() | |
virtual XII_ALWAYS_INLINE void | SetDebugNamePlatform (xiiStringView sName) const |
Protected Attributes | |
xiiGALBufferCreationDescription | m_Description |
xiiBitflags< xiiGALMemoryPropertyFlags > | m_MemoryPropertyFlags |
xiiSharedPtr< xiiGALBufferView > | m_DefaultBufferViews [xiiGALBufferViewType::ENUM_COUNT] |
![]() | |
xiiBitflags< xiiGALResourceStateFlags > | m_ResourceState |
![]() | |
xiiSharedPtr< xiiGALDevice > | m_pDevice |
Friends | |
class | xiiGALDevice |
class | xiiMemoryUtils |
Additional Inherited Members | |
![]() | |
static const xiiRTTI * | GetStaticRTTI () |
Interface that defines methods to manipulate a buffer object.
|
nodiscard |
This creates a new buffer view.
description | - The buffer view description. See xiiGALBufferViewCreationDescription. |
|
pure virtual |
This flushes the specified range of non-coherent memory from the host cache to make it available to the GPU.
uiStartOffset | - The offset in bytes from the beginning of the buffer to the start of the memory range to flush. |
uiSize | - The size in bytes of the memory range to flush. |
This method should only be used for persistently-mapped buffers that do not report the xiiGALMemoryProperties::HostCoherent property. After an application modifies a mapped memory range on the CPU, it must flush the range to make it available to the GPU.
Implemented in xiiGALBufferVulkan.
|
nodiscard |
This returns the handle of the default view.
viewType | - The type of the requested view. See xiiGALBufferViewType. |
|
inlinenodiscard |
This returns the buffer memory properties.
The memory properties are only relevant for persistently mapped buffers. In particular, if the memory is not coherent, an application must call xiiGALBuffer::FlushMappedRange() to make writes by the CPU available to the GPU, and call xiiGALBuffer::InvalidateMappedRange() to make writes by the GPU visible to the CPU.
|
nodiscardpure virtual |
This returns the sparse buffer memory properties.
Implemented in xiiGALBufferVulkan.
|
protectedpure virtual |
Implemented in xiiGALBufferVulkan.
|
pure virtual |
This invalidates the specified range of non-coherent memory modified by the GPU to make it visible to the CPU.
uiStartOffset | - The offset in bytes from the beginning of the buffer to the start of the memory to invalidate. |
uiSize | - The size in bytes of the memory range to invalidate. |
This method should only be used for persistently-mapped buffers that do not report the xiiGALMemoryProperties::HostCoherent property. After an application modifies a mapped memory range on the CPU, it must invalidate the range to make it visible to the CPU.
Implemented in xiiGALBufferVulkan.