From 8a971fcf2eb8fbe93e5cd3d06ce55ecbb2002f95 Mon Sep 17 00:00:00 2001 From: Dzmitry Malyshau Date: Wed, 21 Jul 2021 12:14:20 -0400 Subject: [PATCH] hal/vk: use actual view usage for imageless framebuffers --- wgpu-hal/src/vulkan/device.rs | 11 +++++++---- wgpu-hal/src/vulkan/mod.rs | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/wgpu-hal/src/vulkan/device.rs b/wgpu-hal/src/vulkan/device.rs index 8333e09652..ffc7f70472 100644 --- a/wgpu-hal/src/vulkan/device.rs +++ b/wgpu-hal/src/vulkan/device.rs @@ -183,7 +183,7 @@ impl super::DeviceShared { .enumerate() .map(|(i, at)| { vk::FramebufferAttachmentImageInfo::builder() - .usage(conv::map_texture_usage(at.texture_usage)) + .usage(conv::map_texture_usage(at.view_usage)) .flags(at.raw_image_flags) .width(e.key().extent.width) .height(e.key().extent.height) @@ -735,12 +735,15 @@ impl crate::Device for super::Device { .subresource_range(conv::map_subresource_range(&desc.range, texture.aspects)); let mut image_view_info; - if self.shared.private_caps.image_view_usage && !desc.usage.is_empty() { + let view_usage = if self.shared.private_caps.image_view_usage && !desc.usage.is_empty() { image_view_info = vk::ImageViewUsageCreateInfo::builder() .usage(conv::map_texture_usage(desc.usage)) .build(); vk_info = vk_info.push_next(&mut image_view_info); - } + desc.usage + } else { + texture.usage + }; let raw = self.shared.raw.create_image_view(&vk_info, None)?; @@ -755,8 +758,8 @@ impl crate::Device for super::Device { } else { raw }, - texture_usage: texture.usage, raw_image_flags: texture.raw_flags, + view_usage, view_format: desc.format, }; diff --git a/wgpu-hal/src/vulkan/mod.rs b/wgpu-hal/src/vulkan/mod.rs index 7818b5460d..cea189198d 100644 --- a/wgpu-hal/src/vulkan/mod.rs +++ b/wgpu-hal/src/vulkan/mod.rs @@ -200,8 +200,8 @@ struct RenderPassKey { struct FramebufferAttachment { /// Can be NULL if the framebuffer is image-less raw: vk::ImageView, - texture_usage: crate::TextureUses, raw_image_flags: vk::ImageCreateFlags, + view_usage: crate::TextureUses, view_format: wgt::TextureFormat, }