Skip to content

Commit d416245

Browse files
committed
[update] fence implementation.
1 parent 2b5623a commit d416245

2 files changed

Lines changed: 24 additions & 20 deletions

File tree

crates/lambda-platform/src/gfx/fence.rs

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,20 @@ impl<RenderBackend: gfx_hal::Backend> RenderSemaphore<RenderBackend> {
4444
}
4545
}
4646

47+
impl<RenderBackend: gfx_hal::Backend> RenderSemaphore<RenderBackend> {
48+
/// Retrieve a reference to the internal semaphore.
49+
pub(super) fn internal_semaphore(&self) -> &RenderBackend::Semaphore {
50+
return &self.semaphore;
51+
}
52+
53+
/// Retrieve a mutable reference to the internal semaphore.
54+
pub(super) fn internal_semaphore_mut(
55+
&mut self,
56+
) -> &mut RenderBackend::Semaphore {
57+
return &mut self.semaphore;
58+
}
59+
}
60+
4761
pub struct RenderSubmissionFenceBuilder {
4862
default_render_timeout: u64,
4963
}
@@ -118,24 +132,14 @@ impl<RenderBackend: gfx_hal::Backend> RenderSubmissionFence<RenderBackend> {
118132
}
119133
}
120134

121-
pub(crate) mod internal {
122-
/// Retrieve the underlying submission fence.
123-
pub fn mutable_fence_for<RenderBackend: gfx_hal::Backend>(
124-
fence: &mut super::RenderSubmissionFence<RenderBackend>,
125-
) -> &mut RenderBackend::Fence {
126-
return &mut fence.fence;
127-
}
128-
129-
/// Retrieve the underlying semaphore.
130-
pub fn mutable_semaphore_for<RenderBackend: gfx_hal::Backend>(
131-
semaphore: &mut super::RenderSemaphore<RenderBackend>,
132-
) -> &mut RenderBackend::Semaphore {
133-
return &mut semaphore.semaphore;
135+
impl<RenderBackend: gfx_hal::Backend> RenderSubmissionFence<RenderBackend> {
136+
/// Retrieve the underlying fence.
137+
pub fn internal_fence(&self) -> &RenderBackend::Fence {
138+
return &self.fence;
134139
}
135140

136-
pub fn semaphore_for<RenderBackend: gfx_hal::Backend>(
137-
semaphore: &super::RenderSemaphore<RenderBackend>,
138-
) -> &RenderBackend::Semaphore {
139-
return &semaphore.semaphore;
141+
/// Retrieve a mutable reference to the underlying fence.
142+
pub fn internal_fence_mut(&mut self) -> &mut RenderBackend::Fence {
143+
return &mut self.fence;
140144
}
141145
}

crates/lambda-platform/src/gfx/gpu.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,9 @@ impl<RenderBackend: gfx_hal::Backend> Gpu<RenderBackend> {
145145
// TODO(vmarcella): This was needed to allow the push constants to
146146
// properly render to the screen. Look into a better way to do this.
147147
signal_semaphores.into_iter().map(|semaphore| {
148-
return super::fence::internal::semaphore_for(semaphore);
148+
return semaphore.internal_semaphore();
149149
}),
150-
Some(super::fence::internal::mutable_fence_for(fence)),
150+
Some(fence.internal_fence_mut()),
151151
);
152152
}
153153
}
@@ -165,7 +165,7 @@ impl<RenderBackend: gfx_hal::Backend> Gpu<RenderBackend> {
165165
self.queue_group.queues[0].present(
166166
render_surface,
167167
render_image,
168-
Some(super::fence::internal::mutable_semaphore_for(semaphore)),
168+
Some(semaphore.internal_semaphore_mut()),
169169
)
170170
};
171171

0 commit comments

Comments
 (0)