OGRE-Next: Ogre::VulkanDiscardBufferManager Class Reference

| OGRE-Next 3.0.0 Object-Oriented Graphics Rendering Engine

Loading...
Searching...
No Matches
Ogre::VulkanDiscardBufferManager Class Reference

Vulkan 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 <OgreVulkanDiscardBufferManager.h>`

Inheritance diagram for Ogre::VulkanDiscardBufferManager:
[legend]

## Classes
struct | UnsafeBlock

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

## Public Member Functions
| VulkanDiscardBufferManager (VulkanDevice *device, VaoManager *vaoManager)
| ~VulkanDiscardBufferManager ()
void | _getBlock (VulkanDiscardBuffer *discardBuffer)
| For internal use.
void | _notifyDeviceStalled ()
VulkanDiscardBuffer * | createDiscardBuffer (size_t bufferSize, uint16 alignment)
| Creates a buffer that supports discarding to hold the required size.
void | destroyDiscardBuffer (VulkanDiscardBuffer *discardBuffer)
| Destroys an existing VulkanDiscardBuffer, releasing its memory.
VulkanRawBuffer & | getBuffer ()
VulkanDevice * | getDevice () const
VaoManager * | getVaoManager () const

## Detailed Description

Vulkan 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::VulkanDiscardBufferManager::UnsafeBlockVec

## Constructor & Destructor Documentation

## ◆ VulkanDiscardBufferManager()

Ogre::VulkanDiscardBufferManager::VulkanDiscardBufferManager | ( | VulkanDevice * | device,
|  | VaoManager * | vaoManager )

## ◆ ~VulkanDiscardBufferManager()

Ogre::VulkanDiscardBufferManager::~VulkanDiscardBufferManager | ( |  | ) |

## Member Function Documentation

## ◆ _getBlock()

void Ogre::VulkanDiscardBufferManager::_getBlock | ( | VulkanDiscardBuffer * | 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::VulkanDiscardBufferManager::_notifyDeviceStalled | ( |  | ) |

## ◆ createDiscardBuffer()

VulkanDiscardBuffer * Ogre::VulkanDiscardBufferManager::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 VulkanDiscardBuffer

## ◆ destroyDiscardBuffer()

void Ogre::VulkanDiscardBufferManager::destroyDiscardBuffer | ( | VulkanDiscardBuffer * | discardBuffer | ) |

Destroys an existing VulkanDiscardBuffer, releasing its memory.

Parameters

  discardBuffer | VulkanDiscardBuffer to destroy

## ◆ getBuffer()

VulkanRawBuffer & Ogre::VulkanDiscardBufferManager::getBuffer | ( |  | ) |
| inline

## ◆ getDevice()

VulkanDevice * Ogre::VulkanDiscardBufferManager::getDevice | ( |  | ) | const
| inline

## ◆ getVaoManager()

VaoManager * Ogre::VulkanDiscardBufferManager::getVaoManager | ( |  | ) | const
| inline

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

- OgreVulkanDiscardBufferManager.h