![]() |
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 xiiBitflags< xiiGALExternalMemoryKind > | GetExternalMemoryKind () const |
| This returns the external memory kind flags for this buffer. | |
| 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) |
| XII_ALWAYS_INLINE xiiBitflags< xiiGALMemoryPropertyFlags > | GetMemoryProperties () const |
| virtual void | FlushMappedRange (xiiUInt64 uiStartOffset, xiiUInt64 uiSize)=0 |
| virtual void | InvalidateMappedRange (xiiUInt64 uiStartOffset, xiiUInt64 uiSize)=0 |
| xiiSharedPtr< xiiGALBufferView > | CreateView (xiiGALBufferViewCreationDescription &description) |
| virtual xiiGALSparseBufferProperties | GetSparseProperties () const =0 |
| This returns the sparse buffer memory properties. | |
| Public Member Functions inherited from xiiGALResource | |
| virtual void | SetResourceState (xiiBitflags< xiiGALResourceStateFlags > stateFlags) |
| 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. | |
| Public Member Functions inherited from xiiGALDeviceObject | |
| XII_ALWAYS_INLINE xiiSharedPtr< xiiGALDevice > | GetDevice () const |
| Public Member Functions inherited from xiiGALObject | |
| 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. | |
| Public Member Functions inherited from xiiReflectedClass | |
| 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. | |
| Public Member Functions inherited from xiiRefCounted | |
| virtual | ~xiiRefCounted ()=default |
| Adds a virtual destructor. | |
| Public Member Functions inherited from xiiRefCountingImpl | |
| xiiRefCountingImpl ()=default | |
| Constructor. | |
| xiiRefCountingImpl (const xiiRefCountingImpl &rhs) | |
| void | operator= (const xiiRefCountingImpl &rhs) |
| xiiUInt32 | AddRef () const |
| Increments the reference counter. Returns the new reference count. | |
| bool | TryAddRef () const |
| xiiUInt32 | ReleaseRef () const |
| Decrements the reference counter. Returns the new reference count.ywat. | |
| 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, xiiBitflags< xiiGALExternalMemoryKind > externalMemoryKind)=0 |
| virtual xiiInternal::NewInstance< xiiGALBufferView > | CreateViewPlatform (const xiiGALBufferViewCreationDescription &description)=0 |
| void | VerifyFlushMappedRangeArguments (xiiUInt64 uiStartOffset, xiiUInt64 uiSize) const |
| void | VerifyInvalidateMappedRangeArguments (xiiUInt64 uiStartOffset, xiiUInt64 uiSize) const |
| Protected Member Functions inherited from xiiGALResource | |
| xiiGALResource (xiiSharedPtr< xiiGALDevice > pDevice) | |
| Protected Member Functions inherited from xiiGALDeviceObject | |
| xiiGALDeviceObject (xiiSharedPtr< xiiGALDevice > pDevice) | |
| Copyright (c) Theophilus Eriata. All Rights Reserved. | |
| Protected Member Functions inherited from xiiGALObject | |
| xiiGALObject () | |
| Copyright (c) Theophilus Eriata. All Rights Reserved. | |
| virtual XII_ALWAYS_INLINE void | SetDebugNamePlatform (xiiStringView sName) const |
Protected Attributes | |
| xiiGALBufferCreationDescription | m_Description |
| xiiBitflags< xiiGALExternalMemoryKind > | m_ExternalMemoryKind |
| xiiBitflags< xiiGALMemoryPropertyFlags > | m_MemoryPropertyFlags |
| xiiGALBufferView * | m_DefaultBufferViews [xiiGALBufferViewType::ENUM_COUNT] = {} |
| Protected Attributes inherited from xiiGALResource | |
| xiiBitflags< xiiGALResourceStateFlags > | m_ResourceState |
| Protected Attributes inherited from xiiGALDeviceObject | |
| xiiSharedPtr< xiiGALDevice > | m_pDevice |
Friends | |
| class | xiiGALDevice |
| class | xiiGALBufferView |
| class | xiiMemoryUtils |
Additional Inherited Members | |
| Static Public Member Functions inherited from xiiNoBase | |
| 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 xiiGALBufferD3D12, and xiiGALBufferVulkan.
|
nodiscard |
This returns the handle of the default view.
| viewType | - The type of the requested view. See xiiGALBufferViewType. |
The returned shared pointer owns a reference to the view and its buffer. Views are created lazily and reused while retained. Keep the returned shared pointer for as long as the view is used, including across command recording.
|
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 xiiGALBufferD3D12, and 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 xiiGALBufferD3D12, and xiiGALBufferVulkan.