Skip to content

Commit da8ff2a

Browse files
committed
[vk] fix raw_pass not being part of FramebufferKey
1 parent d4b46d6 commit da8ff2a

File tree

3 files changed

+11
-15
lines changed

3 files changed

+11
-15
lines changed

wgpu-hal/src/vulkan/command.rs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -714,11 +714,16 @@ impl crate::CommandEncoder for super::CommandEncoder {
714714
) -> Result<(), crate::DeviceError> {
715715
let mut vk_clear_values =
716716
ArrayVec::<vk::ClearValue, { super::MAX_TOTAL_ATTACHMENTS }>::new();
717-
let mut rp_key = super::RenderPassKey::default();
717+
let mut rp_key = super::RenderPassKey {
718+
colors: ArrayVec::default(),
719+
depth_stencil: None,
720+
sample_count: desc.sample_count,
721+
multiview: desc.multiview,
722+
};
718723
let mut fb_key = super::FramebufferKey {
724+
raw_pass: vk::RenderPass::null(),
719725
attachments: ArrayVec::default(),
720726
extent: desc.extent,
721-
sample_count: desc.sample_count,
722727
};
723728
let caps = &self.device.private_caps;
724729

@@ -772,8 +777,6 @@ impl crate::CommandEncoder for super::CommandEncoder {
772777
assert_eq!(ds.target.view.layers, multiview);
773778
}
774779
}
775-
rp_key.sample_count = fb_key.sample_count;
776-
rp_key.multiview = desc.multiview;
777780

778781
let render_area = vk::Rect2D {
779782
offset: vk::Offset2D { x: 0, y: 0 },
@@ -792,10 +795,8 @@ impl crate::CommandEncoder for super::CommandEncoder {
792795
}];
793796

794797
let raw_pass = self.device.make_render_pass(rp_key).unwrap();
795-
let raw_framebuffer = self
796-
.device
797-
.make_framebuffer(fb_key, raw_pass, desc.label)
798-
.unwrap();
798+
fb_key.raw_pass = raw_pass;
799+
let raw_framebuffer = self.device.make_framebuffer(fb_key).unwrap();
799800

800801
let vk_info = vk::RenderPassBeginInfo::default()
801802
.render_pass(raw_pass)

wgpu-hal/src/vulkan/device.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -205,23 +205,18 @@ impl super::DeviceShared {
205205
pub fn make_framebuffer(
206206
&self,
207207
key: super::FramebufferKey,
208-
raw_pass: vk::RenderPass,
209-
pass_label: crate::Label,
210208
) -> Result<vk::Framebuffer, crate::DeviceError> {
211209
Ok(match self.framebuffers.lock().entry(key) {
212210
Entry::Occupied(e) => *e.get(),
213211
Entry::Vacant(e) => {
214212
let vk_info = vk::FramebufferCreateInfo::default()
215-
.render_pass(raw_pass)
213+
.render_pass(e.key().raw_pass)
216214
.width(e.key().extent.width)
217215
.height(e.key().extent.height)
218216
.layers(e.key().extent.depth_or_array_layers)
219217
.attachments(&e.key().attachments);
220218

221219
let raw = unsafe { self.raw.create_framebuffer(&vk_info, None).unwrap() };
222-
if let Some(label) = pass_label {
223-
unsafe { self.set_object_name(raw, label) };
224-
}
225220
*e.insert(raw)
226221
}
227222
})

wgpu-hal/src/vulkan/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -604,9 +604,9 @@ struct RenderPassKey {
604604

605605
#[derive(Clone, Eq, Hash, PartialEq)]
606606
struct FramebufferKey {
607+
raw_pass: vk::RenderPass,
607608
attachments: ArrayVec<vk::ImageView, { MAX_TOTAL_ATTACHMENTS }>,
608609
extent: wgt::Extent3d,
609-
sample_count: u32,
610610
}
611611

612612
struct DeviceShared {

0 commit comments

Comments
 (0)