An object used to specify work to the GPU along with references to resources the GPU will used when doing said work. More...
#include <command.h>
Public Member Functions | |
bool | BindVertices (VertexBuffer buffer) |
Specify the vertex and index buffer to use for this command. More... | |
bool | BindResource (ShaderStage stage, DescriptorType type, const ShaderUniformSlot &slot, const ShaderMetadata &metadata, BufferView view) override |
bool | BindResource (ShaderStage stage, DescriptorType type, const ShaderUniformSlot &slot, const std::shared_ptr< const ShaderMetadata > &metadata, BufferView view) |
bool | BindResource (ShaderStage stage, DescriptorType type, const SampledImageSlot &slot, const ShaderMetadata &metadata, std::shared_ptr< const Texture > texture, const std::unique_ptr< const Sampler > &sampler) override |
bool | IsValid () const |
![]() | |
virtual | ~ResourceBinder ()=default |
Public Attributes | |
std::shared_ptr< Pipeline< PipelineDescriptor > > | pipeline |
Bindings | vertex_bindings |
Bindings | fragment_bindings |
uint32_t | stencil_reference = 0u |
uint64_t | base_vertex = 0u |
std::optional< Viewport > | viewport |
std::optional< IRect > | scissor |
size_t | instance_count = 1u |
VertexBuffer | vertex_buffer |
The bound per-vertex data and optional index buffer. More... | |
An object used to specify work to the GPU along with references to resources the GPU will used when doing said work.
To construct a valid command, follow these steps:
BindVertices
Command can be created frequently and on demand. The resources referenced in commands views into buffers managed by other allocators and resource managers.
|
overridevirtual |
Implements impeller::ResourceBinder.
Definition at line 70 of file command.cc.
References fragment_bindings, impeller::kCompute, impeller::kFragment, impeller::kUnknown, impeller::kVertex, impeller::Bindings::sampled_images, impeller::TextureAndSampler::slot, VALIDATION_LOG, and vertex_bindings.
|
overridevirtual |
Implements impeller::ResourceBinder.
Definition at line 25 of file command.cc.
Referenced by impeller::RenderPass::BindResource().
bool impeller::Command::BindResource | ( | ShaderStage | stage, |
DescriptorType | type, | ||
const ShaderUniformSlot & | slot, | ||
const std::shared_ptr< const ShaderMetadata > & | metadata, | ||
BufferView | view | ||
) |
Definition at line 33 of file command.cc.
bool impeller::Command::BindVertices | ( | VertexBuffer | buffer | ) |
Specify the vertex and index buffer to use for this command.
[in] | buffer | The vertex and index buffer definition. If possible, this value should be moved and not copied. |
Definition at line 15 of file command.cc.
References impeller::VertexBuffer::index_type, impeller::kUnknown, VALIDATION_LOG, and vertex_buffer.
Referenced by impeller::RenderPass::SetVertexBuffer().
|
inline |
uint64_t impeller::Command::base_vertex = 0u |
The offset used when indexing into the vertex buffer.
Definition at line 126 of file command.h.
Referenced by impeller::RenderPass::SetBaseVertex().
Bindings impeller::Command::fragment_bindings |
The buffer, texture, and sampler bindings used by the fragment pipeline stage.
Definition at line 106 of file command.h.
Referenced by BindResource().
size_t impeller::Command::instance_count = 1u |
The number of instances of the given set of vertices to render. Not all backends support rendering more than one instance at a time.
Definition at line 147 of file command.h.
Referenced by impeller::RenderPass::SetInstanceCount().
std::shared_ptr<Pipeline<PipelineDescriptor> > impeller::Command::pipeline |
The pipeline to use for this command.
Definition at line 96 of file command.h.
Referenced by IsValid(), and impeller::RenderPass::SetPipeline().
std::optional<IRect> impeller::Command::scissor |
The scissor rect to use for clipping writes to the render target. The scissor rect must lie entirely within the render target. If unset, no scissor is applied.
Definition at line 139 of file command.h.
Referenced by impeller::RenderPass::SetScissor().
uint32_t impeller::Command::stencil_reference = 0u |
The reference value to use in stenciling operations. Stencil configuration is part of pipeline setup and can be read from the pipelines descriptor.
Pipeline
PipelineDescriptor
Definition at line 122 of file command.h.
Referenced by impeller::RenderPass::SetStencilReference().
Bindings impeller::Command::vertex_bindings |
The buffer, texture, and sampler bindings used by the vertex pipeline stage.
Definition at line 101 of file command.h.
Referenced by BindResource().
VertexBuffer impeller::Command::vertex_buffer |
The bound per-vertex data and optional index buffer.
Definition at line 151 of file command.h.
Referenced by BindVertices().
std::optional<Viewport> impeller::Command::viewport |
The viewport coordinates that the rasterizer linearly maps normalized device coordinates to. If unset, the viewport is the size of the render target with a zero origin, znear=0, and zfar=1.
Definition at line 133 of file command.h.
Referenced by impeller::RenderPass::SetViewport().