OGRE-Next: Ogre::VulkanQueue Class Reference

| OGRE-Next 3.0.0 Object-Oriented Graphics Rendering Engine

Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Public Attributes | List of all members
Ogre::VulkanQueue Class Reference

`#include <OgreVulkanQueue.h>`

## Classes
struct | PerFrameData

## Public Types
enum | EncoderState { EncoderGraphicsOpen , EncoderComputeOpen , EncoderCopyOpen , EncoderClosed }
enum | QueueFamily { Graphics , Compute , Transfer , NumQueueFamilies }

## Public Member Functions
| VulkanQueue ()
| ~VulkanQueue ()
bool | _isFrameFinished (uint8 frameIdx)
void | _waitOnFrame (uint8 frameIdx)
VkFence | acquireCurrentFence ()
void | addWindowToWaitFor (VkSemaphore imageAcquisitionSemaph)
| When we'll call commitAndNextCommandBuffer, we'll have to wait for this semaphore on to execute STAGE_COLOR_ATTACHMENT_OUTPUT_BIT.
void | commitAndNextCommandBuffer (SubmissionType::SubmissionType submissionType=SubmissionType::FlushOnly)
void | destroy ()
void | endAllEncoders (bool endRenderPassDesc=true)
void | endComputeEncoder ()
void | endCopyEncoder ()
void | endRenderEncoder (const bool endRenderPassDesc=true)
void | getComputeEncoder ()
void | getCopyEncoder (const BufferPacked *buffer, TextureGpu *texture, const bool bDownload, CopyEncTransitionMode::CopyEncTransitionMode transitionMode)
| Call this function when you need to start copy/transfer operations.
void | getCopyEncoderAsyncTextureTicketUpload ()
void | getCopyEncoderV1Buffer (const bool bDownload)
EncoderState | getEncoderState () const
uint32 | getFamilyIdx () const
void | getGraphicsEncoder ()
VulkanVaoManager * | getVaoManager ()
void | init (VkDevice device, VkQueue queue, VulkanRenderSystem *renderSystem)
bool | isFenceFlushed (VkFence fence) const
| If this function returns false, waiting on the fence would cause a deadlock since it will never signal.
void | notifyTextureDestroyed (VulkanTextureGpu *texture)
void | releaseFence (VkFence fence)
void | setExternalQueue (VulkanDevice *owner, QueueFamily family, VkQueue queue)
void | setQueueData (VulkanDevice *owner, QueueFamily family, uint32 familyIdx, uint32 queueIdx)

## Public Attributes
VkCommandBuffer | mCurrentCmdBuffer
VkDevice | mDevice
QueueFamily | mFamily
uint32 | mFamilyIdx
VulkanDevice * | mOwnerDevice
VkQueue | mQueue
uint32 | mQueueIdx
FastArray< VulkanWindowSwapChainBased * > | mWindowsPendingSwap

## Member Enumeration Documentation

## ◆ EncoderState

enum Ogre::VulkanQueue::EncoderState

Enumerator
EncoderGraphicsOpen |
EncoderComputeOpen |
EncoderCopyOpen |
EncoderClosed |

## ◆ QueueFamily

enum Ogre::VulkanQueue::QueueFamily

Enumerator
Graphics |
Compute |
Transfer |
NumQueueFamilies |

## Constructor & Destructor Documentation

## ◆ VulkanQueue()

Ogre::VulkanQueue::VulkanQueue | ( |  | ) |

## ◆ ~VulkanQueue()

Ogre::VulkanQueue::~VulkanQueue | ( |  | ) |

## Member Function Documentation

## ◆ _isFrameFinished()

bool Ogre::VulkanQueue::_isFrameFinished | ( | uint8 | frameIdx | ) |

## ◆ _waitOnFrame()

void Ogre::VulkanQueue::_waitOnFrame | ( | uint8 | frameIdx | ) |

## ◆ acquireCurrentFence()

VkFence Ogre::VulkanQueue::acquireCurrentFence | ( |  | ) |

## ◆ addWindowToWaitFor()

void Ogre::VulkanQueue::addWindowToWaitFor | ( | VkSemaphore | imageAcquisitionSemaph | ) |

When we'll call commitAndNextCommandBuffer, we'll have to wait for this semaphore on to execute STAGE_COLOR_ATTACHMENT_OUTPUT_BIT.

## ◆ commitAndNextCommandBuffer()

void Ogre::VulkanQueue::commitAndNextCommandBuffer | ( | SubmissionType::SubmissionType | submissionType = SubmissionType::FlushOnly | ) |

References Ogre::SubmissionType::FlushOnly.

## ◆ destroy()

void Ogre::VulkanQueue::destroy | ( |  | ) |

## ◆ endAllEncoders()

void Ogre::VulkanQueue::endAllEncoders | ( | bool | endRenderPassDesc = true | ) |

