pub struct MTLComputePipelineDescriptor { /* private fields */ }MTLComputePipeline only.Expand description
Implementations§
Source§impl MTLComputePipelineDescriptor
impl MTLComputePipelineDescriptor
Sourcepub fn computeFunction(
&self,
) -> Option<Retained<ProtocolObject<dyn MTLFunction>>>
Available on crate feature MTLLibrary only.
pub fn computeFunction( &self, ) -> Option<Retained<ProtocolObject<dyn MTLFunction>>>
MTLLibrary only.The function to use with the MTLComputePipelineState
Sourcepub fn setComputeFunction(
&self,
compute_function: Option<&ProtocolObject<dyn MTLFunction>>,
)
Available on crate feature MTLLibrary only.
pub fn setComputeFunction( &self, compute_function: Option<&ProtocolObject<dyn MTLFunction>>, )
MTLLibrary only.Setter for computeFunction.
Sourcepub fn threadGroupSizeIsMultipleOfThreadExecutionWidth(&self) -> bool
pub fn threadGroupSizeIsMultipleOfThreadExecutionWidth(&self) -> bool
An optimization flag, set if the thread group size will always be a multiple of thread execution width
Sourcepub unsafe fn setThreadGroupSizeIsMultipleOfThreadExecutionWidth(
&self,
thread_group_size_is_multiple_of_thread_execution_width: bool,
)
pub unsafe fn setThreadGroupSizeIsMultipleOfThreadExecutionWidth( &self, thread_group_size_is_multiple_of_thread_execution_width: bool, )
Setter for threadGroupSizeIsMultipleOfThreadExecutionWidth.
Sourcepub fn maxTotalThreadsPerThreadgroup(&self) -> NSUInteger
pub fn maxTotalThreadsPerThreadgroup(&self) -> NSUInteger
Optional property. Set the maxTotalThreadsPerThreadgroup. If it is not set, returns zero.
Sourcepub fn setMaxTotalThreadsPerThreadgroup(
&self,
max_total_threads_per_threadgroup: NSUInteger,
)
pub fn setMaxTotalThreadsPerThreadgroup( &self, max_total_threads_per_threadgroup: NSUInteger, )
Setter for maxTotalThreadsPerThreadgroup.
Sourcepub fn stageInputDescriptor(
&self,
) -> Option<Retained<MTLStageInputOutputDescriptor>>
Available on crate feature MTLStageInputOutputDescriptor only.
pub fn stageInputDescriptor( &self, ) -> Option<Retained<MTLStageInputOutputDescriptor>>
MTLStageInputOutputDescriptor only.An MTLStageInputOutputDescriptor to fetch data from buffers
Sourcepub fn setStageInputDescriptor(
&self,
stage_input_descriptor: Option<&MTLStageInputOutputDescriptor>,
)
Available on crate feature MTLStageInputOutputDescriptor only.
pub fn setStageInputDescriptor( &self, stage_input_descriptor: Option<&MTLStageInputOutputDescriptor>, )
MTLStageInputOutputDescriptor only.Setter for stageInputDescriptor.
This is copied when set.
Sourcepub fn buffers(&self) -> Retained<MTLPipelineBufferDescriptorArray>
Available on crate feature MTLPipeline only.
pub fn buffers(&self) -> Retained<MTLPipelineBufferDescriptorArray>
MTLPipeline only.Optional properties for each buffer binding used by the compute function.
Sourcepub fn supportIndirectCommandBuffers(&self) -> bool
pub fn supportIndirectCommandBuffers(&self) -> bool
This flag makes this pipeline usable with indirect command buffers.
Sourcepub fn setSupportIndirectCommandBuffers(
&self,
support_indirect_command_buffers: bool,
)
pub fn setSupportIndirectCommandBuffers( &self, support_indirect_command_buffers: bool, )
Setter for supportIndirectCommandBuffers.
Sourcepub fn insertLibraries(
&self,
) -> Option<Retained<NSArray<ProtocolObject<dyn MTLDynamicLibrary>>>>
👎DeprecatedAvailable on crate feature MTLDynamicLibrary only.
pub fn insertLibraries( &self, ) -> Option<Retained<NSArray<ProtocolObject<dyn MTLDynamicLibrary>>>>
MTLDynamicLibrary only.The set of MTLDynamicLibrary to use to resolve external symbols before considering symbols from dependent MTLDynamicLibrary.
Typical workflows use the libraries property of MTLCompileOptions to record dependent libraries at compile time without having to use insertLibraries. This property can be used to override symbols from dependent libraries for experimentation or evaluating alternative implementations. It can also be used to provide dynamic libraries that are dynamically created (for example, from source) that have no stable installName that can be used to automatically load from the file system.
See: MTLDynamicLibrary
Sourcepub fn setInsertLibraries(
&self,
insert_libraries: Option<&NSArray<ProtocolObject<dyn MTLDynamicLibrary>>>,
)
👎DeprecatedAvailable on crate feature MTLDynamicLibrary only.
pub fn setInsertLibraries( &self, insert_libraries: Option<&NSArray<ProtocolObject<dyn MTLDynamicLibrary>>>, )
MTLDynamicLibrary only.Setter for insertLibraries.
This is copied when set.
Sourcepub fn preloadedLibraries(
&self,
) -> Retained<NSArray<ProtocolObject<dyn MTLDynamicLibrary>>>
Available on crate feature MTLDynamicLibrary only.
pub fn preloadedLibraries( &self, ) -> Retained<NSArray<ProtocolObject<dyn MTLDynamicLibrary>>>
MTLDynamicLibrary only.The set of MTLDynamicLibrary to use to resolve external symbols before considering symbols from dependent MTLDynamicLibrary.
Typical workflows use the libraries property of MTLCompileOptions to record dependent libraries at compile time without having to use preloadedLibraries. This property can be used to override symbols from dependent libraries for experimentation or evaluating alternative implementations. It can also be used to provide dynamic libraries that are dynamically created (for example, from source) that have no stable installName that can be used to automatically load from the file system.
See: MTLDynamicLibrary
Sourcepub fn setPreloadedLibraries(
&self,
preloaded_libraries: &NSArray<ProtocolObject<dyn MTLDynamicLibrary>>,
)
Available on crate feature MTLDynamicLibrary only.
pub fn setPreloadedLibraries( &self, preloaded_libraries: &NSArray<ProtocolObject<dyn MTLDynamicLibrary>>, )
MTLDynamicLibrary only.Setter for preloadedLibraries.
This is copied when set.
Sourcepub fn binaryArchives(
&self,
) -> Option<Retained<NSArray<ProtocolObject<dyn MTLBinaryArchive>>>>
Available on crate feature MTLBinaryArchive only.
pub fn binaryArchives( &self, ) -> Option<Retained<NSArray<ProtocolObject<dyn MTLBinaryArchive>>>>
MTLBinaryArchive only.The set of MTLBinaryArchive to search for compiled code when creating the pipeline state.
Accelerate pipeline state creation by providing archives of compiled code such that no compilation needs to happen on the fast path.
See: MTLBinaryArchive
Sourcepub fn setBinaryArchives(
&self,
binary_archives: Option<&NSArray<ProtocolObject<dyn MTLBinaryArchive>>>,
)
Available on crate feature MTLBinaryArchive only.
pub fn setBinaryArchives( &self, binary_archives: Option<&NSArray<ProtocolObject<dyn MTLBinaryArchive>>>, )
MTLBinaryArchive only.Setter for binaryArchives.
This is copied when set.
Sourcepub fn reset(&self)
pub fn reset(&self)
Restore all compute pipeline descriptor properties to their default values.
Sourcepub fn linkedFunctions(&self) -> Option<Retained<MTLLinkedFunctions>>
Available on crate feature MTLLinkedFunctions only.
pub fn linkedFunctions(&self) -> Option<Retained<MTLLinkedFunctions>>
MTLLinkedFunctions only.The set of functions to be linked with the pipeline state and accessed from the compute function.
See: MTLLinkedFunctions
Sourcepub fn setLinkedFunctions(&self, linked_functions: Option<&MTLLinkedFunctions>)
Available on crate feature MTLLinkedFunctions only.
pub fn setLinkedFunctions(&self, linked_functions: Option<&MTLLinkedFunctions>)
MTLLinkedFunctions only.Setter for linkedFunctions.
This is copied when set.
Sourcepub fn supportAddingBinaryFunctions(&self) -> bool
pub fn supportAddingBinaryFunctions(&self) -> bool
This flag makes this pipeline support creating a new pipeline by adding binary functions.
Sourcepub fn setSupportAddingBinaryFunctions(
&self,
support_adding_binary_functions: bool,
)
pub fn setSupportAddingBinaryFunctions( &self, support_adding_binary_functions: bool, )
Setter for supportAddingBinaryFunctions.
Sourcepub fn maxCallStackDepth(&self) -> NSUInteger
pub fn maxCallStackDepth(&self) -> NSUInteger
The maximum depth of the call stack in stack frames from the kernel. Defaults to 1 additional stack frame.
Sourcepub fn setMaxCallStackDepth(&self, max_call_stack_depth: NSUInteger)
pub fn setMaxCallStackDepth(&self, max_call_stack_depth: NSUInteger)
Setter for maxCallStackDepth.
Sourcepub fn shaderValidation(&self) -> MTLShaderValidation
Available on crate feature MTLPipeline only.
pub fn shaderValidation(&self) -> MTLShaderValidation
MTLPipeline only.Toggle that determines whether Metal Shader Validation should be enabled or disabled for the pipeline.
The value can be overridden using MTL_SHADER_VALIDATION_ENABLE_PIPELINES or MTL_SHADER_VALIDATION_DISABLE_PIPELINES Environment Variables.
Sourcepub fn setShaderValidation(&self, shader_validation: MTLShaderValidation)
Available on crate feature MTLPipeline only.
pub fn setShaderValidation(&self, shader_validation: MTLShaderValidation)
MTLPipeline only.Setter for shaderValidation.
Sourcepub fn requiredThreadsPerThreadgroup(&self) -> MTLSize
Available on crate feature MTLTypes only.
pub fn requiredThreadsPerThreadgroup(&self) -> MTLSize
MTLTypes only.Sets the required threads-per-threadgroup during dispatches. The threadsPerThreadgroup argument of any dispatch must match this value if it is set.
Optional, unless the pipeline is going to use CooperativeTensors in which case this must be set.
Setting this to a size of 0 in every dimension disables this property
Sourcepub fn setRequiredThreadsPerThreadgroup(
&self,
required_threads_per_threadgroup: MTLSize,
)
Available on crate feature MTLTypes only.
pub fn setRequiredThreadsPerThreadgroup( &self, required_threads_per_threadgroup: MTLSize, )
MTLTypes only.Setter for requiredThreadsPerThreadgroup.
Methods from Deref<Target = NSObject>§
Sourcepub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
Handle messages the object doesn’t recognize.
See Apple’s documentation for details.
Methods from Deref<Target = AnyObject>§
Sourcepub fn class(&self) -> &'static AnyClass
pub fn class(&self) -> &'static AnyClass
Dynamically find the class of this object.
§Panics
May panic if the object is invalid (which may be the case for objects
returned from unavailable init/new methods).
§Example
Check that an instance of NSObject has the precise class NSObject.
use objc2::ClassType;
use objc2::runtime::NSObject;
let obj = NSObject::new();
assert_eq!(obj.class(), NSObject::class());Sourcepub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
👎Deprecated: this is difficult to use correctly, use Ivar::load instead.
pub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
Ivar::load instead.Use Ivar::load instead.
§Safety
The object must have an instance variable with the given name, and it
must be of type T.
See Ivar::load_ptr for details surrounding this.
Sourcepub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
Attempt to downcast the object to a class of type T.
This is the reference-variant. Use Retained::downcast if you want
to convert a retained object to another type.
§Mutable classes
Some classes have immutable and mutable variants, such as NSString
and NSMutableString.
When some Objective-C API signature says it gives you an immutable class, it generally expects you to not mutate that, even though it may technically be mutable “under the hood”.
So using this method to convert a NSString to a NSMutableString,
while not unsound, is generally frowned upon unless you created the
string yourself, or the API explicitly documents the string to be
mutable.
See Apple’s documentation on mutability and on
isKindOfClass: for more details.
§Generic classes
Objective-C generics are called “lightweight generics”, and that’s because they aren’t exposed in the runtime. This makes it impossible to safely downcast to generic collections, so this is disallowed by this method.
You can, however, safely downcast to generic collections where all the
type-parameters are AnyObject.
§Panics
This works internally by calling isKindOfClass:. That means that the
object must have the instance method of that name, and an exception
will be thrown (if CoreFoundation is linked) or the process will abort
if that is not the case. In the vast majority of cases, you don’t need
to worry about this, since both root objects NSObject and
NSProxy implement this method.
§Examples
Cast an NSString back and forth from NSObject.
use objc2::rc::Retained;
use objc2_foundation::{NSObject, NSString};
let obj: Retained<NSObject> = NSString::new().into_super();
let string = obj.downcast_ref::<NSString>().unwrap();
// Or with `downcast`, if we do not need the object afterwards
let string = obj.downcast::<NSString>().unwrap();Try (and fail) to cast an NSObject to an NSString.
use objc2_foundation::{NSObject, NSString};
let obj = NSObject::new();
assert!(obj.downcast_ref::<NSString>().is_none());Try to cast to an array of strings.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
// This is invalid and doesn't type check.
let arr = arr.downcast_ref::<NSArray<NSString>>();This fails to compile, since it would require enumerating over the array to ensure that each element is of the desired type, which is a performance pitfall.
Downcast when processing each element instead.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
for elem in arr {
if let Some(data) = elem.downcast_ref::<NSString>() {
// handle `data`
}
}Trait Implementations§
Source§impl AsRef<NSObject> for MTLComputePipelineDescriptor
impl AsRef<NSObject> for MTLComputePipelineDescriptor
Source§impl ClassType for MTLComputePipelineDescriptor
impl ClassType for MTLComputePipelineDescriptor
Source§const NAME: &'static str = "MTLComputePipelineDescriptor"
const NAME: &'static str = "MTLComputePipelineDescriptor"
Source§type ThreadKind = <<MTLComputePipelineDescriptor as ClassType>::Super as ClassType>::ThreadKind
type ThreadKind = <<MTLComputePipelineDescriptor as ClassType>::Super as ClassType>::ThreadKind
Source§impl CopyingHelper for MTLComputePipelineDescriptor
impl CopyingHelper for MTLComputePipelineDescriptor
Source§type Result = MTLComputePipelineDescriptor
type Result = MTLComputePipelineDescriptor
Self if the type has no
immutable counterpart. Read moreSource§impl Debug for MTLComputePipelineDescriptor
impl Debug for MTLComputePipelineDescriptor
Source§impl Deref for MTLComputePipelineDescriptor
impl Deref for MTLComputePipelineDescriptor
Source§impl Hash for MTLComputePipelineDescriptor
impl Hash for MTLComputePipelineDescriptor
Source§impl NSCopying for MTLComputePipelineDescriptor
impl NSCopying for MTLComputePipelineDescriptor
Source§impl NSObjectProtocol for MTLComputePipelineDescriptor
impl NSObjectProtocol for MTLComputePipelineDescriptor
Source§fn isEqual(&self, other: Option<&AnyObject>) -> bool
fn isEqual(&self, other: Option<&AnyObject>) -> bool
Source§fn hash(&self) -> usize
fn hash(&self) -> usize
Source§fn isKindOfClass(&self, cls: &AnyClass) -> bool
fn isKindOfClass(&self, cls: &AnyClass) -> bool
Source§fn is_kind_of<T>(&self) -> bool
fn is_kind_of<T>(&self) -> bool
isKindOfClass directly, or cast your objects with AnyObject::downcast_ref