Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
Divide::vkGenericVertexData Class Referencefinal

#include <vkGenericVertexData.h>

+ Inheritance diagram for Divide::vkGenericVertexData:

Classes

struct  GenericBufferImpl
 
struct  IndexBufferEntry
 

Public Member Functions

 vkGenericVertexData (GFXDevice &context, const U16 ringBufferLength, const std::string_view name)
 
void reset () override
 Also clears GPU memory.
 
void draw (const GenericDrawCommand &command, VDIUserData *data) noexcept override
 
BufferLock setIndexBuffer (const IndexBuffer &indices) override
 
BufferLock setBuffer (const SetBufferParams &params) noexcept override
 
BufferLock updateBuffer (U32 buffer, U32 elementCountOffset, U32 elementCountRange, bufferPtr data) noexcept override
 
- Public Member Functions inherited from Divide::GenericVertexData
 GenericVertexData (GFXDevice &context, U16 ringBufferLength, const std::string_view name)
 
virtual BufferLock setIndexBuffer (const IndexBuffer &indices)=0
 
virtual void reset ()=0
 Also clears GPU memory.
 
virtual BufferLock setBuffer (const SetBufferParams &params)=0
 
virtual BufferLock updateBuffer (U32 buffer, U32 elementCountOffset, U32 elementCountRange, bufferPtr data)=0
 
- Public Member Functions inherited from Divide::VertexDataInterface
 VertexDataInterface (GFXDevice &context, const std::string_view name)
 
virtual ~VertexDataInterface () override
 
virtual void draw (const GenericDrawCommand &command, VDIUserData *data)=0
 
 PROPERTY_R (Handle, handle)
 
 PROPERTY_RW (bool, primitiveRestartRequired, false)
 
- Public Member Functions inherited from Divide::GUIDWrapper
 GUIDWrapper () noexcept
 
 GUIDWrapper (const GUIDWrapper &old) noexcept
 
 GUIDWrapper (GUIDWrapper &&old) noexcept
 
virtual ~GUIDWrapper ()=default
 
FORCE_INLINE I64 getGUID () const noexcept
 
GUIDWrapperoperator= (const GUIDWrapper &old)=delete
 
GUIDWrapperoperator= (GUIDWrapper &&other)=delete
 
- Public Member Functions inherited from Divide::GraphicsResource
virtual ~GraphicsResource ()
 
GFXDevicecontext () const noexcept
 
U64 nameHash () const noexcept
 
- Public Member Functions inherited from Divide::NonCopyable
 NonCopyable (const NonCopyable &)=delete
 
NonCopyableoperator= (const NonCopyable &)=delete
 
 NonCopyable (NonCopyable &&)=default
 
NonCopyableoperator= (NonCopyable &&)=default
 
- Public Member Functions inherited from Divide::NonMovable
 NonMovable (NonMovable &&)=delete
 
NonMovableoperator= (NonMovable &&)=delete
 
 NonMovable (const NonMovable &)=default
 
NonMovableoperator= (const NonMovable &)=default
 
- Public Member Functions inherited from Divide::RingBuffer
 RingBuffer (U16 queueLength) noexcept
 
virtual ~RingBuffer ()=default
 
virtual void resize (U16 queueLength) noexcept
 
U16 queueLength () const noexcept
 
I32 queueIndex () const noexcept
 
void incQueue () noexcept
 
void decQueue () noexcept
 

Private Member Functions

void bindBufferInternal (const SetBufferParams::BufferBindConfig &bindConfig, VkCommandBuffer &cmdBuffer)
 

Private Attributes

vector< IndexBufferEntry_idxBuffers
 
vector< GenericBufferImpl_bufferObjects
 
SharedMutex _idxBufferLock
 

Additional Inherited Members

- Public Types inherited from Divide::VertexDataInterface
using Handle = PoolHandle
 
using VDIPool = ObjectPool< VertexDataInterface, 256, true >
 