## ◆ endComputeEncoder()

void Ogre::VulkanQueue::endComputeEncoder | ( |  | ) |

## ◆ endCopyEncoder()

void Ogre::VulkanQueue::endCopyEncoder | ( |  | ) |

## ◆ endRenderEncoder()

void Ogre::VulkanQueue::endRenderEncoder | ( | const bool | endRenderPassDesc = true | ) |

## ◆ getComputeEncoder()

void Ogre::VulkanQueue::getComputeEncoder | ( |  | ) |

## ◆ getCopyEncoder()

void Ogre::VulkanQueue::getCopyEncoder | ( | const BufferPacked * | buffer,
|  | TextureGpu * | texture,
|  | const bool | bDownload,
|  | CopyEncTransitionMode::CopyEncTransitionMode | transitionMode )

Call this function when you need to start copy/transfer operations.

Remarks
  buffer and texture pointers cannot be both nullptr at the same time

You don't have to pair every getCopyEncoder call with an endCopyEncoder call. In fact this is discouraged.

Keep calling getCopyEncoder until you're done with all transfer operations

See also
  VulkanQueue::prepareForUpload
  VulkanQueue::prepareForDownload

Parameters

  buffer | The buffer we're copying from/to. Can be nullptr
  texture | The texture we're copying from/to. Can be nullptr

If uploading, the texture will be transitioned to VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL If downloading, the texture will be transitioned to VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL

Parameters

  bDownload | True if we plan to do CPU -> GPU transfers False if we plan to do GPU -> CPU transfers

If you want to perform GPU -> GPU transfers, then you need to call:

queue->getCopyEncoder( src, src, true );
queue->getCopyEncoder( dst, dst, false );

Parameters

  transitionMode | Only used if texture != nullptr See CopyEncTransitionMode::CopyEncTransitionMode

## ◆ getCopyEncoderAsyncTextureTicketUpload()

void Ogre::VulkanQueue::getCopyEncoderAsyncTextureTicketUpload | ( |  | ) |

## ◆ getCopyEncoderV1Buffer()

void Ogre::VulkanQueue::getCopyEncoderV1Buffer | ( | const bool | bDownload | ) |

## ◆ getEncoderState()

EncoderState Ogre::VulkanQueue::getEncoderState | ( |  | ) | const
| inline

## ◆ getFamilyIdx()

uint32 Ogre::VulkanQueue::getFamilyIdx | ( |  | ) | const
| inline

References mFamilyIdx.

## ◆ getGraphicsEncoder()

void Ogre::VulkanQueue::getGraphicsEncoder | ( |  | ) |

## ◆ getVaoManager()

VulkanVaoManager * Ogre::VulkanQueue::getVaoManager | ( |  | ) |
| inline

## ◆ init()

void Ogre::VulkanQueue::init | ( | VkDevice | device,
|  | VkQueue | queue,
|  | VulkanRenderSystem * | renderSystem )

## ◆ isFenceFlushed()

bool Ogre::VulkanQueue::isFenceFlushed | ( | VkFence | fence | ) | const

If this function returns false, waiting on the fence would cause a deadlock since it will never signal.

You must call commitAndNextCommandBuffer before waiting.

## ◆ notifyTextureDestroyed()

void Ogre::VulkanQueue::notifyTextureDestroyed | ( | VulkanTextureGpu * | texture | ) |

## ◆ releaseFence()

void Ogre::VulkanQueue::releaseFence | ( | VkFence | fence | ) |

## ◆ setExternalQueue()

void Ogre::VulkanQueue::setExternalQueue | ( | VulkanDevice * | owner,
|  | QueueFamily | family,
|  | VkQueue | queue )

## ◆ setQueueData()

void Ogre::VulkanQueue::setQueueData | ( | VulkanDevice * | owner,
|  | QueueFamily | family,
|  | uint32 | familyIdx,
|  | uint32 | queueIdx )

## Member Data Documentation

## ◆ mCurrentCmdBuffer

VkCommandBuffer Ogre::VulkanQueue::mCurrentCmdBuffer

## ◆ mDevice

VkDevice Ogre::VulkanQueue::mDevice

## ◆ mFamily

QueueFamily Ogre::VulkanQueue::mFamily

## ◆ mFamilyIdx

uint32 Ogre::VulkanQueue::mFamilyIdx

Referenced by getFamilyIdx().

## ◆ mOwnerDevice

VulkanDevice* Ogre::VulkanQueue::mOwnerDevice

## ◆ mQueue

VkQueue Ogre::VulkanQueue::mQueue

## ◆ mQueueIdx

uint32 Ogre::VulkanQueue::mQueueIdx

## ◆ mWindowsPendingSwap

FastArray<VulkanWindowSwapChainBased *> Ogre::VulkanQueue::mWindowsPendingSwap

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

- OgreVulkanQueue.h