Use a trait for the encoder provider (so that encoder can ultimately be reused). (#2352)

This commit is contained in:
Laurent Mazare
2024-07-24 08:27:30 +01:00
committed by GitHub
parent 6056fd5c90
commit a925ae6bc6
2 changed files with 143 additions and 120 deletions

View File

@ -160,3 +160,26 @@ macro_rules! set_params {
)*
);
}
pub trait EncoderProvider {
fn encoder(&self) -> &ComputeCommandEncoderRef;
fn maybe_end_encoding(&self, enc: &ComputeCommandEncoderRef);
}
impl EncoderProvider for &metal::CommandBuffer {
fn encoder(&self) -> &ComputeCommandEncoderRef {
self.new_compute_command_encoder()
}
fn maybe_end_encoding(&self, enc: &ComputeCommandEncoderRef) {
enc.end_encoding()
}
}
impl EncoderProvider for &metal::CommandBufferRef {
fn encoder(&self) -> &ComputeCommandEncoderRef {
self.new_compute_command_encoder()
}
fn maybe_end_encoding(&self, enc: &ComputeCommandEncoderRef) {
enc.end_encoding()
}
}