From c8360152cd5585d264107fac413c5234ffa93086 Mon Sep 17 00:00:00 2001 From: Kunal Mohan Date: Thu, 30 Jul 2020 21:35:07 +0530 Subject: [PATCH] Replace NonZeroU32 with u32 in TextureViewDescriptor --- wgpu-core/src/device/mod.rs | 29 +++++++++++++---------------- wgpu-types/src/lib.rs | 6 +++--- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/wgpu-core/src/device/mod.rs b/wgpu-core/src/device/mod.rs index 87dd6a0c7e..bfbf70ff59 100644 --- a/wgpu-core/src/device/mod.rs +++ b/wgpu-core/src/device/mod.rs @@ -1008,32 +1008,29 @@ impl Global { let (format, view_kind, range) = match desc { Some(desc) => { let kind = conv::map_texture_view_dimension(desc.dimension); - let required_level_count = - desc.base_mip_level + desc.level_count.map_or(1, |count| count.get()); - let required_layer_count = - desc.base_array_layer + desc.array_layer_count.map_or(1, |count| count.get()); + let reqd_level_count = desc.base_mip_level + desc.level_count.unwrap_or(1); + let reqd_layer_count = desc.base_array_layer + desc.array_layer_count.unwrap_or(1); let level_end = texture.full_range.levels.end; let layer_end = texture.full_range.layers.end; - if required_level_count > level_end as u32 { + if reqd_level_count > level_end as u32 || reqd_level_count == desc.base_mip_level { return Err(CreateTextureViewError::InvalidMipLevelCount { - requested: required_level_count, + requested: reqd_level_count, total: level_end, }); } - if required_layer_count > layer_end as u32 { + if reqd_layer_count > layer_end as u32 || reqd_layer_count == desc.base_array_layer + { return Err(CreateTextureViewError::InvalidArrayLayerCount { - requested: required_layer_count, + requested: reqd_layer_count, total: layer_end, }); }; - let end_level = match desc.level_count { - Some(count) => (desc.base_mip_level + count.get()) as u8, - None => level_end, - }; - let end_layer = match desc.array_layer_count { - Some(count) => (desc.base_array_layer + count.get()) as u16, - None => layer_end, - }; + let end_level = desc + .level_count + .map_or(level_end, |_| reqd_level_count as u8); + let end_layer = desc + .array_layer_count + .map_or(layer_end, |_| reqd_layer_count as u16); let range = hal::image::SubresourceRange { aspects: texture.full_range.aspects, levels: desc.base_mip_level as u8..end_level, diff --git a/wgpu-types/src/lib.rs b/wgpu-types/src/lib.rs index b79855965c..350bb3e5e6 100644 --- a/wgpu-types/src/lib.rs +++ b/wgpu-types/src/lib.rs @@ -10,7 +10,7 @@ #[cfg(feature = "serde")] use serde::{Deserialize, Serialize}; -use std::{borrow::Cow, num::NonZeroU32, ops::Range}; +use std::{borrow::Cow, ops::Range}; pub use into_cow::IntoCow; mod into_cow; @@ -1493,13 +1493,13 @@ pub struct TextureViewDescriptor { /// Mip level count. /// If `Some(count)`, `base_mip_level + count` must be less or equal to underlying texture mip count. /// If `None`, considered to include the rest of the mipmap levels, but at least 1 in total. - pub level_count: Option, + pub level_count: Option, /// Base array layer. pub base_array_layer: u32, /// Layer count. /// If `Some(count)`, `base_array_layer + count` must be less or equal to the underlying array count. /// If `None`, considered to include the rest of the array layers, but at least 1 in total. - pub array_layer_count: Option, + pub array_layer_count: Option, } impl TextureViewDescriptor {