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

#include <ShaderBuffer.h>

+ Inheritance diagram for Divide::ShaderBuffer:

Public Member Functions

 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
 

Static Public Member Functions

static size_t AlignmentRequirement (BufferUsageType usage) noexcept
 
- Static Public Member Functions inherited from Divide::GUIDWrapper
static I64 generateGUID () noexcept
 

Protected Member Functions

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
 

Protected Attributes

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
 

Friends

class Attorney::ShaderBufferBind
 

Additional Inherited Members

- Public Types inherited from Divide::GraphicsResource
enum class  Type : U8 {
  RENDER_TARGET , SHADER_BUFFER , BUFFER , SHADER ,
  SHADER_PROGRAM , TEXTURE , COUNT
}
 

Detailed Description

Definition at line 48 of file ShaderBuffer.h.

Constructor & Destructor Documentation

◆ ShaderBuffer()

Divide::ShaderBuffer::ShaderBuffer ( GFXDevice context,
const ShaderBufferDescriptor descriptor 
)
explicit

Definition at line 25 of file ShaderBuffer.cpp.

Member Function Documentation

◆ AlignmentRequirement()

size_t Divide::ShaderBuffer::AlignmentRequirement ( BufferUsageType  usage)
staticnoexcept

Definition at line 8 of file ShaderBuffer.cpp.

◆ clearBytes()

BufferLock Divide::ShaderBuffer::clearBytes ( BufferRange  range)

Definition at line 77 of file ShaderBuffer.cpp.

◆ clearData() [1/2]

FORCE_INLINE BufferLock Divide::ShaderBuffer::clearData ( )
inline

Definition at line 75 of file ShaderBuffer.h.

◆ clearData() [2/2]

BufferLock Divide::ShaderBuffer::clearData ( BufferRange  range)

Definition at line 38 of file ShaderBuffer.cpp.

◆ getBufferImpl()

virtual LockableBuffer * Divide::ShaderBuffer::getBufferImpl ( )
pure virtual

◆ getPrimitiveCount()

FORCE_INLINE U32 Divide::ShaderBuffer::getPrimitiveCount ( ) const
inlinenoexcept

Definition at line 70 of file ShaderBuffer.h.

◆ getPrimitiveSize()

FORCE_INLINE size_t Divide::ShaderBuffer::getPrimitiveSize ( ) const
inlinenoexcept

Definition at line 71 of file ShaderBuffer.h.

◆ getStartIndex()

FORCE_INLINE I32 Divide::ShaderBuffer::getStartIndex ( const bool  read) const
inlinenoexcept

Definition at line 68 of file ShaderBuffer.h.

◆ getStartOffset()

FORCE_INLINE size_t Divide::ShaderBuffer::getStartOffset ( const bool  read) const
inlinenoexcept

Definition at line 69 of file ShaderBuffer.h.

◆ getUpdateFrequency()

BufferUpdateFrequency Divide::ShaderBuffer::getUpdateFrequency ( ) const
noexcept

Definition at line 99 of file ShaderBuffer.cpp.

◆ getUpdateUsage()

BufferUpdateUsage Divide::ShaderBuffer::getUpdateUsage ( ) const
noexcept

Definition at line 94 of file ShaderBuffer.cpp.

◆ getUsage()

FORCE_INLINE BufferUsageType Divide::ShaderBuffer::getUsage ( ) const
inlinenoexcept

Definition at line 72 of file ShaderBuffer.h.

◆ PROPERTY_R() [1/5]

Divide::ShaderBuffer::PROPERTY_R ( size_t  ,
alignedBufferSize  ,
0u   
)

◆ PROPERTY_R() [2/5]

Divide::ShaderBuffer::PROPERTY_R ( size_t  ,
alignmentRequirement  ,
sizeof(U32  
)

◆ PROPERTY_R() [3/5]

Divide::ShaderBuffer::PROPERTY_R ( string  ,
name   
)

◆ PROPERTY_R() [4/5]

Divide::ShaderBuffer::PROPERTY_R ( U64  ,
lastReadFrame  ,
0u   
)

◆ PROPERTY_R() [5/5]

Divide::ShaderBuffer::PROPERTY_R ( U64  ,
lastWrittenFrame  ,
0u   
)

◆ readBytes()

void Divide::ShaderBuffer::readBytes ( BufferRange  range,
std::pair< bufferPtr, size_t >  outData 
)

Definition at line 64 of file ShaderBuffer.cpp.

◆ readBytesInternal()

virtual void Divide::ShaderBuffer::readBytesInternal ( BufferRange  range,
std::pair< bufferPtr, size_t >  outData 
)
protectedpure virtual

◆ readData()

void Divide::ShaderBuffer::readData ( BufferRange  range,
std::pair< bufferPtr, size_t >  outData 
)

Definition at line 55 of file ShaderBuffer.cpp.

◆ writeBytes()

BufferLock Divide::ShaderBuffer::writeBytes ( BufferRange  range,
const bufferPtr  data 
)

Definition at line 81 of file ShaderBuffer.cpp.

◆ writeBytesInternal()

virtual BufferLock Divide::ShaderBuffer::writeBytesInternal ( BufferRange  range,
const bufferPtr  data 
)
protectedpure virtual

◆ writeData() [1/2]

BufferLock Divide::ShaderBuffer::writeData ( BufferRange  range,
const bufferPtr  data 
)

Definition at line 46 of file ShaderBuffer.cpp.

◆ writeData() [2/2]

FORCE_INLINE BufferLock Divide::ShaderBuffer::writeData ( const bufferPtr  data)
inline

Definition at line 74 of file ShaderBuffer.h.

Friends And Related Function Documentation

◆ Attorney::ShaderBufferBind

friend class Attorney::ShaderBufferBind
friend

Definition at line 53 of file ShaderBuffer.h.

Member Data Documentation

◆ _lastWriteFrameNumber

U64 Divide::ShaderBuffer::_lastWriteFrameNumber { 0u }
protected

Definition at line 94 of file ShaderBuffer.h.

◆ _maxSize

size_t Divide::ShaderBuffer::_maxSize { 0u }
protected

Definition at line 93 of file ShaderBuffer.h.

◆ _params

BufferParams Divide::ShaderBuffer::_params
protected

Definition at line 92 of file ShaderBuffer.h.


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