use crate::common::*;
use crate::Foundation::*;
use crate::Metal::*;
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
#[cfg(feature = "Metal_MTLComputePipelineReflection")]
pub struct MTLComputePipelineReflection;
#[cfg(feature = "Metal_MTLComputePipelineReflection")]
unsafe impl ClassType for MTLComputePipelineReflection {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
#[cfg(feature = "Metal_MTLComputePipelineReflection")]
unsafe impl NSObjectProtocol for MTLComputePipelineReflection {}
extern_methods!(
#[cfg(feature = "Metal_MTLComputePipelineReflection")]
unsafe impl MTLComputePipelineReflection {
#[cfg(feature = "Foundation_NSArray")]
#[method_id(@__retain_semantics Other bindings)]
pub unsafe fn bindings(&self) -> Id<NSArray<ProtocolObject<dyn MTLBinding>>>;
#[cfg(all(feature = "Foundation_NSArray", feature = "Metal_MTLArgument"))]
#[deprecated]
#[method_id(@__retain_semantics Other arguments)]
pub fn arguments(&self) -> Id<NSArray<MTLArgument>>;
}
);
extern_methods!(
#[cfg(feature = "Metal_MTLComputePipelineReflection")]
unsafe impl MTLComputePipelineReflection {
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Id<Self>;
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Id<Self>;
}
);
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
#[cfg(feature = "Metal_MTLComputePipelineDescriptor")]
pub struct MTLComputePipelineDescriptor;
#[cfg(feature = "Metal_MTLComputePipelineDescriptor")]
unsafe impl ClassType for MTLComputePipelineDescriptor {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
#[cfg(feature = "Metal_MTLComputePipelineDescriptor")]
unsafe impl NSCopying for MTLComputePipelineDescriptor {}
#[cfg(feature = "Metal_MTLComputePipelineDescriptor")]
unsafe impl NSObjectProtocol for MTLComputePipelineDescriptor {}
extern_methods!(
#[cfg(feature = "Metal_MTLComputePipelineDescriptor")]
unsafe impl MTLComputePipelineDescriptor {
#[cfg(feature = "Foundation_NSString")]
#[method_id(@__retain_semantics Other label)]
pub fn label(&self) -> Option<Id<NSString>>;
#[cfg(feature = "Foundation_NSString")]
#[method(setLabel:)]
pub fn setLabel(&self, label: Option<&NSString>);
#[method_id(@__retain_semantics Other computeFunction)]
pub fn computeFunction(&self) -> Option<Id<ProtocolObject<dyn MTLFunction>>>;
#[method(setComputeFunction:)]
pub fn setComputeFunction(
&self,
compute_function: Option<&ProtocolObject<dyn MTLFunction>>,
);
#[method(threadGroupSizeIsMultipleOfThreadExecutionWidth)]
pub fn threadGroupSizeIsMultipleOfThreadExecutionWidth(&self) -> bool;
#[method(setThreadGroupSizeIsMultipleOfThreadExecutionWidth:)]
pub unsafe fn setThreadGroupSizeIsMultipleOfThreadExecutionWidth(
&self,
thread_group_size_is_multiple_of_thread_execution_width: bool,
);
#[method(maxTotalThreadsPerThreadgroup)]
pub fn maxTotalThreadsPerThreadgroup(&self) -> NSUInteger;
#[method(setMaxTotalThreadsPerThreadgroup:)]
pub fn setMaxTotalThreadsPerThreadgroup(
&self,
max_total_threads_per_threadgroup: NSUInteger,
);
#[cfg(feature = "Metal_MTLStageInputOutputDescriptor")]
#[method_id(@__retain_semantics Other stageInputDescriptor)]
pub fn stageInputDescriptor(&self) -> Option<Id<MTLStageInputOutputDescriptor>>;
#[cfg(feature = "Metal_MTLStageInputOutputDescriptor")]
#[method(setStageInputDescriptor:)]
pub fn setStageInputDescriptor(
&self,
stage_input_descriptor: Option<&MTLStageInputOutputDescriptor>,
);
#[cfg(feature = "Metal_MTLPipelineBufferDescriptorArray")]
#[method_id(@__retain_semantics Other buffers)]
pub fn buffers(&self) -> Id<MTLPipelineBufferDescriptorArray>;
#[method(supportIndirectCommandBuffers)]
pub fn supportIndirectCommandBuffers(&self) -> bool;
#[method(setSupportIndirectCommandBuffers:)]
pub fn setSupportIndirectCommandBuffers(&self, support_indirect_command_buffers: bool);
#[cfg(feature = "Foundation_NSArray")]
#[deprecated]
#[method_id(@__retain_semantics Other insertLibraries)]
pub fn insertLibraries(&self)
-> Option<Id<NSArray<ProtocolObject<dyn MTLDynamicLibrary>>>>;
#[cfg(feature = "Foundation_NSArray")]
#[deprecated]
#[method(setInsertLibraries:)]
pub fn setInsertLibraries(
&self,
insert_libraries: Option<&NSArray<ProtocolObject<dyn MTLDynamicLibrary>>>,
);
#[cfg(feature = "Foundation_NSArray")]
#[method_id(@__retain_semantics Other preloadedLibraries)]
pub fn preloadedLibraries(&self) -> Id<NSArray<ProtocolObject<dyn MTLDynamicLibrary>>>;
#[cfg(feature = "Foundation_NSArray")]
#[method(setPreloadedLibraries:)]
pub fn setPreloadedLibraries(
&self,
preloaded_libraries: &NSArray<ProtocolObject<dyn MTLDynamicLibrary>>,
);
#[cfg(feature = "Foundation_NSArray")]
#[method_id(@__retain_semantics Other binaryArchives)]
pub fn binaryArchives(&self) -> Option<Id<NSArray<ProtocolObject<dyn MTLBinaryArchive>>>>;
#[cfg(feature = "Foundation_NSArray")]
#[method(setBinaryArchives:)]
pub fn setBinaryArchives(
&self,
binary_archives: Option<&NSArray<ProtocolObject<dyn MTLBinaryArchive>>>,
);
#[method(reset)]
pub fn reset(&self);
#[cfg(feature = "Metal_MTLLinkedFunctions")]
#[method_id(@__retain_semantics Other linkedFunctions)]
pub fn linkedFunctions(&self) -> Option<Id<MTLLinkedFunctions>>;
#[cfg(feature = "Metal_MTLLinkedFunctions")]
#[method(setLinkedFunctions:)]
pub fn setLinkedFunctions(&self, linked_functions: Option<&MTLLinkedFunctions>);
#[method(supportAddingBinaryFunctions)]
pub fn supportAddingBinaryFunctions(&self) -> bool;
#[method(setSupportAddingBinaryFunctions:)]
pub fn setSupportAddingBinaryFunctions(&self, support_adding_binary_functions: bool);
#[method(maxCallStackDepth)]
pub fn maxCallStackDepth(&self) -> NSUInteger;
#[method(setMaxCallStackDepth:)]
pub fn setMaxCallStackDepth(&self, max_call_stack_depth: NSUInteger);
}
);
extern_methods!(
#[cfg(feature = "Metal_MTLComputePipelineDescriptor")]
unsafe impl MTLComputePipelineDescriptor {
#[method_id(@__retain_semantics Init init)]
pub fn init(this: Allocated<Self>) -> Id<Self>;
#[method_id(@__retain_semantics New new)]
pub fn new() -> Id<Self>;
}
);
#[cfg(feature = "Metal_MTLComputePipelineDescriptor")]
impl DefaultId for MTLComputePipelineDescriptor {
#[inline]
fn default_id() -> Id<Self> {
Self::new()
}
}
extern_protocol!(
pub unsafe trait MTLComputePipelineState: NSObjectProtocol {
#[cfg(feature = "Foundation_NSString")]
#[method_id(@__retain_semantics Other label)]
fn label(&self) -> Option<Id<NSString>>;
#[method_id(@__retain_semantics Other device)]
fn device(&self) -> Id<ProtocolObject<dyn MTLDevice>>;
#[method(maxTotalThreadsPerThreadgroup)]
fn maxTotalThreadsPerThreadgroup(&self) -> NSUInteger;
#[method(threadExecutionWidth)]
fn threadExecutionWidth(&self) -> NSUInteger;
#[method(staticThreadgroupMemoryLength)]
fn staticThreadgroupMemoryLength(&self) -> NSUInteger;
#[method(imageblockMemoryLengthForDimensions:)]
unsafe fn imageblockMemoryLengthForDimensions(
&self,
imageblock_dimensions: MTLSize,
) -> NSUInteger;
#[method(supportIndirectCommandBuffers)]
fn supportIndirectCommandBuffers(&self) -> bool;
#[method(gpuResourceID)]
unsafe fn gpuResourceID(&self) -> MTLResourceID;
#[method_id(@__retain_semantics Other functionHandleWithFunction:)]
fn functionHandleWithFunction(
&self,
function: &ProtocolObject<dyn MTLFunction>,
) -> Option<Id<ProtocolObject<dyn MTLFunctionHandle>>>;
#[cfg(all(feature = "Foundation_NSArray", feature = "Foundation_NSError"))]
#[method_id(@__retain_semantics New newComputePipelineStateWithAdditionalBinaryFunctions:error:_)]
fn newComputePipelineStateWithAdditionalBinaryFunctions_error(
&self,
functions: &NSArray<ProtocolObject<dyn MTLFunction>>,
) -> Result<Id<ProtocolObject<dyn MTLComputePipelineState>>, Id<NSError>>;
#[cfg(feature = "Metal_MTLVisibleFunctionTableDescriptor")]
#[method_id(@__retain_semantics New newVisibleFunctionTableWithDescriptor:)]
fn newVisibleFunctionTableWithDescriptor(
&self,
descriptor: &MTLVisibleFunctionTableDescriptor,
) -> Option<Id<ProtocolObject<dyn MTLVisibleFunctionTable>>>;
#[cfg(feature = "Metal_MTLIntersectionFunctionTableDescriptor")]
#[method_id(@__retain_semantics New newIntersectionFunctionTableWithDescriptor:)]
fn newIntersectionFunctionTableWithDescriptor(
&self,
descriptor: &MTLIntersectionFunctionTableDescriptor,
) -> Option<Id<ProtocolObject<dyn MTLIntersectionFunctionTable>>>;
}
unsafe impl ProtocolType for dyn MTLComputePipelineState {}
);