//! 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::*; /// [Apple's documentation](https://developer.apple.com/documentation/metal/mtlattributestridestatic?language=objc) pub static MTLAttributeStrideStatic: NSUInteger = NSUIntegerMax as _; extern_protocol!( /// MTLArgumentEncoder encodes buffer, texture, sampler, and constant data into a buffer. /// /// See also [Apple's documentation](https://developer.apple.com/documentation/metal/mtlargumentencoder?language=objc) pub unsafe trait MTLArgumentEncoder: NSObjectProtocol { #[cfg(feature = "MTLDevice")] /// The device this argument encoder was created against. #[unsafe(method(device))] #[unsafe(method_family = none)] fn device(&self) -> Retained>; /// A string to help identify this object. #[unsafe(method(label))] #[unsafe(method_family = none)] 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)] fn setLabel(&self, label: Option<&NSString>); /// The number of bytes required to store the encoded resource bindings. #[unsafe(method(encodedLength))] #[unsafe(method_family = none)] fn encodedLength(&self) -> NSUInteger; /// The alignment in bytes required to store the encoded resource bindings. #[unsafe(method(alignment))] #[unsafe(method_family = none)] fn alignment(&self) -> NSUInteger; #[cfg(all( feature = "MTLAllocation", feature = "MTLBuffer", feature = "MTLResource" ))] /// Sets the destination buffer and offset at which the arguments will be encoded. /// /// # Safety /// /// - `argument_buffer` may need to be synchronized. /// - `argument_buffer` may be unretained, you must ensure it is kept alive while in use. /// - `argument_buffer` contents should be of the correct type. /// - `offset` might not be bounds-checked. #[unsafe(method(setArgumentBuffer:offset:))] #[unsafe(method_family = none)] unsafe fn setArgumentBuffer_offset( &self, argument_buffer: Option<&ProtocolObject>, offset: NSUInteger, ); #[cfg(all( feature = "MTLAllocation", feature = "MTLBuffer", feature = "MTLResource" ))] /// Sets the destination buffer, starting offset and specific array element arguments will be encoded into. arrayElement represents /// the desired element of IAB array targetted by encoding /// /// # Safety /// /// - `argument_buffer` may need to be synchronized. /// - `argument_buffer` may be unretained, you must ensure it is kept alive while in use. /// - `argument_buffer` contents should be of the correct type. /// - `startOffset` might not be bounds-checked. #[unsafe(method(setArgumentBuffer:startOffset:arrayElement:))] #[unsafe(method_family = none)] unsafe fn setArgumentBuffer_startOffset_arrayElement( &self, argument_buffer: Option<&ProtocolObject>, start_offset: NSUInteger, array_element: NSUInteger, ); #[cfg(all( feature = "MTLAllocation", feature = "MTLBuffer", feature = "MTLResource" ))] /// Set a buffer at the given bind point index. /// /// # Safety /// /// - `buffer` may need to be synchronized. /// - `buffer` may be unretained, you must ensure it is kept alive while in use. /// - `buffer` contents should be of the correct type. /// - `offset` might not be bounds-checked. /// - `index` might not be bounds-checked. #[unsafe(method(setBuffer:offset:atIndex:))] #[unsafe(method_family = none)] unsafe fn setBuffer_offset_atIndex( &self, buffer: Option<&ProtocolObject>, offset: NSUInteger, index: NSUInteger, ); #[cfg(all( feature = "MTLAllocation", feature = "MTLBuffer", feature = "MTLResource" ))] /// Set an array of buffers at the given bind point index range. /// /// # Safety /// /// - `buffers` must be a valid pointer. /// - `offsets` might not be bounds-checked. /// - `offsets` must be a valid pointer. /// - `range` might not be bounds-checked. #[unsafe(method(setBuffers:offsets:withRange:))] #[unsafe(method_family = none)] unsafe fn setBuffers_offsets_withRange( &self, buffers: NonNull<*const ProtocolObject>, offsets: NonNull, range: NSRange, ); #[cfg(all( feature = "MTLAllocation", feature = "MTLResource", feature = "MTLTexture" ))] /// Set a texture at the given bind point index. /// /// # Safety /// /// - `texture` may need to be synchronized. /// - `texture` may be unretained, you must ensure it is kept alive while in use. /// - `index` might not be bounds-checked. #[unsafe(method(setTexture:atIndex:))] #[unsafe(method_family = none)] unsafe fn setTexture_atIndex( &self, texture: Option<&ProtocolObject>, index: NSUInteger, ); #[cfg(all( feature = "MTLAllocation", feature = "MTLResource", feature = "MTLTexture" ))] /// Set an array of textures at the given bind point index range. /// /// # Safety /// /// - `textures` must be a valid pointer. /// - `range` might not be bounds-checked. #[unsafe(method(setTextures:withRange:))] #[unsafe(method_family = none)] unsafe fn setTextures_withRange( &self, textures: NonNull<*const ProtocolObject>, range: NSRange, ); #[cfg(feature = "MTLSampler")] /// Set a sampler at the given bind point index. /// /// # Safety /// /// `index` might not be bounds-checked. #[unsafe(method(setSamplerState:atIndex:))] #[unsafe(method_family = none)] unsafe fn setSamplerState_atIndex( &self, sampler: Option<&ProtocolObject>, index: NSUInteger, ); #[cfg(feature = "MTLSampler")] /// Set an array of samplers at the given bind point index range. /// /// # Safety /// /// - `samplers` must be a valid pointer. /// - `range` might not be bounds-checked. #[unsafe(method(setSamplerStates:withRange:))] #[unsafe(method_family = none)] unsafe fn setSamplerStates_withRange( &self, samplers: NonNull<*const ProtocolObject>, range: NSRange, ); /// Returns a pointer to the constant data at the given bind point index. /// /// # Safety /// /// `index` might not be bounds-checked. #[unsafe(method(constantDataAtIndex:))] #[unsafe(method_family = none)] unsafe fn constantDataAtIndex(&self, index: NSUInteger) -> NonNull; #[cfg(all(feature = "MTLAllocation", feature = "MTLRenderPipeline"))] /// Sets a render pipeline state at a given bind point index /// /// # Safety /// /// `index` might not be bounds-checked. #[unsafe(method(setRenderPipelineState:atIndex:))] #[unsafe(method_family = none)] unsafe fn setRenderPipelineState_atIndex( &self, pipeline: Option<&ProtocolObject>, index: NSUInteger, ); #[cfg(all(feature = "MTLAllocation", feature = "MTLRenderPipeline"))] /// Set an array of render pipeline states at a given bind point index range /// /// # Safety /// /// - `pipelines` must be a valid pointer. /// - `range` might not be bounds-checked. #[unsafe(method(setRenderPipelineStates:withRange:))] #[unsafe(method_family = none)] unsafe fn setRenderPipelineStates_withRange( &self, pipelines: NonNull<*const ProtocolObject>, range: NSRange, ); #[cfg(all(feature = "MTLAllocation", feature = "MTLComputePipeline"))] /// Sets a compute pipeline state at a given bind point index /// /// # Safety /// /// `index` might not be bounds-checked. #[unsafe(method(setComputePipelineState:atIndex:))] #[unsafe(method_family = none)] unsafe fn setComputePipelineState_atIndex( &self, pipeline: Option<&ProtocolObject>, index: NSUInteger, ); #[cfg(all(feature = "MTLAllocation", feature = "MTLComputePipeline"))] /// Set an array of compute pipeline states at a given bind point index range /// /// # Safety /// /// - `pipelines` must be a valid pointer. /// - `range` might not be bounds-checked. #[unsafe(method(setComputePipelineStates:withRange:))] #[unsafe(method_family = none)] unsafe fn setComputePipelineStates_withRange( &self, pipelines: NonNull<*const ProtocolObject>, range: NSRange, ); #[cfg(all( feature = "MTLAllocation", feature = "MTLIndirectCommandBuffer", feature = "MTLResource" ))] /// Sets an indirect command buffer at a given bind point index /// /// # Safety /// /// - `indirect_command_buffer` may need to be synchronized. /// - `indirect_command_buffer` may be unretained, you must ensure it is kept alive while in use. /// - `index` might not be bounds-checked. #[unsafe(method(setIndirectCommandBuffer:atIndex:))] #[unsafe(method_family = none)] unsafe fn setIndirectCommandBuffer_atIndex( &self, indirect_command_buffer: Option<&ProtocolObject>, index: NSUInteger, ); #[cfg(all( feature = "MTLAllocation", feature = "MTLIndirectCommandBuffer", feature = "MTLResource" ))] /// Set an array of indirect command buffers at the given bind point index range. /// /// # Safety /// /// - `buffers` must be a valid pointer. /// - `range` might not be bounds-checked. #[unsafe(method(setIndirectCommandBuffers:withRange:))] #[unsafe(method_family = none)] unsafe fn setIndirectCommandBuffers_withRange( &self, buffers: NonNull<*const ProtocolObject>, range: NSRange, ); #[cfg(all( feature = "MTLAccelerationStructure", feature = "MTLAllocation", feature = "MTLResource" ))] /// # Safety /// /// - `acceleration_structure` may need to be synchronized. /// - `acceleration_structure` may be unretained, you must ensure it is kept alive while in use. /// - `index` might not be bounds-checked. #[unsafe(method(setAccelerationStructure:atIndex:))] #[unsafe(method_family = none)] unsafe fn setAccelerationStructure_atIndex( &self, acceleration_structure: Option<&ProtocolObject>, index: NSUInteger, ); /// Returns a pointer to a new MTLArgumentEncoder that can be used to encode the an argument buffer /// in the buffer associated with a given index. /// Returns nil if the resource at the given index is not an argument buffer. /// /// # Safety /// /// `index` might not be bounds-checked. #[unsafe(method(newArgumentEncoderForBufferAtIndex:))] #[unsafe(method_family = new)] unsafe fn newArgumentEncoderForBufferAtIndex( &self, index: NSUInteger, ) -> Option>>; #[cfg(all( feature = "MTLAllocation", feature = "MTLResource", feature = "MTLVisibleFunctionTable" ))] /// Set a visible function table at the given buffer index /// /// # Safety /// /// - `visible_function_table` may need to be synchronized. /// - `visible_function_table` may be unretained, you must ensure it is kept alive while in use. /// - `index` might not be bounds-checked. #[unsafe(method(setVisibleFunctionTable:atIndex:))] #[unsafe(method_family = none)] unsafe fn setVisibleFunctionTable_atIndex( &self, visible_function_table: Option<&ProtocolObject>, index: NSUInteger, ); #[cfg(all( feature = "MTLAllocation", feature = "MTLResource", feature = "MTLVisibleFunctionTable" ))] /// Set visible function tables at the given buffer index range /// /// # Safety /// /// - `visible_function_tables` must be a valid pointer. /// - `range` might not be bounds-checked. #[unsafe(method(setVisibleFunctionTables:withRange:))] #[unsafe(method_family = none)] unsafe fn setVisibleFunctionTables_withRange( &self, visible_function_tables: NonNull<*const ProtocolObject>, range: NSRange, ); #[cfg(all( feature = "MTLAllocation", feature = "MTLIntersectionFunctionTable", feature = "MTLResource" ))] /// Set an intersection function table at the given buffer index /// /// # Safety /// /// - `intersection_function_table` may need to be synchronized. /// - `intersection_function_table` may be unretained, you must ensure it is kept alive while in use. /// - `index` might not be bounds-checked. #[unsafe(method(setIntersectionFunctionTable:atIndex:))] #[unsafe(method_family = none)] unsafe fn setIntersectionFunctionTable_atIndex( &self, intersection_function_table: Option<&ProtocolObject>, index: NSUInteger, ); #[cfg(all( feature = "MTLAllocation", feature = "MTLIntersectionFunctionTable", feature = "MTLResource" ))] /// Set intersection function tables at the given buffer index range /// /// # Safety /// /// - `intersection_function_tables` must be a valid pointer. /// - `range` might not be bounds-checked. #[unsafe(method(setIntersectionFunctionTables:withRange:))] #[unsafe(method_family = none)] unsafe fn setIntersectionFunctionTables_withRange( &self, intersection_function_tables: NonNull< *const ProtocolObject, >, range: NSRange, ); #[cfg(feature = "MTLDepthStencil")] /// Sets a depth stencil state at a given bind point index /// /// # Safety /// /// `index` might not be bounds-checked. #[unsafe(method(setDepthStencilState:atIndex:))] #[unsafe(method_family = none)] unsafe fn setDepthStencilState_atIndex( &self, depth_stencil_state: Option<&ProtocolObject>, index: NSUInteger, ); #[cfg(feature = "MTLDepthStencil")] /// Sets an array of depth stencil states at a given buffer index range /// /// # Safety /// /// - `depth_stencil_states` must be a valid pointer. /// - `range` might not be bounds-checked. #[unsafe(method(setDepthStencilStates:withRange:))] #[unsafe(method_family = none)] unsafe fn setDepthStencilStates_withRange( &self, depth_stencil_states: NonNull<*const ProtocolObject>, range: NSRange, ); } );