5 #ifndef FLUTTER_IMPELLER_RENDERER_BACKEND_METAL_RENDER_PASS_MTL_H_
6 #define FLUTTER_IMPELLER_RENDERER_BACKEND_METAL_RENDER_PASS_MTL_H_
8 #include <Metal/Metal.h>
24 id<MTLCommandBuffer> buffer_ = nil;
25 id<MTLRenderCommandEncoder> encoder_ = nil;
26 MTLRenderPassDescriptor*
desc_ = nil;
28 bool is_metal_trace_active_ =
false;
29 bool is_valid_ =
false;
33 mutable bool did_finish_encoding_ =
false;
38 size_t instance_count_ = 1u;
39 size_t base_vertex_ = 0u;
40 size_t vertex_count_ = 0u;
41 bool has_valid_pipeline_ =
false;
42 bool has_label_ =
false;
45 MTLIndexType index_type_ = {};
47 RenderPassMTL(std::shared_ptr<const Context> context,
48 const RenderTarget& target,
49 id<MTLCommandBuffer> buffer);
52 bool IsValid()
const override;
55 void OnSetLabel(std::string_view label)
override;
58 bool OnEncodeCommands(
const Context& context)
const override;
64 void SetCommandLabel(std::string_view label)
override;
67 void SetStencilReference(uint32_t
value)
override;
70 void SetBaseVertex(uint64_t
value)
override;
73 void SetViewport(Viewport viewport)
override;
76 void SetScissor(
IRect scissor)
override;
79 void SetElementCount(
size_t count)
override;
82 void SetInstanceCount(
size_t count)
override;
85 bool SetVertexBuffer(BufferView vertex_buffers[],
86 size_t vertex_buffer_count)
override;
89 bool SetIndexBuffer(BufferView index_buffer,
IndexType index_type)
override;
92 fml::Status Draw()
override;
97 const ShaderUniformSlot& slot,
98 const ShaderMetadata* metadata,
99 BufferView view)
override;
104 const SampledImageSlot& slot,
105 const ShaderMetadata* metadata,
106 std::shared_ptr<const Texture> texture,
107 raw_ptr<const Sampler> sampler)
override;
112 const ShaderUniformSlot& slot,
113 std::unique_ptr<ShaderMetadata> metadata,
114 BufferView view)
override;
119 const SampledImageSlot& slot,
120 std::unique_ptr<ShaderMetadata> metadata,
121 std::shared_ptr<const Texture> texture,
122 raw_ptr<const Sampler> sampler)
override;
124 RenderPassMTL(
const RenderPassMTL&) =
delete;
126 RenderPassMTL& operator=(
const RenderPassMTL&) =
delete;
Render passes encode render commands directed as one specific render target into an underlying comman...
~RenderPassMTL() override
std::optional< PipelineDescriptor > desc_
PrimitiveType
Decides how backend draws pixels based on input vertices.
raw_ptr< Pipeline< PipelineDescriptor > > PipelineRef
A raw ptr to a pipeline object.
Ensures that bindings on the pass are not redundantly set or updated. Avoids making the driver do add...