OGRE 2.1
Object-Oriented Graphics Rendering Engine
|
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) |
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. | |
id< MTLBuffer > | getBufferNameForGpuWrite (void) |
size_t | getSizeBytes (void) 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) |
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.
Ogre::v1::MetalHardwareBufferCommon::MetalHardwareBufferCommon | ( | size_t | sizeBytes, |
HardwareBuffer::Usage | usage, | ||
uint16 | alignment, | ||
MetalDiscardBufferManager * | discardBufferManager, | ||
MetalDevice * | device | ||
) |
|
virtual |
void Ogre::v1::MetalHardwareBufferCommon::copyData | ( | MetalHardwareBufferCommon * | srcBuffer, |
size_t | srcOffset, | ||
size_t | dstOffset, | ||
size_t | length, | ||
bool | discardWholeBuffer = false |
||
) |
Returns the actual API buffer, but first sets mLastFrameUsed as we assume you're calling this function to use the buffer in the GPU.
outOffset | Out. Guaranteed to be written. Used by HBU_DISCARDABLE buffers which need an offset to the internal ring buffer we've allocated. |
void * Ogre::v1::MetalHardwareBufferCommon::lockImpl | ( | size_t | offset, |
size_t | length, | ||
HardwareBuffer::LockOptions | options, | ||
bool | isLocked | ||
) |
void Ogre::v1::MetalHardwareBufferCommon::writeData | ( | size_t | offset, |
size_t | length, | ||
const void * | pSource, | ||
bool | discardWholeBuffer = false |
||
) |