objc2_metal/generated/
MTLCounters.rs1use core::ffi::*;
4use core::ptr::NonNull;
5use objc2::__framework_prelude::*;
6use objc2_foundation::*;
7
8use crate::*;
9
10pub type MTLCommonCounter = NSString;
16
17extern "C" {
18 pub static MTLCommonCounterTimestamp: &'static MTLCommonCounter;
20}
21
22extern "C" {
23 pub static MTLCommonCounterTessellationInputPatches: &'static MTLCommonCounter;
25}
26
27extern "C" {
28 pub static MTLCommonCounterVertexInvocations: &'static MTLCommonCounter;
30}
31
32extern "C" {
33 pub static MTLCommonCounterPostTessellationVertexInvocations: &'static MTLCommonCounter;
35}
36
37extern "C" {
38 pub static MTLCommonCounterClipperInvocations: &'static MTLCommonCounter;
40}
41
42extern "C" {
43 pub static MTLCommonCounterClipperPrimitivesOut: &'static MTLCommonCounter;
45}
46
47extern "C" {
48 pub static MTLCommonCounterFragmentInvocations: &'static MTLCommonCounter;
50}
51
52extern "C" {
53 pub static MTLCommonCounterFragmentsPassed: &'static MTLCommonCounter;
55}
56
57extern "C" {
58 pub static MTLCommonCounterComputeKernelInvocations: &'static MTLCommonCounter;
60}
61
62extern "C" {
63 pub static MTLCommonCounterTotalCycles: &'static MTLCommonCounter;
65}
66
67extern "C" {
68 pub static MTLCommonCounterVertexCycles: &'static MTLCommonCounter;
70}
71
72extern "C" {
73 pub static MTLCommonCounterTessellationCycles: &'static MTLCommonCounter;
75}
76
77extern "C" {
78 pub static MTLCommonCounterPostTessellationVertexCycles: &'static MTLCommonCounter;
80}
81
82extern "C" {
83 pub static MTLCommonCounterFragmentCycles: &'static MTLCommonCounter;
85}
86
87extern "C" {
88 pub static MTLCommonCounterRenderTargetWriteCycles: &'static MTLCommonCounter;
90}
91
92pub type MTLCommonCounterSet = NSString;
100
101extern "C" {
102 pub static MTLCommonCounterSetTimestamp: &'static MTLCommonCounterSet;
104}
105
106extern "C" {
107 pub static MTLCommonCounterSetStageUtilization: &'static MTLCommonCounterSet;
109}
110
111extern "C" {
112 pub static MTLCommonCounterSetStatistic: &'static MTLCommonCounterSet;
114}
115
116#[repr(C)]
118#[derive(Clone, Copy, Debug, PartialEq)]
119pub struct MTLCounterResultTimestamp {
120 pub timestamp: u64,
121}
122
123unsafe impl Encode for MTLCounterResultTimestamp {
124 const ENCODING: Encoding = Encoding::Struct("?", &[<u64>::ENCODING]);
125}
126
127unsafe impl RefEncode for MTLCounterResultTimestamp {
128 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
129}
130
131#[repr(C)]
133#[derive(Clone, Copy, Debug, PartialEq)]
134pub struct MTLCounterResultStageUtilization {
135 pub totalCycles: u64,
136 pub vertexCycles: u64,
137 pub tessellationCycles: u64,
138 pub postTessellationVertexCycles: u64,
139 pub fragmentCycles: u64,
140 pub renderTargetCycles: u64,
141}
142
143unsafe impl Encode for MTLCounterResultStageUtilization {
144 const ENCODING: Encoding = Encoding::Struct(
145 "?",
146 &[
147 <u64>::ENCODING,
148 <u64>::ENCODING,
149 <u64>::ENCODING,
150 <u64>::ENCODING,
151 <u64>::ENCODING,
152 <u64>::ENCODING,
153 ],
154 );
155}
156
157unsafe impl RefEncode for MTLCounterResultStageUtilization {
158 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
159}
160
161#[repr(C)]
163#[derive(Clone, Copy, Debug, PartialEq)]
164pub struct MTLCounterResultStatistic {
165 pub tessellationInputPatches: u64,
166 pub vertexInvocations: u64,
167 pub postTessellationVertexInvocations: u64,
168 pub clipperInvocations: u64,
169 pub clipperPrimitivesOut: u64,
170 pub fragmentInvocations: u64,
171 pub fragmentsPassed: u64,
172 pub computeKernelInvocations: u64,
173}
174
175unsafe impl Encode for MTLCounterResultStatistic {
176 const ENCODING: Encoding = Encoding::Struct(
177 "?",
178 &[
179 <u64>::ENCODING,
180 <u64>::ENCODING,
181 <u64>::ENCODING,
182 <u64>::ENCODING,
183 <u64>::ENCODING,
184 <u64>::ENCODING,
185 <u64>::ENCODING,
186 <u64>::ENCODING,
187 ],
188 );
189}
190
191unsafe impl RefEncode for MTLCounterResultStatistic {
192 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
193}
194
195extern_protocol!(
196 pub unsafe trait MTLCounter: NSObjectProtocol + Send + Sync {
200 #[unsafe(method(name))]
201 #[unsafe(method_family = none)]
202 fn name(&self) -> Retained<NSString>;
203 }
204);
205
206extern_protocol!(
207 pub unsafe trait MTLCounterSet: NSObjectProtocol + Send + Sync {
212 #[unsafe(method(name))]
213 #[unsafe(method_family = none)]
214 fn name(&self) -> Retained<NSString>;
215
216 #[unsafe(method(counters))]
222 #[unsafe(method_family = none)]
223 fn counters(&self) -> Retained<NSArray<ProtocolObject<dyn MTLCounter>>>;
224 }
225);
226
227extern_class!(
228 #[unsafe(super(NSObject))]
232 #[derive(Debug, PartialEq, Eq, Hash)]
233 pub struct MTLCounterSampleBufferDescriptor;
234);
235
236extern_conformance!(
237 unsafe impl NSCopying for MTLCounterSampleBufferDescriptor {}
238);
239
240unsafe impl CopyingHelper for MTLCounterSampleBufferDescriptor {
241 type Result = Self;
242}
243
244extern_conformance!(
245 unsafe impl NSObjectProtocol for MTLCounterSampleBufferDescriptor {}
246);
247
248impl MTLCounterSampleBufferDescriptor {
249 extern_methods!(
250 #[unsafe(method(counterSet))]
251 #[unsafe(method_family = none)]
252 pub fn counterSet(&self) -> Option<Retained<ProtocolObject<dyn MTLCounterSet>>>;
253
254 #[unsafe(method(setCounterSet:))]
256 #[unsafe(method_family = none)]
257 pub fn setCounterSet(&self, counter_set: Option<&ProtocolObject<dyn MTLCounterSet>>);
258
259 #[unsafe(method(label))]
260 #[unsafe(method_family = none)]
261 pub fn label(&self) -> Retained<NSString>;
262
263 #[unsafe(method(setLabel:))]
267 #[unsafe(method_family = none)]
268 pub fn setLabel(&self, label: &NSString);
269
270 #[cfg(feature = "MTLResource")]
271 #[unsafe(method(storageMode))]
273 #[unsafe(method_family = none)]
274 pub fn storageMode(&self) -> MTLStorageMode;
275
276 #[cfg(feature = "MTLResource")]
277 #[unsafe(method(setStorageMode:))]
279 #[unsafe(method_family = none)]
280 pub fn setStorageMode(&self, storage_mode: MTLStorageMode);
281
282 #[unsafe(method(sampleCount))]
284 #[unsafe(method_family = none)]
285 pub fn sampleCount(&self) -> NSUInteger;
286
287 #[unsafe(method(setSampleCount:))]
293 #[unsafe(method_family = none)]
294 pub unsafe fn setSampleCount(&self, sample_count: NSUInteger);
295 );
296}
297
298impl MTLCounterSampleBufferDescriptor {
300 extern_methods!(
301 #[unsafe(method(init))]
302 #[unsafe(method_family = init)]
303 pub fn init(this: Allocated<Self>) -> Retained<Self>;
304
305 #[unsafe(method(new))]
306 #[unsafe(method_family = new)]
307 pub fn new() -> Retained<Self>;
308 );
309}
310
311impl DefaultRetained for MTLCounterSampleBufferDescriptor {
312 #[inline]
313 fn default_retained() -> Retained<Self> {
314 Self::new()
315 }
316}
317
318extern_protocol!(
319 pub unsafe trait MTLCounterSampleBuffer: NSObjectProtocol {
324 #[cfg(feature = "MTLDevice")]
325 #[unsafe(method(device))]
327 #[unsafe(method_family = none)]
328 fn device(&self) -> Retained<ProtocolObject<dyn MTLDevice>>;
329
330 #[unsafe(method(label))]
332 #[unsafe(method_family = none)]
333 fn label(&self) -> Retained<NSString>;
334
335 #[unsafe(method(sampleCount))]
336 #[unsafe(method_family = none)]
337 fn sampleCount(&self) -> NSUInteger;
338
339 #[unsafe(method(resolveCounterRange:))]
354 #[unsafe(method_family = none)]
355 unsafe fn resolveCounterRange(&self, range: NSRange) -> Option<Retained<NSData>>;
356 }
357);
358
359extern "C" {
360 pub static MTLCounterErrorDomain: &'static NSErrorDomain;
364}
365
366#[repr(transparent)]
377#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
378pub struct MTLCounterSampleBufferError(pub NSInteger);
379impl MTLCounterSampleBufferError {
380 #[doc(alias = "MTLCounterSampleBufferErrorOutOfMemory")]
381 pub const OutOfMemory: Self = Self(0);
382 #[doc(alias = "MTLCounterSampleBufferErrorInvalid")]
383 pub const Invalid: Self = Self(1);
384 #[doc(alias = "MTLCounterSampleBufferErrorInternal")]
385 pub const Internal: Self = Self(2);
386}
387
388unsafe impl Encode for MTLCounterSampleBufferError {
389 const ENCODING: Encoding = NSInteger::ENCODING;
390}
391
392unsafe impl RefEncode for MTLCounterSampleBufferError {
393 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
394}