Source code
Revision control
Copy as Markdown
Other Tools
//! 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 to drive a static linking process.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/metal/mtl4staticlinkingdescriptor?language=objc)
#[unsafe(super(NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct MTL4StaticLinkingDescriptor;
);
extern_conformance!(
unsafe impl NSCopying for MTL4StaticLinkingDescriptor {}
);
unsafe impl CopyingHelper for MTL4StaticLinkingDescriptor {
type Result = Self;
}
extern_conformance!(
unsafe impl NSObjectProtocol for MTL4StaticLinkingDescriptor {}
);
impl MTL4StaticLinkingDescriptor {
extern_methods!(
#[cfg(feature = "MTL4FunctionDescriptor")]
/// Provides an array of functions to link at the Metal IR level.
#[unsafe(method(functionDescriptors))]
#[unsafe(method_family = none)]
pub fn functionDescriptors(&self) -> Option<Retained<NSArray<MTL4FunctionDescriptor>>>;
#[cfg(feature = "MTL4FunctionDescriptor")]
/// Setter for [`functionDescriptors`][Self::functionDescriptors].
///
/// This is [copied][objc2_foundation::NSCopying::copy] when set.
#[unsafe(method(setFunctionDescriptors:))]
#[unsafe(method_family = none)]
pub fn setFunctionDescriptors(
&self,
function_descriptors: Option<&NSArray<MTL4FunctionDescriptor>>,
);
#[cfg(feature = "MTL4FunctionDescriptor")]
/// Provides an array of private functions to link at the Metal IR level.
///
/// You specify private functions to link separately from ``functionDescriptors`` because pipelines don't export private functions as ``MTLFunctionHandle`` instances.
/// - Note: You can link private functions even when your ``MTLDevice`` doesn't support function pointers.
#[unsafe(method(privateFunctionDescriptors))]
#[unsafe(method_family = none)]
pub fn privateFunctionDescriptors(
&self,
) -> Option<Retained<NSArray<MTL4FunctionDescriptor>>>;
#[cfg(feature = "MTL4FunctionDescriptor")]
/// Setter for [`privateFunctionDescriptors`][Self::privateFunctionDescriptors].
///
/// This is [copied][objc2_foundation::NSCopying::copy] when set.
#[unsafe(method(setPrivateFunctionDescriptors:))]
#[unsafe(method_family = none)]
pub fn setPrivateFunctionDescriptors(
&self,
private_function_descriptors: Option<&NSArray<MTL4FunctionDescriptor>>,
);
#[cfg(feature = "MTL4FunctionDescriptor")]
/// Assigns groups of functions to match call-site attributes in shader code.
///
/// Function groups help the compiler reduce the number of candidate functions it needs to evaluate for shader function calls, potentially increasing runtime performance.
#[unsafe(method(groups))]
#[unsafe(method_family = none)]
pub fn groups(
&self,
) -> Option<Retained<NSDictionary<NSString, NSArray<MTL4FunctionDescriptor>>>>;
#[cfg(feature = "MTL4FunctionDescriptor")]
/// Setter for [`groups`][Self::groups].
///
/// This is [copied][objc2_foundation::NSCopying::copy] when set.
#[unsafe(method(setGroups:))]
#[unsafe(method_family = none)]
pub fn setGroups(
&self,
groups: Option<&NSDictionary<NSString, NSArray<MTL4FunctionDescriptor>>>,
);
);
}
/// Methods declared on superclass `NSObject`.
impl MTL4StaticLinkingDescriptor {
extern_methods!(
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub fn new() -> Retained<Self>;
);
}
impl DefaultRetained for MTL4StaticLinkingDescriptor {
#[inline]
fn default_retained() -> Retained<Self> {
Self::new()
}
}
extern_class!(
/// Groups together properties to drive the dynamic linking process of a pipeline stage.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/metal/mtl4pipelinestagedynamiclinkingdescriptor?language=objc)
#[unsafe(super(NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct MTL4PipelineStageDynamicLinkingDescriptor;
);
extern_conformance!(
unsafe impl NSCopying for MTL4PipelineStageDynamicLinkingDescriptor {}
);
unsafe impl CopyingHelper for MTL4PipelineStageDynamicLinkingDescriptor {
type Result = Self;
}
extern_conformance!(
unsafe impl NSObjectProtocol for MTL4PipelineStageDynamicLinkingDescriptor {}
);
impl MTL4PipelineStageDynamicLinkingDescriptor {
extern_methods!(
/// Limits the maximum depth of the call stack for indirect function calls in the pipeline stage function.
#[unsafe(method(maxCallStackDepth))]
#[unsafe(method_family = none)]
pub fn maxCallStackDepth(&self) -> NSUInteger;
/// Setter for [`maxCallStackDepth`][Self::maxCallStackDepth].
#[unsafe(method(setMaxCallStackDepth:))]
#[unsafe(method_family = none)]
pub fn setMaxCallStackDepth(&self, max_call_stack_depth: NSUInteger);
#[cfg(feature = "MTL4BinaryFunction")]
/// Provides the array of binary functions to link.
///
/// Binary functions are shader functions that you compile from Metal IR to machine code ahead of time
/// using instances of ``MTL4Compiler``.
#[unsafe(method(binaryLinkedFunctions))]
#[unsafe(method_family = none)]
pub fn binaryLinkedFunctions(
&self,
) -> Option<Retained<NSArray<ProtocolObject<dyn MTL4BinaryFunction>>>>;
#[cfg(feature = "MTL4BinaryFunction")]
/// Setter for [`binaryLinkedFunctions`][Self::binaryLinkedFunctions].
///
/// This is [copied][objc2_foundation::NSCopying::copy] when set.
#[unsafe(method(setBinaryLinkedFunctions:))]
#[unsafe(method_family = none)]
pub fn setBinaryLinkedFunctions(
&self,
binary_linked_functions: Option<&NSArray<ProtocolObject<dyn MTL4BinaryFunction>>>,
);
#[cfg(feature = "MTLDynamicLibrary")]
/// Provides an array of dynamic libraries the compiler loads when it builds the pipeline.
#[unsafe(method(preloadedLibraries))]
#[unsafe(method_family = none)]
pub fn preloadedLibraries(
&self,
) -> Retained<NSArray<ProtocolObject<dyn MTLDynamicLibrary>>>;
#[cfg(feature = "MTLDynamicLibrary")]
/// Setter for [`preloadedLibraries`][Self::preloadedLibraries].
///
/// This is [copied][objc2_foundation::NSCopying::copy] when set.
#[unsafe(method(setPreloadedLibraries:))]
#[unsafe(method_family = none)]
pub fn setPreloadedLibraries(
&self,
preloaded_libraries: &NSArray<ProtocolObject<dyn MTLDynamicLibrary>>,
);
);
}
/// Methods declared on superclass `NSObject`.
impl MTL4PipelineStageDynamicLinkingDescriptor {
extern_methods!(
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub fn new() -> Retained<Self>;
);
}
impl DefaultRetained for MTL4PipelineStageDynamicLinkingDescriptor {
#[inline]
fn default_retained() -> Retained<Self> {
Self::new()
}
}
extern_class!(
/// Groups together properties that provide linking properties for render pipelines.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/metal/mtl4renderpipelinedynamiclinkingdescriptor?language=objc)
#[unsafe(super(NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct MTL4RenderPipelineDynamicLinkingDescriptor;
);
extern_conformance!(
unsafe impl NSCopying for MTL4RenderPipelineDynamicLinkingDescriptor {}
);
unsafe impl CopyingHelper for MTL4RenderPipelineDynamicLinkingDescriptor {
type Result = Self;
}
extern_conformance!(
unsafe impl NSObjectProtocol for MTL4RenderPipelineDynamicLinkingDescriptor {}
);
impl MTL4RenderPipelineDynamicLinkingDescriptor {
extern_methods!(
/// Controls properties for linking the vertex stage of the render pipeline.
#[unsafe(method(vertexLinkingDescriptor))]
#[unsafe(method_family = none)]
pub fn vertexLinkingDescriptor(
&self,
) -> Retained<MTL4PipelineStageDynamicLinkingDescriptor>;
/// Controls properties for linking the fragment stage of the render pipeline.
#[unsafe(method(fragmentLinkingDescriptor))]
#[unsafe(method_family = none)]
pub fn fragmentLinkingDescriptor(
&self,
) -> Retained<MTL4PipelineStageDynamicLinkingDescriptor>;
/// Controls properties for linking the tile stage of the render pipeline.
#[unsafe(method(tileLinkingDescriptor))]
#[unsafe(method_family = none)]
pub fn tileLinkingDescriptor(&self) -> Retained<MTL4PipelineStageDynamicLinkingDescriptor>;
/// Controls properties for link the object stage of the render pipeline.
#[unsafe(method(objectLinkingDescriptor))]
#[unsafe(method_family = none)]
pub fn objectLinkingDescriptor(
&self,
) -> Retained<MTL4PipelineStageDynamicLinkingDescriptor>;
/// Controls properties for linking the mesh stage of the render pipeline.
#[unsafe(method(meshLinkingDescriptor))]
#[unsafe(method_family = none)]
pub fn meshLinkingDescriptor(&self) -> Retained<MTL4PipelineStageDynamicLinkingDescriptor>;
);
}
/// Methods declared on superclass `NSObject`.
impl MTL4RenderPipelineDynamicLinkingDescriptor {
extern_methods!(
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub fn new() -> Retained<Self>;
);
}
impl DefaultRetained for MTL4RenderPipelineDynamicLinkingDescriptor {
#[inline]
fn default_retained() -> Retained<Self> {
Self::new()
}
}