Skip to content

Commit ce36d14

Browse files
committed
vulkan: add new_timeline_semaphore helper, route create_fence through it
1 parent 302be45 commit ce36d14

1 file changed

Lines changed: 19 additions & 6 deletions

File tree

wgpu-hal/src/vulkan/device.rs

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2529,12 +2529,9 @@ impl crate::Device for super::Device {
25292529
self.counters.fences.add(1);
25302530

25312531
Ok(if self.shared.private_caps.timeline_semaphores {
2532-
let mut sem_type_info =
2533-
vk::SemaphoreTypeCreateInfo::default().semaphore_type(vk::SemaphoreType::TIMELINE);
2534-
let vk_info = vk::SemaphoreCreateInfo::default().push_next(&mut sem_type_info);
2535-
let raw = unsafe { self.shared.raw.create_semaphore(&vk_info, None) }
2536-
.map_err(super::map_host_device_oom_err)?;
2537-
2532+
let raw = self
2533+
.shared
2534+
.new_timeline_semaphore(0, "wgpu-hal device fence")?;
25382535
super::Fence::TimelineSemaphore(raw)
25392536
} else {
25402537
super::Fence::FencePool(RwLock::new(super::FencePool {
@@ -3042,6 +3039,22 @@ impl super::DeviceShared {
30423039
}
30433040
}
30443041

3042+
/// Creates a timeline semaphore with the given initial value.
3043+
pub(super) fn new_timeline_semaphore(
3044+
&self,
3045+
initial_value: u64,
3046+
name: &str,
3047+
) -> Result<vk::Semaphore, crate::DeviceError> {
3048+
let mut type_info = vk::SemaphoreTypeCreateInfo::default()
3049+
.semaphore_type(vk::SemaphoreType::TIMELINE)
3050+
.initial_value(initial_value);
3051+
let info = vk::SemaphoreCreateInfo::default().push_next(&mut type_info);
3052+
let semaphore = unsafe { self.raw.create_semaphore(&info, None) }
3053+
.map_err(super::map_host_device_oom_err)?;
3054+
unsafe { self.set_object_name(semaphore, name) };
3055+
Ok(semaphore)
3056+
}
3057+
30453058
pub(super) fn wait_for_fence(
30463059
&self,
30473060
fence: &super::Fence,

0 commit comments

Comments
 (0)