- Public Types inherited from Divide::GraphicsResource
enum class  Type : U8 {
  RENDER_TARGET , SHADER_BUFFER , BUFFER , SHADER ,
  SHADER_PROGRAM , TEXTURE , COUNT
}
 
- Static Public Member Functions inherited from Divide::GUIDWrapper
static I64 generateGUID () noexcept
 
- Static Public Attributes inherited from Divide::VertexDataInterface
static constexpr Handle INVALID_VDI_HANDLE {U16_MAX, 0u}
 
static VDIPool s_VDIPool
 
- Protected Member Functions inherited from Divide::GraphicsResource
 GraphicsResource (GFXDevice &context, Type type, I64 GUID, U64 nameHash)
 
- Protected Member Functions inherited from Divide::NonCopyable
 NonCopyable ()=default
 
 ~NonCopyable ()=default
 
- Protected Member Functions inherited from Divide::NonMovable
 NonMovable ()=default
 
 ~NonMovable ()=default
 
- Protected Attributes inherited from Divide::GenericVertexData
Str< 256 > _name
 
- Protected Attributes inherited from Divide::GUIDWrapper
const I64 _guid
 
- Protected Attributes inherited from Divide::GraphicsResource
GFXDevice_context
 

Detailed Description

Definition at line 42 of file vkGenericVertexData.h.

Constructor & Destructor Documentation

◆ vkGenericVertexData()

Divide::vkGenericVertexData::vkGenericVertexData ( GFXDevice context,
const U16  ringBufferLength,
const std::string_view  name 
)

Definition at line 14 of file vkGenericVertexData.cpp.

Member Function Documentation

◆ bindBufferInternal()

void Divide::vkGenericVertexData::bindBufferInternal ( const SetBufferParams::BufferBindConfig &  bindConfig,
VkCommandBuffer &  cmdBuffer 
)
private

Definition at line 67 of file vkGenericVertexData.cpp.

◆ draw()

void Divide::vkGenericVertexData::draw ( const GenericDrawCommand command,
VDIUserData data 
)
overridevirtualnoexcept

Implements Divide::VertexDataInterface.

Definition at line 27 of file vkGenericVertexData.cpp.

◆ reset()

void Divide::vkGenericVertexData::reset ( )
overridevirtual

Also clears GPU memory.

Implements Divide::GenericVertexData.

Definition at line 19 of file vkGenericVertexData.cpp.

◆ setBuffer()

BufferLock Divide::vkGenericVertexData::setBuffer ( const SetBufferParams params)
overridevirtualnoexcept

When reading and writing to the same buffer, we use a round-robin approach and offset the reading and writing to multiple copies of the data

Implements Divide::GenericVertexData.

Definition at line 95 of file vkGenericVertexData.cpp.

◆ setIndexBuffer()

BufferLock Divide::vkGenericVertexData::setIndexBuffer ( const IndexBuffer indices)
overridevirtual

Implements Divide::GenericVertexData.

Definition at line 148 of file vkGenericVertexData.cpp.

◆ updateBuffer()

BufferLock Divide::vkGenericVertexData::updateBuffer ( U32  buffer,
U32  elementCountOffset,
U32  elementCountRange,
bufferPtr  data 
)
overridevirtualnoexcept

Implements Divide::GenericVertexData.

Definition at line 249 of file vkGenericVertexData.cpp.

Member Data Documentation

◆ _bufferObjects

vector<GenericBufferImpl> Divide::vkGenericVertexData::_bufferObjects
private

Definition at line 75 of file vkGenericVertexData.h.

◆ _idxBufferLock

SharedMutex Divide::vkGenericVertexData::_idxBufferLock
private

Definition at line 76 of file vkGenericVertexData.h.

◆ _idxBuffers

vector<IndexBufferEntry> Divide::vkGenericVertexData::_idxBuffers
private

Definition at line 74 of file vkGenericVertexData.h.


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