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(
IRect32 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;
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;
std::optional< PipelineDescriptor > desc_