A collection of encoded commands to be submitted to the GPU for execution. A command buffer is obtained from a graphics Context
.
More...
#include <command_buffer.h>
Public Types | |
enum class | Status { kPending , kError , kCompleted } |
using | CompletionCallback = std::function< void(Status)> |
Public Member Functions | |
virtual | ~CommandBuffer () |
virtual bool | IsValid () const =0 |
virtual void | SetLabel (std::string_view label) const =0 |
void | WaitUntilCompleted () |
Block the current thread until the GPU has completed execution of the commands. More... | |
void | WaitUntilScheduled () |
Block the current thread until the GPU has completed scheduling execution of the commands. More... | |
std::shared_ptr< RenderPass > | CreateRenderPass (const RenderTarget &render_target) |
Create a render pass to record render commands into. More... | |
std::shared_ptr< BlitPass > | CreateBlitPass () |
Create a blit pass to record blit commands into. More... | |
std::shared_ptr< ComputePass > | CreateComputePass () |
Create a compute pass to record compute commands into. More... | |
Protected Member Functions | |
CommandBuffer (std::weak_ptr< const Context > context) | |
virtual std::shared_ptr< RenderPass > | OnCreateRenderPass (RenderTarget render_target)=0 |
virtual std::shared_ptr< BlitPass > | OnCreateBlitPass ()=0 |
virtual bool | OnSubmitCommands (bool block_on_schedule, CompletionCallback callback)=0 |
Submit the command buffer to the GPU for execution. More... | |
virtual void | OnWaitUntilCompleted ()=0 |
virtual void | OnWaitUntilScheduled ()=0 |
virtual std::shared_ptr< ComputePass > | OnCreateComputePass ()=0 |
Protected Attributes | |
std::weak_ptr< const Context > | context_ |
Friends | |
class | testing::CommandBufferMock |
class | CommandQueue |
A collection of encoded commands to be submitted to the GPU for execution. A command buffer is obtained from a graphics Context
.
To submit commands to the GPU, acquire a RenderPass
from the command buffer and record Command
s into that pass. A RenderPass
describes the configuration of the various attachments when the command is submitted.
A command buffer is only meant to be used on a single thread. If a frame workload needs to be encoded from multiple threads, set up and record into multiple command buffers. The order of submission of commands encoded in multiple command buffers can be controlled via either the order in which the command buffers were created, or, using the ReserveSpotInQueue
command which allows for encoding commands for submission in an order that is different from the encoding order.
Definition at line 45 of file command_buffer.h.
using impeller::CommandBuffer::CompletionCallback = std::function<void(Status)> |
Definition at line 55 of file command_buffer.h.
|
strong |
Enumerator | |
---|---|
kPending | |
kError | |
kCompleted |
Definition at line 49 of file command_buffer.h.
|
virtualdefault |
|
explicitprotected |
Definition at line 13 of file command_buffer.cc.
std::shared_ptr< BlitPass > impeller::CommandBuffer::CreateBlitPass | ( | ) |
Create a blit pass to record blit commands into.
Definition at line 52 of file command_buffer.cc.
References OnCreateBlitPass().
std::shared_ptr< ComputePass > impeller::CommandBuffer::CreateComputePass | ( | ) |
Create a compute pass to record compute commands into.
Definition at line 61 of file command_buffer.cc.
References IsValid(), and OnCreateComputePass().
std::shared_ptr< RenderPass > impeller::CommandBuffer::CreateRenderPass | ( | const RenderTarget & | render_target | ) |
Create a render pass to record render commands into.
[in] | render_target | The description of the render target this pass will target. |
Definition at line 42 of file command_buffer.cc.
References OnCreateRenderPass().
|
pure virtual |
Referenced by CreateComputePass().
|
protectedpure virtual |
Referenced by CreateBlitPass().
|
protectedpure virtual |
Referenced by CreateComputePass().
|
protectedpure virtual |
Referenced by CreateRenderPass().
|
protectedpure virtual |
Submit the command buffer to the GPU for execution.
See also: [SubmitCommands].
|
protectedpure virtual |
Referenced by WaitUntilCompleted().
|
protectedpure virtual |
Referenced by WaitUntilScheduled().
|
pure virtual |
void impeller::CommandBuffer::WaitUntilCompleted | ( | ) |
Block the current thread until the GPU has completed execution of the commands.
Definition at line 34 of file command_buffer.cc.
References OnWaitUntilCompleted().
void impeller::CommandBuffer::WaitUntilScheduled | ( | ) |
Block the current thread until the GPU has completed scheduling execution of the commands.
Definition at line 38 of file command_buffer.cc.
References OnWaitUntilScheduled().
|
friend |
Definition at line 123 of file command_buffer.h.
|
friend |
Definition at line 46 of file command_buffer.h.
|
protected |
Definition at line 101 of file command_buffer.h.