Skip to content

Commit ae17b07

Browse files
committed
Add CounterSampleBuffer::resolve_counter_range
1 parent 8c92db7 commit ae17b07

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

src/counters.rs

+18-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
use crate::MTLStorageMode;
1+
use crate::{MTLStorageMode, NSUInteger};
2+
use std::mem;
23

34
/// See <https://developer.apple.com/documentation/metal/mtlcountersamplebufferdescriptor>
45
pub enum MTLCounterSampleBufferDescriptor {}
@@ -63,6 +64,22 @@ foreign_obj_type! {
6364
pub struct CounterSampleBuffer;
6465
}
6566

67+
impl CounterSampleBufferRef {
68+
pub fn sample_count(&self) -> u64 {
69+
unsafe { msg_send![self, sampleCount] }
70+
}
71+
72+
pub fn resolve_counter_range(&self, range: crate::NSRange) -> Vec<NSUInteger> {
73+
let mut data = vec![0 as NSUInteger; range.length as usize];
74+
let total_bytes = range.length * mem::size_of::<NSUInteger>() as u64;
75+
unsafe {
76+
let ns_data: *mut crate::Object = msg_send![self, resolveCounterRange: range];
77+
let () = msg_send![ns_data, getBytes: data.as_mut_ptr() length: total_bytes];
78+
}
79+
data
80+
}
81+
}
82+
6683
/// See <https://developer.apple.com/documentation/metal/mtlcounter>
6784
pub enum MTLCounter {}
6885

0 commit comments

Comments
 (0)