Merge pull request #315 from pcwalton/metal-timing

Reduce timing jitter in the Metal backend
This commit is contained in:
Patrick Walton 2020-05-04 20:01:00 -07:00 committed by GitHub
commit a373a1fbc3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 2 deletions

View File

@ -728,13 +728,15 @@ impl Device for MetalDevice {
let captured_query = query.clone(); let captured_query = query.clone();
let start_block = ConcreteBlock::new(move |_: *mut Object, _: u64| { let start_block = ConcreteBlock::new(move |_: *mut Object, _: u64| {
let start_time = Instant::now();
let mut guard = captured_query.0.mutex.lock().unwrap(); let mut guard = captured_query.0.mutex.lock().unwrap();
guard.start_time = Some(Instant::now()); guard.start_time = Some(start_time);
}); });
let captured_query = query.clone(); let captured_query = query.clone();
let end_block = ConcreteBlock::new(move |_: *mut Object, _: u64| { let end_block = ConcreteBlock::new(move |_: *mut Object, _: u64| {
let end_time = Instant::now();
let mut guard = captured_query.0.mutex.lock().unwrap(); let mut guard = captured_query.0.mutex.lock().unwrap();
guard.end_time = Some(Instant::now()); guard.end_time = Some(end_time);
captured_query.0.cond.notify_all(); captured_query.0.cond.notify_all();
}); });
self.shared_event.notify_listener_at_value(&self.shared_event_listener, self.shared_event.notify_listener_at_value(&self.shared_event_listener,