Interface for a command queue.
More...
#include <CommandQueue.h>
|
| virtual bool | isBound () const noexcept=0 |
| | Checks whether the queue is currently bound to the parent device.
|
| |
| virtual QueuePriority | priority () const noexcept=0 |
| | Gets the priority of the queue.
|
| |
| virtual QueueType | type () const noexcept=0 |
| | Gets the type of the queue.
|
| |
| virtual void | bind () const noexcept=0 |
| | Binds the queue to the parent device.
|
| |
| virtual void | release () const noexcept=0 |
| | Releases the queue from the parent device.
|
| |
| std::shared_ptr< ICommandBuffer > | createCommandBuffer (bool begin_recording=false, bool secondary=false) const noexcept |
| | Creates a command buffer that can be used to allocate commands on the queue.
|
| |
| std::size_t | submit (std::shared_ptr< ICommandBuffer > command_buffer) const noexcept |
| | Submits a single command buffer to the queue and inserts a fence to wait for it.
|
| |
| std::size_t | submit (std::shared_ptr< const ICommandBuffer > command_buffer) const noexcept |
| | Submits a single command buffer to the queue and inserts a fence to wait for it.
|
| |
| std::size_t | submit (const std::vector< std::shared_ptr< const ICommandBuffer > > &command_buffers) const noexcept |
| | Submits multiple command buffers to the queue and inserts a fence to wait for them.
|
| |
| std::size_t | submit (const std::vector< std::shared_ptr< ICommandBuffer > > &command_buffers) const noexcept |
| | Submits multiple command buffers to the queue and inserts a fence to wait for them.
|
| |
| virtual void | waitFor (std::size_t fence) const noexcept=0 |
| | Waits for fence value fence to complete on the command queue.
|
| |
| virtual std::size_t | currentFence () const noexcept=0 |
| | Gets the latest fence inserted into the queue.
|
| |
Interface for a command queue.
◆ bind()
| virtual void spark::render::ICommandQueue::bind |
( |
| ) |
const |
|
pure virtualnoexcept |
◆ createCommandBuffer()
| std::shared_ptr< ICommandBuffer > spark::render::ICommandQueue::createCommandBuffer |
( |
bool | begin_recording = false, |
|
|
bool | secondary = false ) const |
|
inlinenodiscardnoexcept |
Creates a command buffer that can be used to allocate commands on the queue.
- Parameters
-
| begin_recording | true if the command buffer should be in recording state after creation, false otherwise. |
| secondary | true if the command buffer should be a secondary command buffer, false otherwise. |
- Returns
- A std::shared_ptr to the created ICommandBuffer.
Specifying secondary allows to create secondary command buffers (aka. bundles). Those are intended to be used as efficient pre-recorded command buffers that are re-used multiple times. Using such a command buffer allows drivers to pre-apply optimizations, which causes a one-time cost during setup, but reduces cost when re- applying the command buffer multiple times. Ideally they are used as small chunks of re-occurring workloads.
A secondary command buffer must not be submitted to a queue, but rather to a primary command buffer by calling ICommandBuffer::execute().
◆ currentFence()
| virtual std::size_t spark::render::ICommandQueue::currentFence |
( |
| ) |
const |
|
nodiscardpure virtualnoexcept |
◆ isBound()
| virtual bool spark::render::ICommandQueue::isBound |
( |
| ) |
const |
|
nodiscardpure virtualnoexcept |
Checks whether the queue is currently bound to the parent device.
- Returns
true if the queue is bound, false otherwise.
Implemented in spark::render::vk::VulkanQueue.
◆ priority()
| virtual QueuePriority spark::render::ICommandQueue::priority |
( |
| ) |
const |
|
nodiscardpure virtualnoexcept |
◆ release()
| virtual void spark::render::ICommandQueue::release |
( |
| ) |
const |
|
pure virtualnoexcept |
◆ submit() [1/4]
| std::size_t spark::render::ICommandQueue::submit |
( |
const std::vector< std::shared_ptr< const ICommandBuffer > > & | command_buffers | ) |
const |
|
inlinenodiscardnoexcept |
Submits multiple command buffers to the queue and inserts a fence to wait for them.
- Parameters
-
| command_buffers | A std::vector of command buffers to submit to the queue. |
- Returns
- The fence that was inserted to wait for the command buffers.
- Note
- If any of the command buffers is currently recording, it will implicitly end the recording.
◆ submit() [2/4]
| std::size_t spark::render::ICommandQueue::submit |
( |
const std::vector< std::shared_ptr< ICommandBuffer > > & | command_buffers | ) |
const |
|
inlinenodiscardnoexcept |
Submits multiple command buffers to the queue and inserts a fence to wait for them.
- Parameters
-
| command_buffers | A std::vector of command buffers to submit to the queue. |
- Returns
- The fence that was inserted to wait for the command buffers.
- Note
- If any of the command buffers is currently recording, it will implicitly end the recording.
◆ submit() [3/4]
| std::size_t spark::render::ICommandQueue::submit |
( |
std::shared_ptr< const ICommandBuffer > | command_buffer | ) |
const |
|
inlinenodiscardnoexcept |
Submits a single command buffer to the queue and inserts a fence to wait for it.
- Parameters
-
| command_buffer | The command buffer to submit to the queue. |
- Returns
- The fence that was inserted to wait for the command buffer.
- Note
- Submitting a recording command buffer will implicitly end the recording.
◆ submit() [4/4]
| std::size_t spark::render::ICommandQueue::submit |
( |
std::shared_ptr< ICommandBuffer > | command_buffer | ) |
const |
|
inlinenodiscardnoexcept |
Submits a single command buffer to the queue and inserts a fence to wait for it.
- Parameters
-
| command_buffer | The command buffer to submit to the queue. |
- Returns
- The fence that was inserted to wait for the command buffer.
- Note
- Submitting a recording command buffer will implicitly end the recording.
◆ type()
| virtual QueueType spark::render::ICommandQueue::type |
( |
| ) |
const |
|
nodiscardpure virtualnoexcept |
◆ waitFor()
| virtual void spark::render::ICommandQueue::waitFor |
( |
std::size_t | fence | ) |
const |
|
pure virtualnoexcept |
Waits for fence value fence to complete on the command queue.
- Parameters
-
| fence | The fence value to wait for. |
Each time one or more command buffers are submitted to the queue, a fence is inserted and its value will be returned. By calling this method, it is possible to wait for this fence. A fence value is guaranteed to be larger than earlier fences, so the method returns, if the latest signaled fence value is larger or equal to the value specified in fence.
Implemented in spark::render::vk::VulkanQueue.