1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use objc2::__framework_prelude::*;
use crate::*;
/// An enumeration of the different data types in Metal.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/metal/mtldatatype?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MTLDataType(pub NSUInteger);
impl MTLDataType {
/// Represents no data type.
#[doc(alias = "MTLDataTypeNone")]
pub const None: Self = Self(0);
/// Represents a struct data type.
#[doc(alias = "MTLDataTypeStruct")]
pub const Struct: Self = Self(1);
/// Represents an array data type.
#[doc(alias = "MTLDataTypeArray")]
pub const Array: Self = Self(2);
/// Represents a data type consisting of a single floating-point value.
#[doc(alias = "MTLDataTypeFloat")]
pub const Float: Self = Self(3);
/// Represents a data type consisting of a vector of two floating-point values.
#[doc(alias = "MTLDataTypeFloat2")]
pub const Float2: Self = Self(4);
/// Represents a data type consisting of a vector of three floating-point values.
#[doc(alias = "MTLDataTypeFloat3")]
pub const Float3: Self = Self(5);
/// Represents a data type consisting of a vector of four floating-point values.
#[doc(alias = "MTLDataTypeFloat4")]
pub const Float4: Self = Self(6);
/// Represents a data type consisting of a 2x2 floating-point matrix.
#[doc(alias = "MTLDataTypeFloat2x2")]
pub const Float2x2: Self = Self(7);
/// Represents a data type consisting of a 2x3 floating-point matrix.
#[doc(alias = "MTLDataTypeFloat2x3")]
pub const Float2x3: Self = Self(8);
/// Represents a data type consisting of a 2x4 floating-point matrix.
#[doc(alias = "MTLDataTypeFloat2x4")]
pub const Float2x4: Self = Self(9);
/// Represents a data type consisting of a 3x2 floating-point matrix.
#[doc(alias = "MTLDataTypeFloat3x2")]
pub const Float3x2: Self = Self(10);
/// Represents a data type consisting of a 3x3 floating-point matrix.
#[doc(alias = "MTLDataTypeFloat3x3")]
pub const Float3x3: Self = Self(11);
/// Represents a data type consisting of a 3x4 floating-point matrix.
#[doc(alias = "MTLDataTypeFloat3x4")]
pub const Float3x4: Self = Self(12);
/// Represents a data type consisting of a 4x2 floating-point matrix.
#[doc(alias = "MTLDataTypeFloat4x2")]
pub const Float4x2: Self = Self(13);
/// Represents a data type consisting of a 4x3 floating-point matrix.
#[doc(alias = "MTLDataTypeFloat4x3")]
pub const Float4x3: Self = Self(14);
/// Represents a data type consisting of a 4x4 floating-point matrix.
#[doc(alias = "MTLDataTypeFloat4x4")]
pub const Float4x4: Self = Self(15);
/// Represents a data type consisting of a half-precision floating-point value.
#[doc(alias = "MTLDataTypeHalf")]
pub const Half: Self = Self(16);
/// Represents a data type consisting of a vector of two half-precision floating-point values.
#[doc(alias = "MTLDataTypeHalf2")]
pub const Half2: Self = Self(17);
/// Represents a data type consisting of a vector of three half-precision floating-point values.
#[doc(alias = "MTLDataTypeHalf3")]
pub const Half3: Self = Self(18);
/// Represents a data type consisting of a vector of four half-precision floating-point values.
#[doc(alias = "MTLDataTypeHalf4")]
pub const Half4: Self = Self(19);
/// Represents a data type consisting of a 2x2 half-precision floating-point matrix.
#[doc(alias = "MTLDataTypeHalf2x2")]
pub const Half2x2: Self = Self(20);
/// Represents a data type consisting of a 2x3 half-precision floating-point matrix.
#[doc(alias = "MTLDataTypeHalf2x3")]
pub const Half2x3: Self = Self(21);
/// Represents a data type consisting of a 2x4 half-precision floating-point matrix.
#[doc(alias = "MTLDataTypeHalf2x4")]
pub const Half2x4: Self = Self(22);
/// Represents a data type consisting of a 3x2 half-precision floating-point matrix.
#[doc(alias = "MTLDataTypeHalf3x2")]
pub const Half3x2: Self = Self(23);
/// Represents a data type consisting of a 3x3 half-precision floating-point matrix.
#[doc(alias = "MTLDataTypeHalf3x3")]
pub const Half3x3: Self = Self(24);
/// Represents a data type consisting of a 3x4 half-precision floating-point matrix.
#[doc(alias = "MTLDataTypeHalf3x4")]
pub const Half3x4: Self = Self(25);
/// Represents a data type consisting of a 4x2 half-precision floating-point matrix.
#[doc(alias = "MTLDataTypeHalf4x2")]
pub const Half4x2: Self = Self(26);
/// Represents a data type consisting of a 4x3 half-precision floating-point matrix.
#[doc(alias = "MTLDataTypeHalf4x3")]
pub const Half4x3: Self = Self(27);
/// Represents a data type consisting of a 4x4 half-precision floating-point matrix.
#[doc(alias = "MTLDataTypeHalf4x4")]
pub const Half4x4: Self = Self(28);
/// Represents a data type consisting of a single signed integer value.
#[doc(alias = "MTLDataTypeInt")]
pub const Int: Self = Self(29);
/// Represents a data type consisting of a vector of two signed integer values.
#[doc(alias = "MTLDataTypeInt2")]
pub const Int2: Self = Self(30);
/// Represents a data type consisting of a vector of three signed integer values.
#[doc(alias = "MTLDataTypeInt3")]
pub const Int3: Self = Self(31);
/// Represents a data type consisting of a vector of four signed integer values.
#[doc(alias = "MTLDataTypeInt4")]
pub const Int4: Self = Self(32);
/// Represents a data type consisting of a single unsigned integer value.
#[doc(alias = "MTLDataTypeUInt")]
pub const UInt: Self = Self(33);
/// Represents a data type consisting of a vector of two unsigned integer values.
#[doc(alias = "MTLDataTypeUInt2")]
pub const UInt2: Self = Self(34);
/// Represents a data type consisting of a vector of three unsigned integer values.
#[doc(alias = "MTLDataTypeUInt3")]
pub const UInt3: Self = Self(35);
/// Represents a data type consisting of a vector of four unsigned integer values.
#[doc(alias = "MTLDataTypeUInt4")]
pub const UInt4: Self = Self(36);
/// Represents a data type consisting of a single 16-bit signed integer value.
#[doc(alias = "MTLDataTypeShort")]
pub const Short: Self = Self(37);
/// Represents a data type consisting of a vector of two 16-bit signed integer values.
#[doc(alias = "MTLDataTypeShort2")]
pub const Short2: Self = Self(38);
/// Represents a data type consisting of a vector of three 16-bit signed integer values.
#[doc(alias = "MTLDataTypeShort3")]
pub const Short3: Self = Self(39);
/// Represents a data type consisting of a vector of three 16-bit signed integer values.
#[doc(alias = "MTLDataTypeShort4")]
pub const Short4: Self = Self(40);
/// Represents a data type consisting of a single 16-bit unsigned integer value.
#[doc(alias = "MTLDataTypeUShort")]
pub const UShort: Self = Self(41);
/// Represents a data type consisting of a vector of two 16-bit unsigned integer values.
#[doc(alias = "MTLDataTypeUShort2")]
pub const UShort2: Self = Self(42);
/// Represents a data type consisting of a vector of three 16-bit unsigned integer values.
#[doc(alias = "MTLDataTypeUShort3")]
pub const UShort3: Self = Self(43);
/// Represents a data type consisting of a vector of four 16-bit unsigned integer values.
#[doc(alias = "MTLDataTypeUShort4")]
pub const UShort4: Self = Self(44);
/// Represents a data type consisting of a single signed character value.
#[doc(alias = "MTLDataTypeChar")]
pub const Char: Self = Self(45);
/// Represents a data type consisting of a vector of two signed character values.
#[doc(alias = "MTLDataTypeChar2")]
pub const Char2: Self = Self(46);
/// Represents a data type consisting of a vector of three signed character values.
#[doc(alias = "MTLDataTypeChar3")]
pub const Char3: Self = Self(47);
/// Represents a data type consisting of a vector of four signed character values.
#[doc(alias = "MTLDataTypeChar4")]
pub const Char4: Self = Self(48);
/// Represents a data type consisting of a single unsigned character value.
#[doc(alias = "MTLDataTypeUChar")]
pub const UChar: Self = Self(49);
/// Represents a data type consisting of a vector of two unsigned character values.
#[doc(alias = "MTLDataTypeUChar2")]
pub const UChar2: Self = Self(50);
/// Represents a data type consisting of a vector of three unsigned character values.
#[doc(alias = "MTLDataTypeUChar3")]
pub const UChar3: Self = Self(51);
/// Represents a data type consisting of a vector of four unsigned character values.
#[doc(alias = "MTLDataTypeUChar4")]
pub const UChar4: Self = Self(52);
/// Represents a data type consisting of a single boolean value.
#[doc(alias = "MTLDataTypeBool")]
pub const Bool: Self = Self(53);
/// Represents a data type consisting of a vector of two boolean values.
#[doc(alias = "MTLDataTypeBool2")]
pub const Bool2: Self = Self(54);
/// Represents a data type consisting of a vector of three boolean values.
#[doc(alias = "MTLDataTypeBool3")]
pub const Bool3: Self = Self(55);
/// Represents a data type consisting of a vector of four boolean values.
#[doc(alias = "MTLDataTypeBool4")]
pub const Bool4: Self = Self(56);
/// Represents a data type corresponding to a texture object.
#[doc(alias = "MTLDataTypeTexture")]
pub const Texture: Self = Self(58);
/// Represents a data type corresponding to a sampler state object.
#[doc(alias = "MTLDataTypeSampler")]
pub const Sampler: Self = Self(59);
/// Represents a data type corresponding to a pointer.
#[doc(alias = "MTLDataTypePointer")]
pub const Pointer: Self = Self(60);
/// Represents an image block data type consisting of an unsigned 8-bit red channel normalized to the [0-1] range.
#[doc(alias = "MTLDataTypeR8Unorm")]
pub const R8Unorm: Self = Self(62);
/// Represents an image block data type consisting of an signed 8-bit red channel normalized to the [0-1] range.
#[doc(alias = "MTLDataTypeR8Snorm")]
pub const R8Snorm: Self = Self(63);
/// Represents an image block data type consisting of an unsigned 16-bit red channel normalized to the [0-1] range.
#[doc(alias = "MTLDataTypeR16Unorm")]
pub const R16Unorm: Self = Self(64);
/// Represents an image block data type consisting of a signed 16-bit red channel normalized to the [0-1] range.
#[doc(alias = "MTLDataTypeR16Snorm")]
pub const R16Snorm: Self = Self(65);
/// Represents an image block data type consisting of an unsigned 8-bit red channel and a unsigned 8-bit green channel, both normalized to the [0-1] range.
#[doc(alias = "MTLDataTypeRG8Unorm")]
pub const RG8Unorm: Self = Self(66);
/// Represents an image block data type consisting of a signed 8-bit red channel and a signed 8-bit green channel, both normalized to the [0-1] range.
#[doc(alias = "MTLDataTypeRG8Snorm")]
pub const RG8Snorm: Self = Self(67);
/// Represents an image block data type consisting of an unsigned 16-bit red channel and an unsigned 16-bit green channel, both normalized to the [0-1] range.
#[doc(alias = "MTLDataTypeRG16Unorm")]
pub const RG16Unorm: Self = Self(68);
/// Represents an image block data type consisting of a signed 16-bit red channel and a signed 16-bit green channel, both normalized to the [0-1] range.
#[doc(alias = "MTLDataTypeRG16Snorm")]
pub const RG16Snorm: Self = Self(69);
/// Represents an image block data type consisting of four unsigned 8-bit channels normalized to the [0-1] range.
#[doc(alias = "MTLDataTypeRGBA8Unorm")]
pub const RGBA8Unorm: Self = Self(70);
/// Represents an image block data type consisting of four unsigned 8-bit channels normalized to the [0-1] range and subject to gamma-correction.
#[doc(alias = "MTLDataTypeRGBA8Unorm_sRGB")]
pub const RGBA8Unorm_sRGB: Self = Self(71);
/// Represents an image block data type consisting of four signed 8-bit channels normalized to the [0-1] range.
#[doc(alias = "MTLDataTypeRGBA8Snorm")]
pub const RGBA8Snorm: Self = Self(72);
/// Represents an image block data type consisting of four unsigned 16-bit channels normalized to the [0-1] range.
#[doc(alias = "MTLDataTypeRGBA16Unorm")]
pub const RGBA16Unorm: Self = Self(73);
/// Represents an image block data type consisting of four signed 16-bit channels normalized to the [0-1] range.
#[doc(alias = "MTLDataTypeRGBA16Snorm")]
pub const RGBA16Snorm: Self = Self(74);
/// Represents an image block data type consisting of three unsigned 10-bit channels and one 2-bit unsigned alpha channel, all normalized to the [0-1] range.
#[doc(alias = "MTLDataTypeRGB10A2Unorm")]
pub const RGB10A2Unorm: Self = Self(75);
/// Represents an image block data type consisting of two 11-bit floating-point channels, and one 10-bit floating-point blue channel.
#[doc(alias = "MTLDataTypeRG11B10Float")]
pub const RG11B10Float: Self = Self(76);
/// Represents an image block data type consisting of three 9-bit floating-point channels, and one 5-bit floating-point exponent.
#[doc(alias = "MTLDataTypeRGB9E5Float")]
pub const RGB9E5Float: Self = Self(77);
/// Represents a data type corresponding to a render pipeline state object.
#[doc(alias = "MTLDataTypeRenderPipeline")]
pub const RenderPipeline: Self = Self(78);
/// Represents a data type corresponding to a compute pipeline state object.
#[doc(alias = "MTLDataTypeComputePipeline")]
pub const ComputePipeline: Self = Self(79);
/// Represents a data type corresponding to an indirect command buffer object.
#[doc(alias = "MTLDataTypeIndirectCommandBuffer")]
pub const IndirectCommandBuffer: Self = Self(80);
/// Represents a data type consisting of a signed long integer value.
#[doc(alias = "MTLDataTypeLong")]
pub const Long: Self = Self(81);
/// Represents a data type consisting of a vector of two signed long integer values.
#[doc(alias = "MTLDataTypeLong2")]
pub const Long2: Self = Self(82);
/// Represents a data type consisting of a vector of three signed long integer values.
#[doc(alias = "MTLDataTypeLong3")]
pub const Long3: Self = Self(83);
/// Represents a data type consisting of a vector of four signed long integer values.
#[doc(alias = "MTLDataTypeLong4")]
pub const Long4: Self = Self(84);
/// Represents a data type consisting of an unsigned long integer value.
#[doc(alias = "MTLDataTypeULong")]
pub const ULong: Self = Self(85);
/// Represents a data type consisting of a vector two unsigned long integer values.
#[doc(alias = "MTLDataTypeULong2")]
pub const ULong2: Self = Self(86);
/// Represents a data type consisting of a vector three unsigned long integer values.
#[doc(alias = "MTLDataTypeULong3")]
pub const ULong3: Self = Self(87);
/// Represents a data type consisting of a vector four unsigned long integer values.
#[doc(alias = "MTLDataTypeULong4")]
pub const ULong4: Self = Self(88);
/// Represents a data type corresponding to a visible function table object.
#[doc(alias = "MTLDataTypeVisibleFunctionTable")]
pub const VisibleFunctionTable: Self = Self(115);
/// Represents a data type corresponding to an intersection function table object.
#[doc(alias = "MTLDataTypeIntersectionFunctionTable")]
pub const IntersectionFunctionTable: Self = Self(116);
/// Represents a data type corresponding to a primitive acceleration structure.
#[doc(alias = "MTLDataTypePrimitiveAccelerationStructure")]
pub const PrimitiveAccelerationStructure: Self = Self(117);
/// Represents a data type corresponding to an instance acceleration structure.
#[doc(alias = "MTLDataTypeInstanceAccelerationStructure")]
pub const InstanceAccelerationStructure: Self = Self(118);
/// Represents a data type consisting of a single BFloat value.
#[doc(alias = "MTLDataTypeBFloat")]
pub const BFloat: Self = Self(121);
/// Represents a data type consisting of a vector two BFloat values.
#[doc(alias = "MTLDataTypeBFloat2")]
pub const BFloat2: Self = Self(122);
/// Represents a data type consisting of a vector three BFloat values.
#[doc(alias = "MTLDataTypeBFloat3")]
pub const BFloat3: Self = Self(123);
/// Represents a data type consisting of a vector four BFloat values.
#[doc(alias = "MTLDataTypeBFloat4")]
pub const BFloat4: Self = Self(124);
/// Represents a data type corresponding to a depth-stencil state object.
#[doc(alias = "MTLDataTypeDepthStencilState")]
pub const DepthStencilState: Self = Self(139);
/// Represents a data type corresponding to a machine learning tensor.
#[doc(alias = "MTLDataTypeTensor")]
pub const Tensor: Self = Self(140);
}
unsafe impl Encode for MTLDataType {
const ENCODING: Encoding = NSUInteger::ENCODING;
}
unsafe impl RefEncode for MTLDataType {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}