OGRE: Ogre::MetalDiscardBufferManager Class Reference

| OGRE 2.2.4 Object-Oriented Graphics Rendering Engine

Classes | Public Types | Public Member Functions | List of all members
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:
[legend]

## Classes
struct | UnsafeBlock

## Public Types
typedef vector< UnsafeBlock >::type | UnsafeBlockVec

## Public Member Functions
| MetalDiscardBufferManager (MetalDevice *device, VaoManager *vaoManager)
| ~MetalDiscardBufferManager ()
void | _getBlock (MetalDiscardBuffer *discardBuffer)
| For internal use. More...
void | _notifyDeviceStalled (void)
MetalDiscardBuffer * | createDiscardBuffer (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...
MetalDevice * | getDevice (void) const
VaoManager * | getVaoManager (void) const
void | operator delete (void *ptr)
void | operator delete (void *ptr, const char *, int, const char *)
void | operator delete (void *ptr, void *)
void | operator delete[] (void *ptr)
void | operator delete[] (void *ptr, const char *, int, const char *)
void * | operator new (size_t sz)
void * | operator new (size_t sz, const char *file, int line, const char *func)
| operator new, with debug line info More...
void * | operator new (size_t sz, void *ptr)
| placement operator new More...
void * | operator new[] (size_t sz)
void * | operator new[] (size_t sz, const char *file, int line, const char *func)
| array operator new, with debug line info More...

## 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

## ◆ UnsafeBlockVec

typedef vector<UnsafeBlock>::type Ogre::MetalDiscardBufferManager::UnsafeBlockVec

## Constructor & Destructor Documentation

## ◆ MetalDiscardBufferManager()

Ogre::MetalDiscardBufferManager::MetalDiscardBufferManager | ( | MetalDevice * | device,
|  | VaoManager * | vaoManager
| ) |  |

## ◆ ~MetalDiscardBufferManager()

Ogre::MetalDiscardBufferManager::~MetalDiscardBufferManager | ( |  | ) |

## Member Function Documentation

## ◆ _getBlock()

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

  discardBuffer | Buffer to assign a new region.

## ◆ _notifyDeviceStalled()

void Ogre::MetalDiscardBufferManager::_notifyDeviceStalled | ( | void |  | ) |

## ◆ createDiscardBuffer()

MetalDiscardBuffer* Ogre::MetalDiscardBufferManager::createDiscardBuffer | ( | size_t | bufferSize,
|  | uint16 | alignment
| ) |  |

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

Parameters

  bufferSize | Requested size in bytes.
  alignment | Alignment requirements.

Returns
  A new MetalDiscardBuffer

## ◆ destroyDiscardBuffer()

void Ogre::MetalDiscardBufferManager::destroyDiscardBuffer | ( | MetalDiscardBuffer * | discardBuffer | ) |

Destroys an existing MetalDiscardBuffer, releasing its memory.

Parameters

  discardBuffer | MetalDiscardBuffer to destroy

## ◆ getDevice()

MetalDevice* Ogre::MetalDiscardBufferManager::getDevice | ( | void |  | ) | const
| inline

## ◆ getVaoManager()

VaoManager* Ogre::MetalDiscardBufferManager::getVaoManager | ( | void |  | ) | const
| inline

## ◆ operator delete() [1/3]

template<class Alloc >

void Ogre::AllocatedObject< Alloc >::operator delete | ( | void * | ptr | ) |
| inlineinherited

## ◆ operator delete() [2/3]

template<class Alloc >

void Ogre::AllocatedObject< Alloc >::operator delete | ( | void * | ptr,
|  | const char * | ,
|  | int | ,
|  | const char * |
| ) |  |
| inlineinherited

## ◆ operator delete() [3/3]

template<class Alloc >

void Ogre::AllocatedObject< Alloc >::operator delete | ( | void * | ptr,
|  | void * |
| ) |  |
| inlineinherited

## ◆ operator delete[]() [1/2]

template<class Alloc >

void Ogre::AllocatedObject< Alloc >::operator delete[] | ( | void * | ptr | ) |
| inlineinherited

## ◆ operator delete[]() [2/2]

template<class Alloc >

void Ogre::AllocatedObject< Alloc >::operator delete[] | ( | void * | ptr,
|  | const char * | ,
|  | int | ,
|  | const char * |
| ) |  |
| inlineinherited

## ◆ operator new() [1/3]

template<class Alloc >

void* Ogre::AllocatedObject< Alloc >::operator new | ( | size_t | sz | ) |
| inlineinherited

## ◆ operator new() [2/3]

template<class Alloc >

void* Ogre::AllocatedObject< Alloc >::operator new | ( | size_t | sz,
|  | const char * | file,
|  | int | line,
|  | const char * | func
| ) |  |
| inlineinherited

operator new, with debug line info

## ◆ operator new() [3/3]

template<class Alloc >

void* Ogre::AllocatedObject< Alloc >::operator new | ( | size_t | sz,
|  | void * | ptr
| ) |  |
| inlineinherited

placement operator new

## ◆ operator new[]() [1/2]

template<class Alloc >

void* Ogre::AllocatedObject< Alloc >::operator new[] | ( | size_t | sz | ) |
| inlineinherited

## ◆ operator new[]() [2/2]

template<class Alloc >

void* Ogre::AllocatedObject< Alloc >::operator new[] | ( | size_t | sz,
|  | const char * | file,
|  | int | line,
|  | const char * | func
| ) |  |
| inlineinherited

array operator new, with debug line info

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

- OgreMetalDiscardBufferManager.h