//! This file has been automatically generated by `objc2`'s `header-translator`. //! DO NOT EDIT use core::ffi::*; use core::ptr::NonNull; use objc2::__framework_prelude::*; use objc2_foundation::*; use crate::*; extern_class!( /// Groups together properties for creating a compiler context. /// /// See also [Apple's documentation](https://developer.apple.com/documentation/metal/mtl4compilerdescriptor?language=objc) #[unsafe(super(NSObject))] #[derive(Debug, PartialEq, Eq, Hash)] pub struct MTL4CompilerDescriptor; ); extern_conformance!( unsafe impl NSCopying for MTL4CompilerDescriptor {} ); unsafe impl CopyingHelper for MTL4CompilerDescriptor { type Result = Self; } extern_conformance!( unsafe impl NSObjectProtocol for MTL4CompilerDescriptor {} ); impl MTL4CompilerDescriptor { extern_methods!( /// Assigns an optional descriptor label to the compiler for debugging purposes. #[unsafe(method(label))] #[unsafe(method_family = none)] pub fn label(&self) -> Option>; /// Setter for [`label`][Self::label]. /// /// This is [copied][objc2_foundation::NSCopying::copy] when set. #[unsafe(method(setLabel:))] #[unsafe(method_family = none)] pub fn setLabel(&self, label: Option<&NSString>); #[cfg(feature = "MTL4PipelineDataSetSerializer")] /// Assigns a pipeline data set serializer into which this compiler stores data for all pipelines it creates. #[unsafe(method(pipelineDataSetSerializer))] #[unsafe(method_family = none)] pub fn pipelineDataSetSerializer( &self, ) -> Option>>; #[cfg(feature = "MTL4PipelineDataSetSerializer")] /// Setter for [`pipelineDataSetSerializer`][Self::pipelineDataSetSerializer]. #[unsafe(method(setPipelineDataSetSerializer:))] #[unsafe(method_family = none)] pub fn setPipelineDataSetSerializer( &self, pipeline_data_set_serializer: Option< &ProtocolObject, >, ); ); } /// Methods declared on superclass `NSObject`. impl MTL4CompilerDescriptor { extern_methods!( #[unsafe(method(init))] #[unsafe(method_family = init)] pub fn init(this: Allocated) -> Retained; #[unsafe(method(new))] #[unsafe(method_family = new)] pub fn new() -> Retained; ); } impl DefaultRetained for MTL4CompilerDescriptor { #[inline] fn default_retained() -> Retained { Self::new() } } extern_class!( /// [Apple's documentation](https://developer.apple.com/documentation/metal/mtl4compilertaskoptions?language=objc) #[unsafe(super(NSObject))] #[derive(Debug, PartialEq, Eq, Hash)] pub struct MTL4CompilerTaskOptions; ); extern_conformance!( unsafe impl NSCopying for MTL4CompilerTaskOptions {} ); unsafe impl CopyingHelper for MTL4CompilerTaskOptions { type Result = Self; } extern_conformance!( unsafe impl NSObjectProtocol for MTL4CompilerTaskOptions {} ); impl MTL4CompilerTaskOptions { extern_methods!( #[cfg(feature = "MTL4Archive")] /// Specifies a set of archive instances this compilation process uses for accelerating the build process. /// /// In case of a match in the archive, the compiler can skip one or more compilation tasks, speeding up the build process. #[unsafe(method(lookupArchives))] #[unsafe(method_family = none)] pub fn lookupArchives(&self) -> Option>>>; #[cfg(feature = "MTL4Archive")] /// Setter for [`lookupArchives`][Self::lookupArchives]. /// /// This is [copied][objc2_foundation::NSCopying::copy] when set. #[unsafe(method(setLookupArchives:))] #[unsafe(method_family = none)] pub fn setLookupArchives( &self, lookup_archives: Option<&NSArray>>, ); ); } /// Methods declared on superclass `NSObject`. impl MTL4CompilerTaskOptions { extern_methods!( #[unsafe(method(init))] #[unsafe(method_family = init)] pub fn init(this: Allocated) -> Retained; #[unsafe(method(new))] #[unsafe(method_family = new)] pub fn new() -> Retained; ); } impl DefaultRetained for MTL4CompilerTaskOptions { #[inline] fn default_retained() -> Retained { Self::new() } } /// Provides a signature for a callback block that Metal calls when the compiler finishes a build task for a binary function. /// /// See also [Apple's documentation](https://developer.apple.com/documentation/metal/mtl4newbinaryfunctioncompletionhandler?language=objc) #[cfg(all(feature = "MTL4BinaryFunction", feature = "block2"))] pub type MTL4NewBinaryFunctionCompletionHandler = *mut block2::DynBlock, *mut NSError)>; /// Provides a signature for a callback block that Metal calls when the compiler finishes a build task for a machine learning pipeline state. /// /// See also [Apple's documentation](https://developer.apple.com/documentation/metal/mtl4newmachinelearningpipelinestatecompletionhandler?language=objc) #[cfg(all( feature = "MTL4MachineLearningPipeline", feature = "MTLAllocation", feature = "block2" ))] pub type MTL4NewMachineLearningPipelineStateCompletionHandler = *mut block2::DynBlock< dyn Fn(*mut ProtocolObject, *mut NSError), >; extern_protocol!( /// A abstraction for a pipeline state and shader function compiler. /// /// See also [Apple's documentation](https://developer.apple.com/documentation/metal/mtl4compiler?language=objc) pub unsafe trait MTL4Compiler: NSObjectProtocol + Send + Sync { #[cfg(feature = "MTLDevice")] /// Returns the device that this compiler belongs to. #[unsafe(method(device))] #[unsafe(method_family = none)] fn device(&self) -> Retained>; /// Returns the optional label you specify at creation time. #[unsafe(method(label))] #[unsafe(method_family = none)] fn label(&self) -> Option>; #[cfg(feature = "MTL4PipelineDataSetSerializer")] /// Returns the pipeline data set serializer into which this compiler stores data for all pipelines it creates. #[unsafe(method(pipelineDataSetSerializer))] #[unsafe(method_family = none)] fn pipelineDataSetSerializer( &self, ) -> Option>>; #[cfg(all(feature = "MTL4LibraryDescriptor", feature = "MTLLibrary"))] /// Creates a new Metal library synchronously. /// /// - Parameters: /// - descriptor: A description of the library to create. /// - error: An optional parameter into which Metal stores information in case of an error. /// /// - Returns: a Metal library instance upon success, `nil` otherwise. #[unsafe(method(newLibraryWithDescriptor:error:_))] #[unsafe(method_family = new)] fn newLibraryWithDescriptor_error( &self, descriptor: &MTL4LibraryDescriptor, ) -> Result>, Retained>; #[cfg(all(feature = "MTLDynamicLibrary", feature = "MTLLibrary"))] /// Creates a new dynamic library from a library containing Metal IR code synchronously. /// /// - Parameters: /// - library: A library from which this compiler creates the new a dynamic library /// - error: An optional parameter into which Metal stores information in case of an error. /// /// - Returns: A new dynamic Metal library upon success, `nil` otherwise. #[unsafe(method(newDynamicLibrary:error:_))] #[unsafe(method_family = new)] fn newDynamicLibrary_error( &self, library: &ProtocolObject, ) -> Result>, Retained>; #[cfg(feature = "MTLDynamicLibrary")] /// Creates a new dynamic library from the contents of a file at an URL location synchronously. /// /// - Parameters: /// - url: An URL referencing a file whose contents this compiler uses to build a dynamic library. /// - error: An optional parameter into which Metal stores information in case of an error. /// /// - Returns: A new dynamic Metal library upon success, `nil` otherwise. #[unsafe(method(newDynamicLibraryWithURL:error:_))] #[unsafe(method_family = new)] fn newDynamicLibraryWithURL_error( &self, url: &NSURL, ) -> Result>, Retained>; #[cfg(all( feature = "MTL4ComputePipeline", feature = "MTL4PipelineState", feature = "MTLAllocation", feature = "MTLComputePipeline" ))] /// Creates a new compute pipeline state object synchronously. /// /// - Parameters: /// - descriptor: A compute pipeline state descriptor describing the pipeline this compiler creates. /// - compilerTaskOptions: A description of the compilation process itself, providing parameters that /// influence execution of the compilation process. /// - error: An optional parameter into which Metal stores information in case of an error. /// /// - Returns: A new compute pipeline state object upon success, `nil` otherwise. #[unsafe(method(newComputePipelineStateWithDescriptor:compilerTaskOptions:error:_))] #[unsafe(method_family = new)] fn newComputePipelineStateWithDescriptor_compilerTaskOptions_error( &self, descriptor: &MTL4ComputePipelineDescriptor, compiler_task_options: Option<&MTL4CompilerTaskOptions>, ) -> Result>, Retained>; #[cfg(all( feature = "MTL4ComputePipeline", feature = "MTL4LinkingDescriptor", feature = "MTL4PipelineState", feature = "MTLAllocation", feature = "MTLComputePipeline" ))] /// Creates a new compute pipeline state synchronously. /// /// - Parameters: /// - descriptor: A compute pipeline state descriptor describing the pipeline this compiler creates. /// - dynamicLinkingDescriptor: An optional parameter that provides additional configuration for linking the pipeline state object. /// - compilerTaskOptions: A description of the compilation process itself, providing parameters that /// influence execution of the compilation process. /// - error: An optional parameter into which Metal stores information in case of an error. /// /// - Returns: A new compute pipeline state object upon success, `nil` otherwise. #[unsafe(method(newComputePipelineStateWithDescriptor:dynamicLinkingDescriptor:compilerTaskOptions:error:_))] #[unsafe(method_family = new)] fn newComputePipelineStateWithDescriptor_dynamicLinkingDescriptor_compilerTaskOptions_error( &self, descriptor: &MTL4ComputePipelineDescriptor, dynamic_linking_descriptor: Option<&MTL4PipelineStageDynamicLinkingDescriptor>, compiler_task_options: Option<&MTL4CompilerTaskOptions>, ) -> Result>, Retained>; #[cfg(all( feature = "MTL4PipelineState", feature = "MTLAllocation", feature = "MTLRenderPipeline" ))] /// Creates a new render pipeline state synchronously. /// /// Use this method to build any render pipeline type, including render, tile, and mesh render pipeline states. /// The type of the descriptor you pass indicates the pipeline type this method builds. /// /// Passing in a compute pipeline descriptor to the `descriptor` parameter produces an error. /// /// - Parameters: /// - descriptor: A render, tile, or mesh pipeline state descriptor that describes the pipeline to create. /// - compilerTaskOptions: A description of the compilation process itself, providing parameters that /// influence execution of the compilation process. /// - error: An optional parameter into which Metal stores information in case of an error. /// /// - Returns: A new render pipeline state object upon success, `nil` otherwise. #[unsafe(method(newRenderPipelineStateWithDescriptor:compilerTaskOptions:error:_))] #[unsafe(method_family = new)] fn newRenderPipelineStateWithDescriptor_compilerTaskOptions_error( &self, descriptor: &MTL4PipelineDescriptor, compiler_task_options: Option<&MTL4CompilerTaskOptions>, ) -> Result>, Retained>; #[cfg(all( feature = "MTL4LinkingDescriptor", feature = "MTL4PipelineState", feature = "MTLAllocation", feature = "MTLRenderPipeline" ))] /// Creates a new render pipeline state synchronously. /// /// Use this method to build any render pipeline type, including render, tile, and mesh render pipeline states. /// The type of the descriptor you pass indicates the pipeline type this method builds. /// /// Passing in a compute pipeline descriptor to the `descriptor` parameter produces an error. /// /// - Parameters: /// - descriptor: A render, tile, or mesh pipeline state descriptor that describes the pipeline to create. /// - dynamicLinkingDescriptor: An optional parameter that provides additional configuration for linking the pipeline state object. /// - compilerTaskOptions: A description of the compilation process itself, providing parameters that /// influence execution of the compilation process. /// - error: An optional parameter into which Metal stores information in case of an error. /// /// - Returns: A new render pipeline state object upon success, `nil` otherwise. #[unsafe(method(newRenderPipelineStateWithDescriptor:dynamicLinkingDescriptor:compilerTaskOptions:error:_))] #[unsafe(method_family = new)] fn newRenderPipelineStateWithDescriptor_dynamicLinkingDescriptor_compilerTaskOptions_error( &self, descriptor: &MTL4PipelineDescriptor, dynamic_linking_descriptor: Option<&MTL4RenderPipelineDynamicLinkingDescriptor>, compiler_task_options: Option<&MTL4CompilerTaskOptions>, ) -> Result>, Retained>; #[cfg(all( feature = "MTL4PipelineState", feature = "MTLAllocation", feature = "MTLRenderPipeline" ))] /// Creates a new render pipeline state from another, previously unspecialized, pipeline state. /// /// Metal specializes the pipeline state with new state values the descriptor provides, observing the following rules: /// * The compiler only updates properties that were originally specified as *unspecialized*. It doesn't modify other /// already-specialized properties /// * The compiler sets to their default behavior any unspecialized properties that your passed-in descriptor doesn't specialize /// /// Additionally, there are some cases where the Metal can't specialize a pipeline: /// * If the original pipeline state object doesn't have any unspecialized properties /// * You can't re-specialize a previously specialized pipeline state object /// /// - Parameters: /// - descriptor: A render pipeline state descriptor or any type: default, tile, or mesh render pipeline descriptor. /// - pipeline: A render pipeline state containing unspecialized substate. /// - error: An optional parameter into which Metal stores information in case of an error. /// /// - Returns: a fully-specialized pipeline state object. #[unsafe(method(newRenderPipelineStateBySpecializationWithDescriptor:pipeline:error:_))] #[unsafe(method_family = new)] fn newRenderPipelineStateBySpecializationWithDescriptor_pipeline_error( &self, descriptor: &MTL4PipelineDescriptor, pipeline: &ProtocolObject, ) -> Result>, Retained>; #[cfg(all( feature = "MTL4BinaryFunction", feature = "MTL4BinaryFunctionDescriptor" ))] /// Creates a new binary visible or intersection function synchronously. /// /// - Parameters: /// - descriptor: A binary function descriptor to use for creating the binary function. /// - compilerTaskOptions: A descriptor of the compilation itself, providing parameters that /// influence execution of the compilation process. /// - error: An optional parameter into which Metal stores information in case of an error. /// /// - Returns: a new binary function upon success, `nil` otherwise. #[unsafe(method(newBinaryFunctionWithDescriptor:compilerTaskOptions:error:_))] #[unsafe(method_family = new)] fn newBinaryFunctionWithDescriptor_compilerTaskOptions_error( &self, descriptor: &MTL4BinaryFunctionDescriptor, compiler_task_options: Option<&MTL4CompilerTaskOptions>, ) -> Result>, Retained>; #[cfg(all( feature = "MTL4CompilerTask", feature = "MTL4LibraryDescriptor", feature = "MTLLibrary", feature = "block2" ))] /// Creates a new Metal library instance asynchronously. /// /// - Parameters: /// - descriptor: A description of the library to create. /// - completionHandler: A block Metal calls when it finishes the build task. /// /// - Returns: a compiler task representing the asynchronous compilation task. /// /// # Safety /// /// `completion_handler` must be a valid pointer. #[unsafe(method(newLibraryWithDescriptor:completionHandler:))] #[unsafe(method_family = new)] unsafe fn newLibraryWithDescriptor_completionHandler( &self, descriptor: &MTL4LibraryDescriptor, completion_handler: MTLNewLibraryCompletionHandler, ) -> Retained>; #[cfg(all( feature = "MTL4CompilerTask", feature = "MTLDynamicLibrary", feature = "MTLLibrary", feature = "block2" ))] /// Creates a new dynamic Metal library instance asynchronously. /// /// - Parameters: /// - library: A library from which this compiler creates the new a dynamic library /// - completionHandler: A block Metal calls when it finishes the build task. /// /// - Returns: A compiler task representing the asynchronous compilation task. /// /// # Safety /// /// `completion_handler` must be a valid pointer. #[unsafe(method(newDynamicLibrary:completionHandler:))] #[unsafe(method_family = new)] unsafe fn newDynamicLibrary_completionHandler( &self, library: &ProtocolObject, completion_handler: MTLNewDynamicLibraryCompletionHandler, ) -> Retained>; #[cfg(all( feature = "MTL4CompilerTask", feature = "MTLDynamicLibrary", feature = "MTLLibrary", feature = "block2" ))] /// Creates a new dynamic library from the contents of a file at an URL location synchronously. /// /// - Parameters: /// - url: An URL referencing a file whose contents this compiler uses to build a dynamic library. /// - completionHandler: A block Metal calls when it finishes the build task. /// /// - Returns: a compiler task representing the asynchronous compilation task. /// /// # Safety /// /// `completion_handler` must be a valid pointer. #[unsafe(method(newDynamicLibraryWithURL:completionHandler:))] #[unsafe(method_family = new)] unsafe fn newDynamicLibraryWithURL_completionHandler( &self, url: &NSURL, completion_handler: MTLNewDynamicLibraryCompletionHandler, ) -> Retained>; #[cfg(all( feature = "MTL4CompilerTask", feature = "MTL4ComputePipeline", feature = "MTL4PipelineState", feature = "MTLAllocation", feature = "MTLComputePipeline", feature = "MTLLibrary", feature = "block2" ))] /// Creates a new compute pipeline state asynchronously. /// /// - Parameters: /// - descriptor: A compute pipeline state descriptor, describing the compute pipeline to create. /// - compilerTaskOptions: A descriptor of the compilation itself, providing parameters that /// influence execution of the compilation process. /// - completionHandler: A block Metal calls when it finishes the build task. /// /// - Returns: a compiler task representing the asynchronous compilation task. /// /// # Safety /// /// `completion_handler` must be a valid pointer. #[unsafe(method(newComputePipelineStateWithDescriptor:compilerTaskOptions:completionHandler:))] #[unsafe(method_family = new)] unsafe fn newComputePipelineStateWithDescriptor_compilerTaskOptions_completionHandler( &self, descriptor: &MTL4ComputePipelineDescriptor, compiler_task_options: Option<&MTL4CompilerTaskOptions>, completion_handler: MTLNewComputePipelineStateCompletionHandler, ) -> Retained>; #[cfg(all( feature = "MTL4CompilerTask", feature = "MTL4ComputePipeline", feature = "MTL4LinkingDescriptor", feature = "MTL4PipelineState", feature = "MTLAllocation", feature = "MTLComputePipeline", feature = "MTLLibrary", feature = "block2" ))] /// Creates a new compute pipeline state asynchronously. /// /// - Parameters: /// - descriptor: A compute pipeline state descriptor, describing the compute pipeline to create. /// - dynamicLinkingDescriptor: An optional parameter that provides additional configuration for linking the pipeline state object. /// - compilerTaskOptions: A description of the compilation process itself, providing parameters that /// influence execution of the compilation process. /// - completionHandler: A block Metal calls when it finishes the build task. /// /// - Returns: a compiler task representing the asynchronous compilation task. /// /// # Safety /// /// `completion_handler` must be a valid pointer. #[unsafe(method(newComputePipelineStateWithDescriptor:dynamicLinkingDescriptor:compilerTaskOptions:completionHandler:))] #[unsafe(method_family = new)] unsafe fn newComputePipelineStateWithDescriptor_dynamicLinkingDescriptor_compilerTaskOptions_completionHandler( &self, descriptor: &MTL4ComputePipelineDescriptor, dynamic_linking_descriptor: Option<&MTL4PipelineStageDynamicLinkingDescriptor>, compiler_task_options: Option<&MTL4CompilerTaskOptions>, completion_handler: MTLNewComputePipelineStateCompletionHandler, ) -> Retained>; #[cfg(all( feature = "MTL4CompilerTask", feature = "MTL4PipelineState", feature = "MTLAllocation", feature = "MTLLibrary", feature = "MTLRenderPipeline", feature = "block2" ))] /// Creates a new render pipeline state asynchronously. /// /// Use this method to build any render pipeline type, including render, tile, and mesh render pipeline states. /// The type of the descriptor you pass indicates the pipeline type this method builds. /// /// Passing in a compute pipeline descriptor to the `descriptor` parameter produces an error. /// /// - Parameters: /// - descriptor: A render, tile, or mesh pipeline state descriptor that describes the pipeline to create. /// - compilerTaskOptions: A description of the compilation process itself, providing parameters that /// influence execution of the compilation process. /// - completionHandler: A block Metal calls when it finishes the build task. /// /// - Returns: a compiler task representing the asynchronous compilation task. /// /// # Safety /// /// `completion_handler` must be a valid pointer. #[unsafe(method(newRenderPipelineStateWithDescriptor:compilerTaskOptions:completionHandler:))] #[unsafe(method_family = new)] unsafe fn newRenderPipelineStateWithDescriptor_compilerTaskOptions_completionHandler( &self, descriptor: &MTL4PipelineDescriptor, compiler_task_options: Option<&MTL4CompilerTaskOptions>, completion_handler: MTLNewRenderPipelineStateCompletionHandler, ) -> Retained>; #[cfg(all( feature = "MTL4CompilerTask", feature = "MTL4LinkingDescriptor", feature = "MTL4PipelineState", feature = "MTLAllocation", feature = "MTLLibrary", feature = "MTLRenderPipeline", feature = "block2" ))] /// Creates a new render pipeline state asynchronously. /// /// Use this method to build any render pipeline type, including render, tile, and mesh render pipeline states. /// The type of the descriptor you pass indicates the pipeline type this method builds. /// /// Passing in a compute pipeline descriptor to the `descriptor` parameter produces an error. /// /// - Parameters: /// - descriptor: A render, tile, or mesh pipeline state descriptor that describes the pipeline to create. /// - dynamicLinkingDescriptor: An optional parameter that provides additional configuration for linking the pipeline state object. /// - compilerTaskOptions: A description of the compilation process itself, providing parameters that /// influence execution of the compilation process. /// - completionHandler: A block Metal calls when it finishes the build task. /// /// - Returns: a compiler task representing the asynchronous compilation task. /// /// # Safety /// /// `completion_handler` must be a valid pointer. #[unsafe(method(newRenderPipelineStateWithDescriptor:dynamicLinkingDescriptor:compilerTaskOptions:completionHandler:))] #[unsafe(method_family = new)] unsafe fn newRenderPipelineStateWithDescriptor_dynamicLinkingDescriptor_compilerTaskOptions_completionHandler( &self, descriptor: &MTL4PipelineDescriptor, dynamic_linking_descriptor: Option<&MTL4RenderPipelineDynamicLinkingDescriptor>, compiler_task_options: Option<&MTL4CompilerTaskOptions>, completion_handler: MTLNewRenderPipelineStateCompletionHandler, ) -> Retained>; #[cfg(all( feature = "MTL4CompilerTask", feature = "MTL4PipelineState", feature = "MTLAllocation", feature = "MTLLibrary", feature = "MTLRenderPipeline", feature = "block2" ))] /// Creates a new render pipeline state from another, previously unspecialized, pipeline state /// /// Metal specializes the pipeline state with new state values the descriptor provides, observing the following rules: /// * The compiler only updates properties that were originally specified as *unspecialized*. It doesn't modify other /// already-specialized properties /// * The compiler sets to their default behavior any unspecialized properties that your passed-in descriptor doesn't specialize /// /// Additionally, there are some cases where the Metal can't specialize a pipeline: /// * If the original pipeline state object doesn't have any unspecialized properties /// * You can't re-specialize a previosuly specialized pipeline state object /// /// - Parameters: /// - descriptor: A render pipeline state descriptor or any type: default, tile, or mesh render pipeline descriptor. /// - pipeline: A render pipeline state containing unspecialized substate. /// - completionHandler: A block Metal calls when it finishes the build task. /// /// - Returns: a compiler task representing the asynchronous compilation task. /// /// # Safety /// /// `completion_handler` must be a valid pointer. #[unsafe(method(newRenderPipelineStateBySpecializationWithDescriptor:pipeline:completionHandler:))] #[unsafe(method_family = new)] unsafe fn newRenderPipelineStateBySpecializationWithDescriptor_pipeline_completionHandler( &self, descriptor: &MTL4PipelineDescriptor, pipeline: &ProtocolObject, completion_handler: MTLNewRenderPipelineStateCompletionHandler, ) -> Retained>; #[cfg(all( feature = "MTL4BinaryFunction", feature = "MTL4BinaryFunctionDescriptor", feature = "MTL4CompilerTask", feature = "block2" ))] /// Creates a new binary visible/intersection function asynchronously. /// - Parameters: /// - descriptor: a binary function descriptor used to create the binary function. /// - compilerTaskOptions: a descriptor of the compilation itself, providing parameters to /// influence execution of this compilation, but not the resulting object. /// - completionHandler: a callback used on task completion. /// - Returns: a compiler task indicating the asynchronous compilation job. /// /// # Safety /// /// `completion_handler` must be a valid pointer. #[unsafe(method(newBinaryFunctionWithDescriptor:compilerTaskOptions:completionHandler:))] #[unsafe(method_family = new)] unsafe fn newBinaryFunctionWithDescriptor_compilerTaskOptions_completionHandler( &self, descriptor: &MTL4BinaryFunctionDescriptor, compiler_task_options: Option<&MTL4CompilerTaskOptions>, completion_handler: MTL4NewBinaryFunctionCompletionHandler, ) -> Retained>; #[cfg(all( feature = "MTL4MachineLearningPipeline", feature = "MTL4PipelineState", feature = "MTLAllocation" ))] /// Creates a new ML pipeline state with descriptor. /// /// - Parameters: /// - descriptor: A machine learning pipeline state descriptor to use for creating the new pipeline state. /// - error: An optional parameter into which Metal stores information in case of an error. /// /// - Returns: A machine learning pipeline state if operation is successful, otherwise `nil`. #[unsafe(method(newMachineLearningPipelineStateWithDescriptor:error:_))] #[unsafe(method_family = new)] fn newMachineLearningPipelineStateWithDescriptor_error( &self, descriptor: &MTL4MachineLearningPipelineDescriptor, ) -> Result>, Retained>; #[cfg(all( feature = "MTL4CompilerTask", feature = "MTL4MachineLearningPipeline", feature = "MTL4PipelineState", feature = "MTLAllocation", feature = "block2" ))] /// Creates a new machine learning pipeline state asynchronously. /// /// - Parameters: /// - descriptor: A machine learning pipeline state descriptor to use for creating the new pipeline state. /// - completionHandler: A block Metal calls when it finishes the build task. /// /// - Returns: a compiler task representing the asynchronous compilation task. /// /// # Safety /// /// `completion_handler` must be a valid pointer. #[unsafe(method(newMachineLearningPipelineStateWithDescriptor:completionHandler:))] #[unsafe(method_family = new)] unsafe fn newMachineLearningPipelineStateWithDescriptor_completionHandler( &self, descriptor: &MTL4MachineLearningPipelineDescriptor, completion_handler: MTL4NewMachineLearningPipelineStateCompletionHandler, ) -> Retained>; } );