objc2_metal/generated/
MTLSampler.rs1use core::ffi::*;
4use core::ptr::NonNull;
5use objc2::__framework_prelude::*;
6use objc2_foundation::*;
7
8use crate::*;
9
10#[repr(transparent)]
21#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
22pub struct MTLSamplerMinMagFilter(pub NSUInteger);
23impl MTLSamplerMinMagFilter {
24 #[doc(alias = "MTLSamplerMinMagFilterNearest")]
25 pub const Nearest: Self = Self(0);
26 #[doc(alias = "MTLSamplerMinMagFilterLinear")]
27 pub const Linear: Self = Self(1);
28}
29
30unsafe impl Encode for MTLSamplerMinMagFilter {
31 const ENCODING: Encoding = NSUInteger::ENCODING;
32}
33
34unsafe impl RefEncode for MTLSamplerMinMagFilter {
35 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
36}
37
38#[repr(transparent)]
43#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
44pub struct MTLSamplerMipFilter(pub NSUInteger);
45impl MTLSamplerMipFilter {
46 #[doc(alias = "MTLSamplerMipFilterNotMipmapped")]
47 pub const NotMipmapped: Self = Self(0);
48 #[doc(alias = "MTLSamplerMipFilterNearest")]
49 pub const Nearest: Self = Self(1);
50 #[doc(alias = "MTLSamplerMipFilterLinear")]
51 pub const Linear: Self = Self(2);
52}
53
54unsafe impl Encode for MTLSamplerMipFilter {
55 const ENCODING: Encoding = NSUInteger::ENCODING;
56}
57
58unsafe impl RefEncode for MTLSamplerMipFilter {
59 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
60}
61
62#[repr(transparent)]
85#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
86pub struct MTLSamplerAddressMode(pub NSUInteger);
87impl MTLSamplerAddressMode {
88 #[doc(alias = "MTLSamplerAddressModeClampToEdge")]
89 pub const ClampToEdge: Self = Self(0);
90 #[doc(alias = "MTLSamplerAddressModeMirrorClampToEdge")]
91 pub const MirrorClampToEdge: Self = Self(1);
92 #[doc(alias = "MTLSamplerAddressModeRepeat")]
93 pub const Repeat: Self = Self(2);
94 #[doc(alias = "MTLSamplerAddressModeMirrorRepeat")]
95 pub const MirrorRepeat: Self = Self(3);
96 #[doc(alias = "MTLSamplerAddressModeClampToZero")]
97 pub const ClampToZero: Self = Self(4);
98 #[doc(alias = "MTLSamplerAddressModeClampToBorderColor")]
99 pub const ClampToBorderColor: Self = Self(5);
100}
101
102unsafe impl Encode for MTLSamplerAddressMode {
103 const ENCODING: Encoding = NSUInteger::ENCODING;
104}
105
106unsafe impl RefEncode for MTLSamplerAddressMode {
107 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
108}
109
110#[repr(transparent)]
124#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
125pub struct MTLSamplerBorderColor(pub NSUInteger);
126impl MTLSamplerBorderColor {
127 #[doc(alias = "MTLSamplerBorderColorTransparentBlack")]
128 pub const TransparentBlack: Self = Self(0);
129 #[doc(alias = "MTLSamplerBorderColorOpaqueBlack")]
130 pub const OpaqueBlack: Self = Self(1);
131 #[doc(alias = "MTLSamplerBorderColorOpaqueWhite")]
132 pub const OpaqueWhite: Self = Self(2);
133}
134
135unsafe impl Encode for MTLSamplerBorderColor {
136 const ENCODING: Encoding = NSUInteger::ENCODING;
137}
138
139unsafe impl RefEncode for MTLSamplerBorderColor {
140 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
141}
142
143#[repr(transparent)]
148#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
149pub struct MTLSamplerReductionMode(pub NSUInteger);
150impl MTLSamplerReductionMode {
151 #[doc(alias = "MTLSamplerReductionModeWeightedAverage")]
153 pub const WeightedAverage: Self = Self(0);
154 #[doc(alias = "MTLSamplerReductionModeMinimum")]
156 pub const Minimum: Self = Self(1);
157 #[doc(alias = "MTLSamplerReductionModeMaximum")]
159 pub const Maximum: Self = Self(2);
160}
161
162unsafe impl Encode for MTLSamplerReductionMode {
163 const ENCODING: Encoding = NSUInteger::ENCODING;
164}
165
166unsafe impl RefEncode for MTLSamplerReductionMode {
167 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
168}
169
170extern_class!(
171 #[unsafe(super(NSObject))]
175 #[derive(Debug, PartialEq, Eq, Hash)]
176 pub struct MTLSamplerDescriptor;
177);
178
179extern_conformance!(
180 unsafe impl NSCopying for MTLSamplerDescriptor {}
181);
182
183unsafe impl CopyingHelper for MTLSamplerDescriptor {
184 type Result = Self;
185}
186
187extern_conformance!(
188 unsafe impl NSObjectProtocol for MTLSamplerDescriptor {}
189);
190
191impl MTLSamplerDescriptor {
192 extern_methods!(
193 #[unsafe(method(minFilter))]
197 #[unsafe(method_family = none)]
198 pub fn minFilter(&self) -> MTLSamplerMinMagFilter;
199
200 #[unsafe(method(setMinFilter:))]
202 #[unsafe(method_family = none)]
203 pub fn setMinFilter(&self, min_filter: MTLSamplerMinMagFilter);
204
205 #[unsafe(method(magFilter))]
209 #[unsafe(method_family = none)]
210 pub fn magFilter(&self) -> MTLSamplerMinMagFilter;
211
212 #[unsafe(method(setMagFilter:))]
214 #[unsafe(method_family = none)]
215 pub fn setMagFilter(&self, mag_filter: MTLSamplerMinMagFilter);
216
217 #[unsafe(method(mipFilter))]
221 #[unsafe(method_family = none)]
222 pub fn mipFilter(&self) -> MTLSamplerMipFilter;
223
224 #[unsafe(method(setMipFilter:))]
226 #[unsafe(method_family = none)]
227 pub fn setMipFilter(&self, mip_filter: MTLSamplerMipFilter);
228
229 #[unsafe(method(maxAnisotropy))]
233 #[unsafe(method_family = none)]
234 pub fn maxAnisotropy(&self) -> NSUInteger;
235
236 #[unsafe(method(setMaxAnisotropy:))]
238 #[unsafe(method_family = none)]
239 pub fn setMaxAnisotropy(&self, max_anisotropy: NSUInteger);
240
241 #[unsafe(method(sAddressMode))]
243 #[unsafe(method_family = none)]
244 pub fn sAddressMode(&self) -> MTLSamplerAddressMode;
245
246 #[unsafe(method(setSAddressMode:))]
248 #[unsafe(method_family = none)]
249 pub fn setSAddressMode(&self, s_address_mode: MTLSamplerAddressMode);
250
251 #[unsafe(method(tAddressMode))]
253 #[unsafe(method_family = none)]
254 pub fn tAddressMode(&self) -> MTLSamplerAddressMode;
255
256 #[unsafe(method(setTAddressMode:))]
258 #[unsafe(method_family = none)]
259 pub fn setTAddressMode(&self, t_address_mode: MTLSamplerAddressMode);
260
261 #[unsafe(method(rAddressMode))]
263 #[unsafe(method_family = none)]
264 pub fn rAddressMode(&self) -> MTLSamplerAddressMode;
265
266 #[unsafe(method(setRAddressMode:))]
268 #[unsafe(method_family = none)]
269 pub fn setRAddressMode(&self, r_address_mode: MTLSamplerAddressMode);
270
271 #[unsafe(method(borderColor))]
273 #[unsafe(method_family = none)]
274 pub fn borderColor(&self) -> MTLSamplerBorderColor;
275
276 #[unsafe(method(setBorderColor:))]
278 #[unsafe(method_family = none)]
279 pub fn setBorderColor(&self, border_color: MTLSamplerBorderColor);
280
281 #[unsafe(method(reductionMode))]
290 #[unsafe(method_family = none)]
291 pub fn reductionMode(&self) -> MTLSamplerReductionMode;
292
293 #[unsafe(method(setReductionMode:))]
295 #[unsafe(method_family = none)]
296 pub fn setReductionMode(&self, reduction_mode: MTLSamplerReductionMode);
297
298 #[unsafe(method(normalizedCoordinates))]
302 #[unsafe(method_family = none)]
303 pub fn normalizedCoordinates(&self) -> bool;
304
305 #[unsafe(method(setNormalizedCoordinates:))]
307 #[unsafe(method_family = none)]
308 pub fn setNormalizedCoordinates(&self, normalized_coordinates: bool);
309
310 #[unsafe(method(lodMinClamp))]
314 #[unsafe(method_family = none)]
315 pub fn lodMinClamp(&self) -> c_float;
316
317 #[unsafe(method(setLodMinClamp:))]
319 #[unsafe(method_family = none)]
320 pub fn setLodMinClamp(&self, lod_min_clamp: c_float);
321
322 #[unsafe(method(lodMaxClamp))]
326 #[unsafe(method_family = none)]
327 pub fn lodMaxClamp(&self) -> c_float;
328
329 #[unsafe(method(setLodMaxClamp:))]
331 #[unsafe(method_family = none)]
332 pub fn setLodMaxClamp(&self, lod_max_clamp: c_float);
333
334 #[unsafe(method(lodAverage))]
338 #[unsafe(method_family = none)]
339 pub fn lodAverage(&self) -> bool;
340
341 #[unsafe(method(setLodAverage:))]
343 #[unsafe(method_family = none)]
344 pub fn setLodAverage(&self, lod_average: bool);
345
346 #[unsafe(method(lodBias))]
351 #[unsafe(method_family = none)]
352 pub fn lodBias(&self) -> c_float;
353
354 #[unsafe(method(setLodBias:))]
356 #[unsafe(method_family = none)]
357 pub fn setLodBias(&self, lod_bias: c_float);
358
359 #[cfg(feature = "MTLDepthStencil")]
360 #[unsafe(method(compareFunction))]
362 #[unsafe(method_family = none)]
363 pub fn compareFunction(&self) -> MTLCompareFunction;
364
365 #[cfg(feature = "MTLDepthStencil")]
366 #[unsafe(method(setCompareFunction:))]
368 #[unsafe(method_family = none)]
369 pub fn setCompareFunction(&self, compare_function: MTLCompareFunction);
370
371 #[unsafe(method(supportArgumentBuffers))]
373 #[unsafe(method_family = none)]
374 pub fn supportArgumentBuffers(&self) -> bool;
375
376 #[unsafe(method(setSupportArgumentBuffers:))]
378 #[unsafe(method_family = none)]
379 pub fn setSupportArgumentBuffers(&self, support_argument_buffers: bool);
380
381 #[unsafe(method(label))]
383 #[unsafe(method_family = none)]
384 pub fn label(&self) -> Option<Retained<NSString>>;
385
386 #[unsafe(method(setLabel:))]
390 #[unsafe(method_family = none)]
391 pub fn setLabel(&self, label: Option<&NSString>);
392 );
393}
394
395impl MTLSamplerDescriptor {
397 extern_methods!(
398 #[unsafe(method(init))]
399 #[unsafe(method_family = init)]
400 pub fn init(this: Allocated<Self>) -> Retained<Self>;
401
402 #[unsafe(method(new))]
403 #[unsafe(method_family = new)]
404 pub fn new() -> Retained<Self>;
405 );
406}
407
408impl DefaultRetained for MTLSamplerDescriptor {
409 #[inline]
410 fn default_retained() -> Retained<Self> {
411 Self::new()
412 }
413}
414
415extern_protocol!(
416 pub unsafe trait MTLSamplerState: NSObjectProtocol + Send + Sync {
420 #[unsafe(method(label))]
422 #[unsafe(method_family = none)]
423 fn label(&self) -> Option<Retained<NSString>>;
424
425 #[cfg(feature = "MTLDevice")]
426 #[unsafe(method(device))]
428 #[unsafe(method_family = none)]
429 fn device(&self) -> Retained<ProtocolObject<dyn MTLDevice>>;
430
431 #[cfg(feature = "MTLTypes")]
432 #[unsafe(method(gpuResourceID))]
434 #[unsafe(method_family = none)]
435 fn gpuResourceID(&self) -> MTLResourceID;
436 }
437);