OGRE  1.12.12
Object-Oriented Graphics Rendering Engine
Ogre::MetalDiscardBufferManager Class Reference

Metal doesn't support "DISCARD" like D3D9/D3D11 (and OpenGL but often it's broken) where we requested to map a write-only buffer and the API would discard the previous contents (thus allowing us to avoid a stall until the GPU is done with the region) More...

#include <OgreMetalDiscardBufferManager.h>

+ Inheritance diagram for Ogre::MetalDiscardBufferManager:

Classes

struct  Block
 
struct  UnsafeBlock
 

Public Types

typedef std::vector< UnsafeBlockUnsafeBlockVec
 

Public Member Functions

 MetalDiscardBufferManager (MetalDevice *device)
 
 ~MetalDiscardBufferManager ()
 
void _getBlock (MetalDiscardBuffer *discardBuffer)
 For internal use. More...
 
void _notifyDeviceStalled (void)
 
MetalDiscardBuffercreateDiscardBuffer (size_t bufferSize, uint16 alignment)
 Creates a buffer that supports discarding to hold the required size. More...
 
void destroyDiscardBuffer (MetalDiscardBuffer *discardBuffer)
 Destroys an existing MetalDiscardBuffer, releasing its memory. More...
 
MetalDevicegetDevice (void) const
 

Detailed Description

Metal doesn't support "DISCARD" like D3D9/D3D11 (and OpenGL but often it's broken) where we requested to map a write-only buffer and the API would discard the previous contents (thus allowing us to avoid a stall until the GPU is done with the region)

We need Discard for the v1 interfaces. So we need to emulate it. This class does exactly this.

Member Typedef Documentation

Constructor & Destructor Documentation

Ogre::MetalDiscardBufferManager::MetalDiscardBufferManager ( MetalDevice device)
Ogre::MetalDiscardBufferManager::~MetalDiscardBufferManager ( )

Member Function Documentation

void Ogre::MetalDiscardBufferManager::_notifyDeviceStalled ( void  )
void Ogre::MetalDiscardBufferManager::_getBlock ( MetalDiscardBuffer discardBuffer)

For internal use.

Retrieves a fresh new block. The old block will be returned to a pool until it's safe to reuse again. Used by the DiscardBuffer when map( DISCARD ) is called.

Parameters
discardBufferBuffer to assign a new region.
MetalDiscardBuffer* Ogre::MetalDiscardBufferManager::createDiscardBuffer ( size_t  bufferSize,
uint16  alignment 
)

Creates a buffer that supports discarding to hold the required size.

Parameters
bufferSizeRequested size in bytes.
alignmentAlignment requirements.
Returns
A new MetalDiscardBuffer
void Ogre::MetalDiscardBufferManager::destroyDiscardBuffer ( MetalDiscardBuffer discardBuffer)

Destroys an existing MetalDiscardBuffer, releasing its memory.

Parameters
discardBufferMetalDiscardBuffer to destroy
MetalDevice* Ogre::MetalDiscardBufferManager::getDevice ( void  ) const
inline

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