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

#include <vkShaderBuffer.h>

+ Inheritance diagram for Divide::vkShaderBuffer:

Public Member Functions

 vkShaderBuffer (GFXDevice &context, const ShaderBufferDescriptor &descriptor)
 
LockableBuffergetBufferImpl () override final
 
- Public Member Functions inherited from Divide::ShaderBuffer
 ShaderBuffer (GFXDevice &context, const ShaderBufferDescriptor &descriptor)
 
void readData (BufferRange range, std::pair< bufferPtr, size_t > outData)
 
void readBytes (BufferRange range, std::pair< bufferPtr, size_t > outData)
 
BufferLock clearData (BufferRange range)
 
BufferLock clearBytes (BufferRange range)
 
BufferLock writeData (BufferRange range, const bufferPtr data)
 
BufferLock writeBytes (BufferRange range, const bufferPtr data)
 
BufferUpdateUsage getUpdateUsage () const noexcept
 
BufferUpdateFrequency getUpdateFrequency () const noexcept
 
FORCE_INLINE I32 getStartIndex (const bool read) const noexcept
 
FORCE_INLINE size_t getStartOffset (const bool read) const noexcept
 
FORCE_INLINE U32 getPrimitiveCount () const noexcept
 
FORCE_INLINE size_t getPrimitiveSize () const noexcept
 
FORCE_INLINE BufferUsageType getUsage () const noexcept
 
FORCE_INLINE BufferLock writeData (const bufferPtr data)
 
FORCE_INLINE BufferLock clearData ()
 
virtual LockableBuffergetBufferImpl ()=0
 
 PROPERTY_R (size_t, alignedBufferSize, 0u)
 
 PROPERTY_R (size_t, alignmentRequirement, sizeof(U32))
 
 PROPERTY_R (string, name)
 
 PROPERTY_R (U64, lastWrittenFrame, 0u)
 
 PROPERTY_R (U64, lastReadFrame, 0u)
 
- 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::RingBufferSeparateWrite
 RingBufferSeparateWrite (U16 queueLength, bool separateReadWrite, bool writeAhead=true) noexcept
 
virtual ~RingBufferSeparateWrite ()=default
 
virtual void resize (U16 queueLength)
 
U16 queueLength () const noexcept
 
I32 queueWriteIndex () const noexcept
 
I32 queueReadIndex () const noexcept
 
I32 incQueue () noexcept
 
I32 decQueue () noexcept
 

Protected Member Functions

BufferLock writeBytesInternal (BufferRange range, const bufferPtr data) noexcept override
 
void readBytesInternal (BufferRange range, std::pair< bufferPtr, size_t > outData) noexcept override
 
virtual void readBytesInternal (BufferRange range, std::pair< bufferPtr, size_t > outData)=0
 
virtual BufferLock writeBytesInternal (BufferRange range, const bufferPtr data)=0
 
- 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
 

Private Attributes

vkBufferImpl_uptr _bufferImpl { nullptr }
 
Mutex _implLock
 

Additional Inherited Members

- 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::ShaderBuffer
static size_t AlignmentRequirement (BufferUsageType usage) noexcept
 
- Static Public Member Functions inherited from Divide::GUIDWrapper
static I64 generateGUID () noexcept
 
- Protected Attributes inherited from Divide::ShaderBuffer
BufferParams _params
 
size_t _maxSize { 0u }
 
U64 _lastWriteFrameNumber { 0u }
 
- 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 vkShaderBuffer.h.

Constructor & Destructor Documentation

◆ vkShaderBuffer()

Divide::vkShaderBuffer::vkShaderBuffer ( GFXDevice context,
const ShaderBufferDescriptor descriptor 
)

Definition at line 16 of file vkShaderBuffer.cpp.

Member Function Documentation

◆ getBufferImpl()

LockableBuffer * Divide::vkShaderBuffer::getBufferImpl ( )
finaloverridevirtual

Implements Divide::ShaderBuffer.

Definition at line 70 of file vkShaderBuffer.cpp.

◆ readBytesInternal()

void Divide::vkShaderBuffer::readBytesInternal ( BufferRange  range,
std::pair< bufferPtr, size_t >  outData 
)
overrideprotectedvirtualnoexcept

Implements Divide::ShaderBuffer.

Definition at line 57 of file vkShaderBuffer.cpp.

◆ writeBytesInternal()

BufferLock Divide::vkShaderBuffer::writeBytesInternal ( BufferRange  range,
const bufferPtr  data 
)
overrideprotectedvirtualnoexcept

Implements Divide::ShaderBuffer.

Definition at line 42 of file vkShaderBuffer.cpp.

Member Data Documentation

◆ _bufferImpl

vkBufferImpl_uptr Divide::vkShaderBuffer::_bufferImpl { nullptr }
private

Definition at line 53 of file vkShaderBuffer.h.

◆ _implLock

Mutex Divide::vkShaderBuffer::_implLock
private

Definition at line 54 of file vkShaderBuffer.h.


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