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 void ReserveCommands(
size_t command_count)
override {}
55 bool IsValid()
const override;
58 void OnSetLabel(std::string label)
override;
61 bool OnEncodeCommands(
const Context& context)
const override;
65 const std::shared_ptr<Pipeline<PipelineDescriptor>>& pipeline)
override;
68 void SetCommandLabel(std::string_view label)
override;
71 void SetStencilReference(uint32_t value)
override;
74 void SetBaseVertex(uint64_t value)
override;
77 void SetViewport(Viewport viewport)
override;
80 void SetScissor(
IRect scissor)
override;
83 void SetInstanceCount(
size_t count)
override;
86 bool SetVertexBuffer(VertexBuffer buffer)
override;
89 fml::Status Draw()
override;
94 const ShaderUniformSlot& slot,
95 const ShaderMetadata& metadata,
96 BufferView view)
override;
101 const ShaderUniformSlot& slot,
102 const std::shared_ptr<const ShaderMetadata>& metadata,
103 BufferView view)
override;
108 const SampledImageSlot& slot,
109 const ShaderMetadata& metadata,
110 std::shared_ptr<const Texture> texture,
111 const std::unique_ptr<const Sampler>& sampler)
override;
113 RenderPassMTL(
const RenderPassMTL&) =
delete;
115 RenderPassMTL& operator=(
const RenderPassMTL&) =
delete;
120 #endif // FLUTTER_IMPELLER_RENDERER_BACKEND_METAL_RENDER_PASS_MTL_H_