use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct MTLComputePipelineReflection;
unsafe impl ClassType for MTLComputePipelineReflection {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
unsafe impl NSObjectProtocol for MTLComputePipelineReflection {}
extern_methods!(
unsafe impl MTLComputePipelineReflection {
#[cfg(feature = "MTLArgument")]
#[method_id(@__retain_semantics Other bindings)]
pub unsafe fn bindings(&self) -> Retained<NSArray<ProtocolObject<dyn MTLBinding>>>;
#[cfg(feature = "MTLArgument")]
#[deprecated]
#[method_id(@__retain_semantics Other arguments)]
pub fn arguments(&self) -> Retained<NSArray<MTLArgument>>;
}
);
extern_methods!(
unsafe impl MTLComputePipelineReflection {
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Retained<Self>;
}
);
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct MTLComputePipelineDescriptor;
unsafe impl ClassType for MTLComputePipelineDescriptor {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
unsafe impl NSCopying for MTLComputePipelineDescriptor {}
unsafe impl NSObjectProtocol for MTLComputePipelineDescriptor {}
extern_methods!(
unsafe impl MTLComputePipelineDescriptor {
#[method_id(@__retain_semantics Other label)]
pub fn label(&self) -> Option<Retained<NSString>>;
#[method(setLabel:)]
pub fn setLabel(&self, label: Option<&NSString>);
#[cfg(feature = "MTLLibrary")]
#[method_id(@__retain_semantics Other computeFunction)]
pub fn computeFunction(&self) -> Option<Retained<ProtocolObject<dyn MTLFunction>>>;
#[cfg(feature = "MTLLibrary")]
#[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 = "MTLStageInputOutputDescriptor")]
#[method_id(@__retain_semantics Other stageInputDescriptor)]
pub fn stageInputDescriptor(&self) -> Option<Retained<MTLStageInputOutputDescriptor>>;
#[cfg(feature = "MTLStageInputOutputDescriptor")]
#[method(setStageInputDescriptor:)]
pub fn setStageInputDescriptor(
&self,
stage_input_descriptor: Option<&MTLStageInputOutputDescriptor>,
);
#[cfg(feature = "MTLPipeline")]
#[method_id(@__retain_semantics Other buffers)]
pub fn buffers(&self) -> Retained<MTLPipelineBufferDescriptorArray>;
#[method(supportIndirectCommandBuffers)]
pub fn supportIndirectCommandBuffers(&self) -> bool;
#[method(setSupportIndirectCommandBuffers:)]
pub fn setSupportIndirectCommandBuffers(&self, support_indirect_command_buffers: bool);
#[cfg(feature = "MTLDynamicLibrary")]
#[deprecated]
#[method_id(@__retain_semantics Other insertLibraries)]
pub fn insertLibraries(
&self,
) -> Option<Retained<NSArray<ProtocolObject<dyn MTLDynamicLibrary>>>>;
#[cfg(feature = "MTLDynamicLibrary")]
#[deprecated]
#[method(setInsertLibraries:)]
pub fn setInsertLibraries(
&self,
insert_libraries: Option<&NSArray<ProtocolObject<dyn MTLDynamicLibrary>>>,
);
#[cfg(feature = "MTLDynamicLibrary")]
#[method_id(@__retain_semantics Other preloadedLibraries)]
pub fn preloadedLibraries(
&self,
) -> Retained<NSArray<ProtocolObject<dyn MTLDynamicLibrary>>>;
#[cfg(feature = "MTLDynamicLibrary")]
#[method(setPreloadedLibraries:)]
pub fn setPreloadedLibraries(
&self,
preloaded_libraries: &NSArray<ProtocolObject<dyn MTLDynamicLibrary>>,
);
#[cfg(feature = "MTLBinaryArchive")]
#[method_id(@__retain_semantics Other binaryArchives)]
pub fn binaryArchives(
&self,
) -> Option<Retained<NSArray<ProtocolObject<dyn MTLBinaryArchive>>>>;
#[cfg(feature = "MTLBinaryArchive")]
#[method(setBinaryArchives:)]
pub fn setBinaryArchives(
&self,
binary_archives: Option<&NSArray<ProtocolObject<dyn MTLBinaryArchive>>>,
);
#[method(reset)]
pub fn reset(&self);
#[cfg(feature = "MTLLinkedFunctions")]
#[method_id(@__retain_semantics Other linkedFunctions)]
pub fn linkedFunctions(&self) -> Option<Retained<MTLLinkedFunctions>>;
#[cfg(feature = "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!(
unsafe impl MTLComputePipelineDescriptor {
#[method_id(@__retain_semantics Init init)]
pub fn init(this: Allocated<Self>) -> Retained<Self>;
#[method_id(@__retain_semantics New new)]
pub fn new() -> Retained<Self>;
}
);
impl DefaultRetained for MTLComputePipelineDescriptor {
#[inline]
fn default_id() -> Retained<Self> {
Self::new()
}
}
extern_protocol!(
pub unsafe trait MTLComputePipelineState: NSObjectProtocol + IsRetainable {
#[method_id(@__retain_semantics Other label)]
fn label(&self) -> Option<Retained<NSString>>;
#[cfg(feature = "MTLDevice")]
#[method_id(@__retain_semantics Other device)]
fn device(&self) -> Retained<ProtocolObject<dyn MTLDevice>>;
#[method(maxTotalThreadsPerThreadgroup)]
fn maxTotalThreadsPerThreadgroup(&self) -> NSUInteger;
#[method(threadExecutionWidth)]
fn threadExecutionWidth(&self) -> NSUInteger;
#[method(staticThreadgroupMemoryLength)]
fn staticThreadgroupMemoryLength(&self) -> NSUInteger;
#[cfg(feature = "MTLTypes")]
#[method(imageblockMemoryLengthForDimensions:)]
unsafe fn imageblockMemoryLengthForDimensions(
&self,
imageblock_dimensions: MTLSize,
) -> NSUInteger;
#[method(supportIndirectCommandBuffers)]
fn supportIndirectCommandBuffers(&self) -> bool;
#[cfg(feature = "MTLTypes")]
#[method(gpuResourceID)]
unsafe fn gpuResourceID(&self) -> MTLResourceID;
#[cfg(all(feature = "MTLFunctionHandle", feature = "MTLLibrary"))]
#[method_id(@__retain_semantics Other functionHandleWithFunction:)]
fn functionHandleWithFunction(
&self,
function: &ProtocolObject<dyn MTLFunction>,
) -> Option<Retained<ProtocolObject<dyn MTLFunctionHandle>>>;
#[cfg(feature = "MTLLibrary")]
#[method_id(@__retain_semantics New newComputePipelineStateWithAdditionalBinaryFunctions:error:_)]
fn newComputePipelineStateWithAdditionalBinaryFunctions_error(
&self,
functions: &NSArray<ProtocolObject<dyn MTLFunction>>,
) -> Result<Retained<ProtocolObject<dyn MTLComputePipelineState>>, Retained<NSError>>;
#[cfg(all(feature = "MTLResource", feature = "MTLVisibleFunctionTable"))]
#[method_id(@__retain_semantics New newVisibleFunctionTableWithDescriptor:)]
fn newVisibleFunctionTableWithDescriptor(
&self,
descriptor: &MTLVisibleFunctionTableDescriptor,
) -> Option<Retained<ProtocolObject<dyn MTLVisibleFunctionTable>>>;
#[cfg(all(feature = "MTLIntersectionFunctionTable", feature = "MTLResource"))]
#[method_id(@__retain_semantics New newIntersectionFunctionTableWithDescriptor:)]
fn newIntersectionFunctionTableWithDescriptor(
&self,
descriptor: &MTLIntersectionFunctionTableDescriptor,
) -> Option<Retained<ProtocolObject<dyn MTLIntersectionFunctionTable>>>;
}
unsafe impl ProtocolType for dyn MTLComputePipelineState {}
);