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...
|
| MetalDiscardBufferManager (MetalDevice *device, VaoManager *vaoManager) |
|
| ~MetalDiscardBufferManager () |
|
void | _getBlock (MetalDiscardBuffer *discardBuffer) |
| For internal use.
|
|
void | _notifyDeviceStalled (void) |
|
MetalDiscardBuffer * | createDiscardBuffer (size_t bufferSize, uint16 alignment) |
| Creates a buffer that supports discarding to hold the required size.
|
|
void | destroyDiscardBuffer (MetalDiscardBuffer *discardBuffer) |
| Destroys an existing MetalDiscardBuffer, releasing its memory.
|
|
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
|
|
void * | operator new (size_t sz, void *ptr) |
| placement operator new
|
|
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
|
|
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.