OGRE-Next  2.3
Object-Oriented Graphics Rendering Engine
Ogre::v1::MetalHardwareBufferCommon Class Reference

Common buffer operations for most v1 buffer interfaces used in Metal This implementation treats: Ignores STATIC and DYNAMIC bit in buffers Lack of WRITE_ONLY and DISCARDABLE buffer puts it in slowest path. More...

#include <OgreMetalHardwareBufferCommon.h>

Public Member Functions

 MetalHardwareBufferCommon (size_t sizeBytes, HardwareBuffer::Usage usage, uint16 alignment, MetalDiscardBufferManager *discardBufferManager, MetalDevice *device)
 
virtual ~MetalHardwareBufferCommon ()
 
void _notifyDeviceStalled ()
 
void copyData (MetalHardwareBufferCommon *srcBuffer, size_t srcOffset, size_t dstOffset, size_t length, bool discardWholeBuffer=false)
 
id< MTLBuffer > getBufferName (size_t &outOffset)
 Returns the actual API buffer, but first sets mLastFrameUsed as we assume you're calling this function to use the buffer in the GPU. More...
 
id< MTLBuffer > getBufferNameForGpuWrite ()
 
size_t getSizeBytes () const
 
void * lockImpl (size_t offset, size_t length, HardwareBuffer::LockOptions options, bool isLocked)
 
void readData (size_t offset, size_t length, void *pDest)
 
void unlockImpl (size_t lockStart, size_t lockSize)
 
void writeData (size_t offset, size_t length, const void *pSource, bool discardWholeBuffer=false)
 

Detailed Description

Common buffer operations for most v1 buffer interfaces used in Metal This implementation treats: Ignores STATIC and DYNAMIC bit in buffers Lack of WRITE_ONLY and DISCARDABLE buffer puts it in slowest path.

Puts WRITE_ONLY in device memory and uses staging buffers to avoid blocking. Use WRITE_ONLY when possible. When DISCARDABLE bit is set, it uses MetalDiscardBuffer.

Constructor & Destructor Documentation

◆ MetalHardwareBufferCommon()

Ogre::v1::MetalHardwareBufferCommon::MetalHardwareBufferCommon ( size_t  sizeBytes,
HardwareBuffer::Usage  usage,
uint16  alignment,
MetalDiscardBufferManager discardBufferManager,
MetalDevice device 
)

◆ ~MetalHardwareBufferCommon()

virtual Ogre::v1::MetalHardwareBufferCommon::~MetalHardwareBufferCommon ( )
virtual

Member Function Documentation

◆ _notifyDeviceStalled()

void Ogre::v1::MetalHardwareBufferCommon::_notifyDeviceStalled ( )

◆ copyData()

void Ogre::v1::MetalHardwareBufferCommon::copyData ( MetalHardwareBufferCommon srcBuffer,
size_t  srcOffset,
size_t  dstOffset,
size_t  length,
bool  discardWholeBuffer = false 
)
See also
HardwareBuffer.

◆ getBufferName()

id<MTLBuffer> Ogre::v1::MetalHardwareBufferCommon::getBufferName ( size_t &  outOffset)

Returns the actual API buffer, but first sets mLastFrameUsed as we assume you're calling this function to use the buffer in the GPU.

Parameters
outOffsetOut. Guaranteed to be written. Used by HBU_DISCARDABLE buffers which need an offset to the internal ring buffer we've allocated.
Returns
The MTLBuffer in question.

◆ getBufferNameForGpuWrite()

id<MTLBuffer> Ogre::v1::MetalHardwareBufferCommon::getBufferNameForGpuWrite ( )

◆ getSizeBytes()

size_t Ogre::v1::MetalHardwareBufferCommon::getSizeBytes ( ) const
inline

◆ lockImpl()

void* Ogre::v1::MetalHardwareBufferCommon::lockImpl ( size_t  offset,
size_t  length,
HardwareBuffer::LockOptions  options,
bool  isLocked 
)
See also
HardwareBuffer.

◆ readData()

void Ogre::v1::MetalHardwareBufferCommon::readData ( size_t  offset,
size_t  length,
void *  pDest 
)
See also
HardwareBuffer.

◆ unlockImpl()

void Ogre::v1::MetalHardwareBufferCommon::unlockImpl ( size_t  lockStart,
size_t  lockSize 
)
See also
HardwareBuffer.

◆ writeData()

void Ogre::v1::MetalHardwareBufferCommon::writeData ( size_t  offset,
size_t  length,
const void *  pSource,
bool  discardWholeBuffer = false 
)
See also
HardwareBuffer.

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