From d2215347fba353391eb6b7280978dc1f9e2da478 Mon Sep 17 00:00:00 2001 From: XiaoPeng Date: Fri, 30 Aug 2024 15:55:43 +0800 Subject: [PATCH] separate is_required_memory_type and has_required_properties --- wgpu-hal/src/vulkan/device.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/wgpu-hal/src/vulkan/device.rs b/wgpu-hal/src/vulkan/device.rs index 415a02cdd82..584a1391d32 100644 --- a/wgpu-hal/src/vulkan/device.rs +++ b/wgpu-hal/src/vulkan/device.rs @@ -692,8 +692,8 @@ impl super::Device { #[cfg(windows)] fn find_memory_type_index( &self, - type_bits: u32, - flags: vk::MemoryPropertyFlags, + type_bits_req: u32, + flags_req: vk::MemoryPropertyFlags, ) -> Option { let mem_properties = unsafe { self.shared @@ -704,7 +704,10 @@ impl super::Device { // https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMemoryProperties.html for (i, mem_ty) in mem_properties.memory_types_as_slice().iter().enumerate() { - if type_bits & (1 << i) != 0 && mem_ty.property_flags & flags == flags { + let types_bits = 1 << i; + let is_required_memory_type = type_bits_req & types_bits != 0; + let has_required_properties = mem_ty.property_flags & flags_req == flags_req; + if is_required_memory_type && has_required_properties { return Some(i); } }