objc2_metal_performance_shaders/generated/MPSNDArray/
MPSNDArrayGather.rs

1//! This file has been automatically generated by `objc2`'s `header-translator`.
2//! DO NOT EDIT
3use core::ffi::*;
4use core::ptr::NonNull;
5use objc2::__framework_prelude::*;
6use objc2_foundation::*;
7use objc2_metal::*;
8
9use crate::*;
10
11extern_class!(
12    /// at the time an -encode call was made.
13    ///
14    /// Must be created with the appropriate MPSNDArray kernel method, for example:
15    ///
16    /// MPSNDArrayGather* gather = [[MPSNDArrayGather alloc] initWithDevice: device];
17    /// MPSNDArrayGatherGradientState* state = [gather resultStateForSourceArrays:...];
18    ///
19    /// See also [Apple's documentation](https://developer.apple.com/documentation/metalperformanceshaders/mpsndarraygathergradientstate?language=objc)
20    #[unsafe(super(MPSNDArrayGradientState, MPSState, NSObject))]
21    #[derive(Debug, PartialEq, Eq, Hash)]
22    #[cfg(all(
23        feature = "MPSCore",
24        feature = "MPSNDArrayGradientState",
25        feature = "MPSState"
26    ))]
27    pub struct MPSNDArrayGatherGradientState;
28);
29
30#[cfg(all(
31    feature = "MPSCore",
32    feature = "MPSNDArrayGradientState",
33    feature = "MPSState"
34))]
35extern_conformance!(
36    unsafe impl NSObjectProtocol for MPSNDArrayGatherGradientState {}
37);
38
39#[cfg(all(
40    feature = "MPSCore",
41    feature = "MPSNDArrayGradientState",
42    feature = "MPSState"
43))]
44impl MPSNDArrayGatherGradientState {
45    extern_methods!();
46}
47
48/// Methods declared on superclass `MPSState`.
49#[cfg(all(
50    feature = "MPSCore",
51    feature = "MPSNDArrayGradientState",
52    feature = "MPSState"
53))]
54impl MPSNDArrayGatherGradientState {
55    extern_methods!(
56        /// Create a MPSState holding a temporary MTLBuffer
57        ///
58        /// Parameter `cmdBuf`: The command buffer against which the temporary resource is allocated
59        ///
60        /// Parameter `bufferSize`: The size of the buffer in bytes
61        #[unsafe(method(temporaryStateWithCommandBuffer:bufferSize:))]
62        #[unsafe(method_family = none)]
63        pub unsafe fn temporaryStateWithCommandBuffer_bufferSize(
64            cmd_buf: &ProtocolObject<dyn MTLCommandBuffer>,
65            buffer_size: usize,
66        ) -> Retained<Self>;
67
68        /// Create a MPSState holding a temporary MTLTexture
69        ///
70        /// Parameter `cmdBuf`: The command buffer against which the temporary resource is allocated
71        ///
72        /// Parameter `descriptor`: A descriptor for the new temporary texture
73        #[unsafe(method(temporaryStateWithCommandBuffer:textureDescriptor:))]
74        #[unsafe(method_family = none)]
75        pub unsafe fn temporaryStateWithCommandBuffer_textureDescriptor(
76            cmd_buf: &ProtocolObject<dyn MTLCommandBuffer>,
77            descriptor: &MTLTextureDescriptor,
78        ) -> Retained<Self>;
79
80        /// Create a new autoreleased temporary state object without underlying resource
81        ///
82        /// Parameter `cmdBuf`: The command buffer with which the temporary resource is associated
83        #[unsafe(method(temporaryStateWithCommandBuffer:))]
84        #[unsafe(method_family = none)]
85        pub unsafe fn temporaryStateWithCommandBuffer(
86            cmd_buf: &ProtocolObject<dyn MTLCommandBuffer>,
87        ) -> Retained<Self>;
88
89        #[unsafe(method(initWithDevice:bufferSize:))]
90        #[unsafe(method_family = init)]
91        pub unsafe fn initWithDevice_bufferSize(
92            this: Allocated<Self>,
93            device: &ProtocolObject<dyn MTLDevice>,
94            buffer_size: usize,
95        ) -> Retained<Self>;
96
97        #[unsafe(method(initWithDevice:textureDescriptor:))]
98        #[unsafe(method_family = init)]
99        pub unsafe fn initWithDevice_textureDescriptor(
100            this: Allocated<Self>,
101            device: &ProtocolObject<dyn MTLDevice>,
102            descriptor: &MTLTextureDescriptor,
103        ) -> Retained<Self>;
104
105        /// Create a MPSState with a non-temporary MTLResource
106        ///
107        /// Parameter `resource`: A MTLBuffer or MTLTexture. May be nil.
108        ///
109        /// # Safety
110        ///
111        /// - `resource` may need to be synchronized.
112        /// - `resource` may be unretained, you must ensure it is kept alive while in use.
113        #[unsafe(method(initWithResource:))]
114        #[unsafe(method_family = init)]
115        pub unsafe fn initWithResource(
116            this: Allocated<Self>,
117            resource: Option<&ProtocolObject<dyn MTLResource>>,
118        ) -> Retained<Self>;
119
120        #[unsafe(method(init))]
121        #[unsafe(method_family = init)]
122        pub unsafe fn init(this: Allocated<Self>) -> Option<Retained<Self>>;
123
124        /// Initialize a non-temporary state to hold a number of textures and buffers
125        ///
126        /// The allocation of each resource will be deferred  until it is needed.
127        /// This occurs when -resource or -resourceAtIndex: is called.
128        ///
129        /// Parameter `resourceList`: The list of resources to create.
130        #[unsafe(method(initWithDevice:resourceList:))]
131        #[unsafe(method_family = init)]
132        pub unsafe fn initWithDevice_resourceList(
133            this: Allocated<Self>,
134            device: &ProtocolObject<dyn MTLDevice>,
135            resource_list: &MPSStateResourceList,
136        ) -> Retained<Self>;
137
138        /// Initialize a temporary state to hold a number of textures and buffers
139        ///
140        /// The textures occur first in sequence
141        #[unsafe(method(temporaryStateWithCommandBuffer:resourceList:))]
142        #[unsafe(method_family = none)]
143        pub unsafe fn temporaryStateWithCommandBuffer_resourceList(
144            command_buffer: &ProtocolObject<dyn MTLCommandBuffer>,
145            resource_list: &MPSStateResourceList,
146        ) -> Retained<Self>;
147
148        /// Create a state object with a list of MTLResources
149        ///
150        /// Because MPS prefers deferred allocation of resources
151        /// your application should use -initWithTextures:bufferSizes:bufferCount:
152        /// whenever possible. This method is useful for cases when the
153        /// MTLResources must be initialized by the CPU.
154        ///
155        /// # Safety
156        ///
157        /// - `resources` generic may need to be synchronized.
158        /// - `resources` generic may be unretained, you must ensure it is kept alive while in use.
159        #[unsafe(method(initWithResources:))]
160        #[unsafe(method_family = init)]
161        pub unsafe fn initWithResources(
162            this: Allocated<Self>,
163            resources: Option<&NSArray<ProtocolObject<dyn MTLResource>>>,
164        ) -> Retained<Self>;
165    );
166}
167
168/// Methods declared on superclass `NSObject`.
169#[cfg(all(
170    feature = "MPSCore",
171    feature = "MPSNDArrayGradientState",
172    feature = "MPSState"
173))]
174impl MPSNDArrayGatherGradientState {
175    extern_methods!(
176        #[unsafe(method(new))]
177        #[unsafe(method_family = new)]
178        pub unsafe fn new() -> Retained<Self>;
179    );
180}
181
182extern_class!(
183    /// Dependencies: This depends on Metal.framework.
184    ///
185    ///
186    /// Applies a gather operation along a given axis.  The encoded primary source array
187    /// contains the data and the secondary array is a 1-D MPSNDArray containing the
188    /// indices.
189    ///
190    /// For each dimension other than axis
191    /// result[i] = source[i]; 0
192    /// <
193    /// = i
194    /// <
195    /// array slice length along dimension
196    /// Along the specified axis
197    /// result[i] = source[indices[i]]; 0
198    /// <
199    /// = i
200    /// <
201    /// number of indices
202    ///
203    /// See also [Apple's documentation](https://developer.apple.com/documentation/metalperformanceshaders/mpsndarraygather?language=objc)
204    #[unsafe(super(
205        MPSNDArrayBinaryKernel,
206        MPSNDArrayMultiaryKernel,
207        MPSNDArrayMultiaryBase,
208        MPSKernel,
209        NSObject
210    ))]
211    #[derive(Debug, PartialEq, Eq, Hash)]
212    #[cfg(all(
213        feature = "MPSCore",
214        feature = "MPSKernel",
215        feature = "MPSNDArrayKernel"
216    ))]
217    pub struct MPSNDArrayGather;
218);
219
220#[cfg(all(
221    feature = "MPSCore",
222    feature = "MPSKernel",
223    feature = "MPSNDArrayKernel"
224))]
225extern_conformance!(
226    unsafe impl NSCoding for MPSNDArrayGather {}
227);
228
229#[cfg(all(
230    feature = "MPSCore",
231    feature = "MPSKernel",
232    feature = "MPSNDArrayKernel"
233))]
234extern_conformance!(
235    unsafe impl NSCopying for MPSNDArrayGather {}
236);
237
238#[cfg(all(
239    feature = "MPSCore",
240    feature = "MPSKernel",
241    feature = "MPSNDArrayKernel"
242))]
243unsafe impl CopyingHelper for MPSNDArrayGather {
244    type Result = Self;
245}
246
247#[cfg(all(
248    feature = "MPSCore",
249    feature = "MPSKernel",
250    feature = "MPSNDArrayKernel"
251))]
252extern_conformance!(
253    unsafe impl NSObjectProtocol for MPSNDArrayGather {}
254);
255
256#[cfg(all(
257    feature = "MPSCore",
258    feature = "MPSKernel",
259    feature = "MPSNDArrayKernel"
260))]
261extern_conformance!(
262    unsafe impl NSSecureCoding for MPSNDArrayGather {}
263);
264
265#[cfg(all(
266    feature = "MPSCore",
267    feature = "MPSKernel",
268    feature = "MPSNDArrayKernel"
269))]
270impl MPSNDArrayGather {
271    extern_methods!(
272        /// The axis along which to apply the gather operation.
273        /// Defaults to zero.
274        #[unsafe(method(axis))]
275        #[unsafe(method_family = none)]
276        pub unsafe fn axis(&self) -> NSUInteger;
277
278        /// Setter for [`axis`][Self::axis].
279        #[unsafe(method(setAxis:))]
280        #[unsafe(method_family = none)]
281        pub unsafe fn setAxis(&self, axis: NSUInteger);
282    );
283}
284
285/// Methods declared on superclass `MPSNDArrayBinaryKernel`.
286#[cfg(all(
287    feature = "MPSCore",
288    feature = "MPSKernel",
289    feature = "MPSNDArrayKernel"
290))]
291impl MPSNDArrayGather {
292    extern_methods!(
293        #[unsafe(method(initWithDevice:))]
294        #[unsafe(method_family = init)]
295        pub unsafe fn initWithDevice(
296            this: Allocated<Self>,
297            device: &ProtocolObject<dyn MTLDevice>,
298        ) -> Retained<Self>;
299
300        #[unsafe(method(initWithDevice:sourceCount:))]
301        #[unsafe(method_family = init)]
302        pub unsafe fn initWithDevice_sourceCount(
303            this: Allocated<Self>,
304            device: &ProtocolObject<dyn MTLDevice>,
305            count: NSUInteger,
306        ) -> Retained<Self>;
307
308        /// # Safety
309        ///
310        /// `coder` possibly has further requirements.
311        #[unsafe(method(initWithCoder:device:))]
312        #[unsafe(method_family = init)]
313        pub unsafe fn initWithCoder_device(
314            this: Allocated<Self>,
315            coder: &NSCoder,
316            device: &ProtocolObject<dyn MTLDevice>,
317        ) -> Retained<Self>;
318    );
319}
320
321/// Methods declared on superclass `MPSKernel`.
322#[cfg(all(
323    feature = "MPSCore",
324    feature = "MPSKernel",
325    feature = "MPSNDArrayKernel"
326))]
327impl MPSNDArrayGather {
328    extern_methods!(
329        /// Called by NSCoder to decode MPSKernels
330        ///
331        /// This isn't the right interface to decode a MPSKernel, but
332        /// it is the one that NSCoder uses. To enable your NSCoder
333        /// (e.g. NSKeyedUnarchiver) to set which device to use
334        /// extend the object to adopt the MPSDeviceProvider
335        /// protocol. Otherwise, the Metal system default device
336        /// will be used.
337        ///
338        /// # Safety
339        ///
340        /// `a_decoder` possibly has further requirements.
341        #[unsafe(method(initWithCoder:))]
342        #[unsafe(method_family = init)]
343        pub unsafe fn initWithCoder(
344            this: Allocated<Self>,
345            a_decoder: &NSCoder,
346        ) -> Option<Retained<Self>>;
347    );
348}
349
350/// Methods declared on superclass `NSObject`.
351#[cfg(all(
352    feature = "MPSCore",
353    feature = "MPSKernel",
354    feature = "MPSNDArrayKernel"
355))]
356impl MPSNDArrayGather {
357    extern_methods!(
358        #[unsafe(method(init))]
359        #[unsafe(method_family = init)]
360        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
361
362        #[unsafe(method(new))]
363        #[unsafe(method_family = new)]
364        pub unsafe fn new() -> Retained<Self>;
365    );
366}
367
368extern_class!(
369    /// Dependencies: This depends on Metal.framework.
370    ///
371    ///
372    /// Applies the gradient operation corresponding to a forward gather operation.
373    ///
374    /// See also [Apple's documentation](https://developer.apple.com/documentation/metalperformanceshaders/mpsndarraygathergradient?language=objc)
375    #[unsafe(super(
376        MPSNDArrayBinaryPrimaryGradientKernel,
377        MPSNDArrayMultiaryGradientKernel,
378        MPSNDArrayMultiaryBase,
379        MPSKernel,
380        NSObject
381    ))]
382    #[derive(Debug, PartialEq, Eq, Hash)]
383    #[cfg(all(
384        feature = "MPSCore",
385        feature = "MPSKernel",
386        feature = "MPSNDArrayKernel"
387    ))]
388    pub struct MPSNDArrayGatherGradient;
389);
390
391#[cfg(all(
392    feature = "MPSCore",
393    feature = "MPSKernel",
394    feature = "MPSNDArrayKernel"
395))]
396extern_conformance!(
397    unsafe impl NSCoding for MPSNDArrayGatherGradient {}
398);
399
400#[cfg(all(
401    feature = "MPSCore",
402    feature = "MPSKernel",
403    feature = "MPSNDArrayKernel"
404))]
405extern_conformance!(
406    unsafe impl NSCopying for MPSNDArrayGatherGradient {}
407);
408
409#[cfg(all(
410    feature = "MPSCore",
411    feature = "MPSKernel",
412    feature = "MPSNDArrayKernel"
413))]
414unsafe impl CopyingHelper for MPSNDArrayGatherGradient {
415    type Result = Self;
416}
417
418#[cfg(all(
419    feature = "MPSCore",
420    feature = "MPSKernel",
421    feature = "MPSNDArrayKernel"
422))]
423extern_conformance!(
424    unsafe impl NSObjectProtocol for MPSNDArrayGatherGradient {}
425);
426
427#[cfg(all(
428    feature = "MPSCore",
429    feature = "MPSKernel",
430    feature = "MPSNDArrayKernel"
431))]
432extern_conformance!(
433    unsafe impl NSSecureCoding for MPSNDArrayGatherGradient {}
434);
435
436#[cfg(all(
437    feature = "MPSCore",
438    feature = "MPSKernel",
439    feature = "MPSNDArrayKernel"
440))]
441impl MPSNDArrayGatherGradient {
442    extern_methods!();
443}
444
445/// Methods declared on superclass `MPSNDArrayBinaryPrimaryGradientKernel`.
446#[cfg(all(
447    feature = "MPSCore",
448    feature = "MPSKernel",
449    feature = "MPSNDArrayKernel"
450))]
451impl MPSNDArrayGatherGradient {
452    extern_methods!(
453        #[unsafe(method(initWithDevice:sourceCount:sourceGradientIndex:))]
454        #[unsafe(method_family = init)]
455        pub unsafe fn initWithDevice_sourceCount_sourceGradientIndex(
456            this: Allocated<Self>,
457            device: &ProtocolObject<dyn MTLDevice>,
458            count: NSUInteger,
459            source_gradient_index: NSUInteger,
460        ) -> Retained<Self>;
461
462        #[unsafe(method(initWithDevice:))]
463        #[unsafe(method_family = init)]
464        pub unsafe fn initWithDevice(
465            this: Allocated<Self>,
466            device: &ProtocolObject<dyn MTLDevice>,
467        ) -> Retained<Self>;
468
469        /// # Safety
470        ///
471        /// `coder` possibly has further requirements.
472        #[unsafe(method(initWithCoder:device:))]
473        #[unsafe(method_family = init)]
474        pub unsafe fn initWithCoder_device(
475            this: Allocated<Self>,
476            coder: &NSCoder,
477            device: &ProtocolObject<dyn MTLDevice>,
478        ) -> Retained<Self>;
479    );
480}
481
482/// Methods declared on superclass `MPSNDArrayMultiaryGradientKernel`.
483#[cfg(all(
484    feature = "MPSCore",
485    feature = "MPSKernel",
486    feature = "MPSNDArrayKernel"
487))]
488impl MPSNDArrayGatherGradient {
489    extern_methods!(
490        #[unsafe(method(initWithDevice:sourceCount:))]
491        #[unsafe(method_family = init)]
492        pub unsafe fn initWithDevice_sourceCount(
493            this: Allocated<Self>,
494            device: &ProtocolObject<dyn MTLDevice>,
495            count: NSUInteger,
496        ) -> Retained<Self>;
497    );
498}
499
500/// Methods declared on superclass `MPSKernel`.
501#[cfg(all(
502    feature = "MPSCore",
503    feature = "MPSKernel",
504    feature = "MPSNDArrayKernel"
505))]
506impl MPSNDArrayGatherGradient {
507    extern_methods!(
508        /// Called by NSCoder to decode MPSKernels
509        ///
510        /// This isn't the right interface to decode a MPSKernel, but
511        /// it is the one that NSCoder uses. To enable your NSCoder
512        /// (e.g. NSKeyedUnarchiver) to set which device to use
513        /// extend the object to adopt the MPSDeviceProvider
514        /// protocol. Otherwise, the Metal system default device
515        /// will be used.
516        ///
517        /// # Safety
518        ///
519        /// `a_decoder` possibly has further requirements.
520        #[unsafe(method(initWithCoder:))]
521        #[unsafe(method_family = init)]
522        pub unsafe fn initWithCoder(
523            this: Allocated<Self>,
524            a_decoder: &NSCoder,
525        ) -> Option<Retained<Self>>;
526    );
527}
528
529/// Methods declared on superclass `NSObject`.
530#[cfg(all(
531    feature = "MPSCore",
532    feature = "MPSKernel",
533    feature = "MPSNDArrayKernel"
534))]
535impl MPSNDArrayGatherGradient {
536    extern_methods!(
537        #[unsafe(method(init))]
538        #[unsafe(method_family = init)]
539        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
540
541        #[unsafe(method(new))]
542        #[unsafe(method_family = new)]
543        pub unsafe fn new() -> Retained<Self>;
544    );
545}