#include <OgreVulkanQueue.h>
◆ QueueFamily
Enumerator |
---|
Graphics | |
Compute | |
Transfer | |
NumQueueFamilies | |
◆ EncoderState
Enumerator |
---|
EncoderGraphicsOpen | |
EncoderComputeOpen | |
EncoderCopyOpen | |
EncoderClosed | |
◆ VulkanQueue()
Ogre::VulkanQueue::VulkanQueue |
( |
| ) |
|
◆ ~VulkanQueue()
Ogre::VulkanQueue::~VulkanQueue |
( |
| ) |
|
◆ getFamilyIdx()
uint32 Ogre::VulkanQueue::getFamilyIdx |
( |
| ) |
const |
|
inline |
◆ setQueueData()
◆ init()
void Ogre::VulkanQueue::init |
( |
VkDevice |
device, |
|
|
VkQueue |
queue, |
|
|
VulkanRenderSystem * |
renderSystem |
|
) |
| |
◆ destroy()
void Ogre::VulkanQueue::destroy |
( |
void |
| ) |
|
◆ queueForDeletion() [1/2]
void Ogre::VulkanQueue::queueForDeletion |
( |
VkBuffer |
buffer, |
|
|
VmaAllocation |
allocation |
|
) |
| |
◆ queueForDeletion() [2/2]
void Ogre::VulkanQueue::queueForDeletion |
( |
const std::shared_ptr< VulkanDescriptorPool > & |
descriptorPool | ) |
|
◆ getEncoderState()
EncoderState Ogre::VulkanQueue::getEncoderState |
( |
void |
| ) |
const |
|
inline |
◆ getGraphicsEncoder()
void Ogre::VulkanQueue::getGraphicsEncoder |
( |
void |
| ) |
|
◆ getComputeEncoder()
void Ogre::VulkanQueue::getComputeEncoder |
( |
void |
| ) |
|
◆ getCopyEncoder()
void Ogre::VulkanQueue::getCopyEncoder |
( |
const BufferPacked * |
buffer, |
|
|
VulkanTextureGpu * |
texture, |
|
|
const bool |
bDownload |
|
) |
| |
Call this function when you need to start copy/transfer operations.
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 );
◆ getCopyEncoderV1Buffer()
void Ogre::VulkanQueue::getCopyEncoderV1Buffer |
( |
const bool |
bDownload | ) |
|
◆ endCopyEncoder()
void Ogre::VulkanQueue::endCopyEncoder |
( |
void |
| ) |
|
◆ endRenderEncoder()
void Ogre::VulkanQueue::endRenderEncoder |
( |
const bool |
endRenderPassDesc = true | ) |
|
◆ endComputeEncoder()
void Ogre::VulkanQueue::endComputeEncoder |
( |
void |
| ) |
|
◆ endAllEncoders()
void Ogre::VulkanQueue::endAllEncoders |
( |
bool |
endRenderPassDesc = true | ) |
|
◆ notifyTextureDestroyed()
◆ 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.
◆ _waitOnFrame()
void Ogre::VulkanQueue::_waitOnFrame |
( |
uint8 |
frameIdx | ) |
|
◆ _isFrameFinished()
bool Ogre::VulkanQueue::_isFrameFinished |
( |
uint8 |
frameIdx | ) |
|
◆ commitAndNextCommandBuffer()
◆ mDevice
VkDevice Ogre::VulkanQueue::mDevice |
◆ mFamily
◆ mFamilyIdx
uint32 Ogre::VulkanQueue::mFamilyIdx |
◆ mQueueIdx
uint32 Ogre::VulkanQueue::mQueueIdx |
◆ mQueue
VkQueue Ogre::VulkanQueue::mQueue |
◆ mCurrentCmdBuffer
VkCommandBuffer Ogre::VulkanQueue::mCurrentCmdBuffer |
◆ mOwnerDevice
◆ mNumFramesInFlight
uint8 Ogre::VulkanQueue::mNumFramesInFlight |
◆ mCurrentFrameIdx
uint8 Ogre::VulkanQueue::mCurrentFrameIdx |
◆ mWindowsPendingSwap
The documentation for this class was generated from the following file: