Skip to content

Commit 18d7631

Browse files
committed
[update] the platform dependencies to use reference counter for GPU resources.
1 parent f991c62 commit 18d7631

5 files changed

Lines changed: 11 additions & 6 deletions

File tree

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,15 +77,15 @@ pub enum Command<RenderBackend: gfx_hal::Backend> {
7777
viewports: Vec<ViewPort>,
7878
},
7979
BeginRenderPass {
80-
render_pass: super::render_pass::RenderPass<RenderBackend>,
80+
render_pass: Rc<super::render_pass::RenderPass<RenderBackend>>,
8181
surface: Rc<super::surface::Surface<RenderBackend>>,
8282
frame_buffer: Rc<super::framebuffer::Framebuffer<RenderBackend>>,
8383
viewport: ViewPort,
8484
},
8585
/// Ends a currently active render pass.
8686
EndRenderPass,
8787
AttachGraphicsPipeline {
88-
pipeline: RenderPipeline<RenderBackend>,
88+
pipeline: Rc<RenderPipeline<RenderBackend>>,
8989
},
9090
Draw {
9191
vertices: Range<u32>,
@@ -163,7 +163,7 @@ impl<'command_pool, RenderBackend: gfx_hal::Backend>
163163
),
164164
Command::AttachGraphicsPipeline { pipeline } => {
165165
self.command_buffer.bind_graphics_pipeline(
166-
super::pipeline::internal::pipeline_for(&pipeline),
166+
super::pipeline::internal::pipeline_for(pipeline.as_ref()),
167167
)
168168
}
169169
Command::EndRenderPass => self.command_buffer.end_render_pass(),

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ impl FramebufferBuilder {
5151
) -> Framebuffer<RenderBackend> {
5252
let [width, height] = surface.size().expect("A surface without a swapchain cannot be used in a framebeen configured with a swapchain");
5353
let image =
54-
super::surface::internal::frame_buffer_attachment_from(&surface).unwrap();
54+
super::surface::internal::frame_buffer_attachment_from(surface).unwrap();
5555

5656
let frame_buffer = unsafe {
5757
super::gpu::internal::logical_device_for(gpu)

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ impl<RenderBackend: internal::Backend> RenderPipelineBuilder<RenderBackend> {
108108
}
109109

110110
/// Represents a render capable pipeline for graphical
111+
#[derive(Debug)]
111112
pub struct RenderPipeline<RenderBackend: internal::Backend> {
112113
pipeline_layout: RenderBackend::PipelineLayout,
113114
pipeline: RenderBackend::GraphicsPipeline,

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,7 @@ impl<'builder> RenderPassBuilder<'builder> {
239239
}
240240
}
241241

242+
#[derive(Debug)]
242243
pub struct RenderPass<RenderBackend: gfx_hal::Backend> {
243244
render_pass: RenderBackend::RenderPass,
244245
}

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ pub struct Surface<RenderBackend: gfx_hal::Backend> {
163163
frame_buffer_attachment: Option<gfx_hal::image::FramebufferAttachment>,
164164
}
165165

166-
///
166+
#[derive(Debug)]
167167
pub struct Swapchain {
168168
config: gfx_hal::window::SwapchainConfig,
169169
format: gfx_hal::format::Format,
@@ -184,9 +184,12 @@ impl<RenderBackend: gfx_hal::Backend> Surface<RenderBackend> {
184184
unsafe {
185185
self
186186
.gfx_hal_surface
187-
.configure_swapchain(device, swapchain.config)
187+
.configure_swapchain(device, swapchain.config.clone())
188188
.expect("Failed to configure the swapchain");
189189

190+
self.frame_buffer_attachment =
191+
Some(swapchain.config.framebuffer_attachment());
192+
190193
let image =
191194
match self.gfx_hal_surface.acquire_image(timeout_in_nanoseconds) {
192195
Ok((image, _)) => Some(image),

0 commit comments

Comments
 (0)