From 9ff4a00a15ff7afcad12e38705d508e7bc714f85 Mon Sep 17 00:00:00 2001 From: airingdeng Date: Thu, 20 Apr 2023 15:46:02 +0800 Subject: [PATCH 1/8] Updated to wgpu 0.16.0 and wgpu-hal 0.16.0 Rollback TextureSampleType::Float filterable setter Fix Error when using a filterable on a multisample --- crates/bevy_core_pipeline/src/bloom/mod.rs | 3 +-- crates/bevy_pbr/src/prepass/mod.rs | 4 ++-- crates/bevy_pbr/src/render/light.rs | 8 ++++---- crates/bevy_pbr/src/render/mesh.rs | 7 +------ crates/bevy_render/Cargo.toml | 4 ++-- .../bevy_render/src/render_resource/shader.rs | 2 +- .../bevy_render/src/texture/fallback_image.rs | 6 ++---- crates/bevy_render/src/texture/image.rs | 20 +++++++++---------- crates/bevy_render/src/texture/ktx2.rs | 12 +++++------ .../bevy_render/src/view/window/screenshot.rs | 4 ++-- crates/bevy_sprite/src/mesh2d/mesh.rs | 7 +------ crates/bevy_sprite/src/render/mod.rs | 7 +------ 12 files changed, 33 insertions(+), 51 deletions(-) diff --git a/crates/bevy_core_pipeline/src/bloom/mod.rs b/crates/bevy_core_pipeline/src/bloom/mod.rs index 34f615345f742..3e761fbf763e9 100644 --- a/crates/bevy_core_pipeline/src/bloom/mod.rs +++ b/crates/bevy_core_pipeline/src/bloom/mod.rs @@ -30,7 +30,6 @@ use downsampling_pipeline::{ prepare_downsampling_pipeline, BloomDownsamplingPipeline, BloomDownsamplingPipelineIds, BloomUniforms, }; -use std::num::NonZeroU32; use upsampling_pipeline::{ prepare_upsampling_pipeline, BloomUpsamplingPipeline, UpsamplingPipelineIds, }; @@ -310,7 +309,7 @@ impl BloomTexture { fn view(&self, base_mip_level: u32) -> TextureView { self.texture.texture.create_view(&TextureViewDescriptor { base_mip_level, - mip_level_count: NonZeroU32::new(1), + mip_level_count: Some(1u32), ..Default::default() }) } diff --git a/crates/bevy_pbr/src/prepass/mod.rs b/crates/bevy_pbr/src/prepass/mod.rs index 0659f20a3290a..c24eb14335671 100644 --- a/crates/bevy_pbr/src/prepass/mod.rs +++ b/crates/bevy_pbr/src/prepass/mod.rs @@ -561,7 +561,7 @@ pub fn get_bind_group_layout_entries( visibility: ShaderStages::FRAGMENT, ty: BindingType::Texture { multisampled, - sample_type: TextureSampleType::Float { filterable: true }, + sample_type: TextureSampleType::Float { filterable: false }, view_dimension: TextureViewDimension::D2, }, count: None, @@ -572,7 +572,7 @@ pub fn get_bind_group_layout_entries( visibility: ShaderStages::FRAGMENT, ty: BindingType::Texture { multisampled, - sample_type: TextureSampleType::Float { filterable: true }, + sample_type: TextureSampleType::Float { filterable: false }, view_dimension: TextureViewDimension::D2, }, count: None, diff --git a/crates/bevy_pbr/src/render/light.rs b/crates/bevy_pbr/src/render/light.rs index dc28bdfc0690b..c49b0e2efe7e6 100644 --- a/crates/bevy_pbr/src/render/light.rs +++ b/crates/bevy_pbr/src/render/light.rs @@ -32,7 +32,7 @@ use bevy_utils::{ }; use std::{ hash::Hash, - num::{NonZeroU32, NonZeroU64}, + num::{NonZeroU64}, }; #[derive(Debug, Hash, PartialEq, Eq, Clone, SystemSet)] @@ -998,7 +998,7 @@ pub fn prepare_lights( base_mip_level: 0, mip_level_count: None, base_array_layer: (light_index * 6 + face_index) as u32, - array_layer_count: NonZeroU32::new(1), + array_layer_count: Some(1u32), }); let view_light_entity = commands @@ -1060,7 +1060,7 @@ pub fn prepare_lights( base_mip_level: 0, mip_level_count: None, base_array_layer: (num_directional_cascades_enabled + light_index) as u32, - array_layer_count: NonZeroU32::new(1), + array_layer_count: Some(1u32), }); let view_light_entity = commands @@ -1124,7 +1124,7 @@ pub fn prepare_lights( base_mip_level: 0, mip_level_count: None, base_array_layer: directional_depth_texture_array_index, - array_layer_count: NonZeroU32::new(1), + array_layer_count: Some(1u32), }); directional_depth_texture_array_index += 1; diff --git a/crates/bevy_pbr/src/render/mesh.rs b/crates/bevy_pbr/src/render/mesh.rs index 72bc2a5a6e13c..9019d35232e6e 100644 --- a/crates/bevy_pbr/src/render/mesh.rs +++ b/crates/bevy_pbr/src/render/mesh.rs @@ -514,12 +514,7 @@ impl FromWorld for MeshPipeline { &image.data, ImageDataLayout { offset: 0, - bytes_per_row: Some( - std::num::NonZeroU32::new( - image.texture_descriptor.size.width * format_size as u32, - ) - .unwrap(), - ), + bytes_per_row: Some(image.texture_descriptor.size.width * format_size as u32), rows_per_image: None, }, image.texture_descriptor.size, diff --git a/crates/bevy_render/Cargo.toml b/crates/bevy_render/Cargo.toml index e10f7f6da5841..64f81ba705ec1 100644 --- a/crates/bevy_render/Cargo.toml +++ b/crates/bevy_render/Cargo.toml @@ -52,8 +52,8 @@ bevy_tasks = { path = "../bevy_tasks", version = "0.11.0-dev" } image = { version = "0.24", default-features = false } # misc -wgpu = { version = "0.15.0", features = ["spirv"] } -wgpu-hal = "0.15.1" +wgpu = { version = "0.16.0", features = ["spirv"] } +wgpu-hal = "0.16.0" codespan-reporting = "0.11.0" naga = { version = "0.11.0", features = ["glsl-in", "spv-in", "spv-out", "wgsl-in", "wgsl-out"] } serde = { version = "1", features = ["derive"] } diff --git a/crates/bevy_render/src/render_resource/shader.rs b/crates/bevy_render/src/render_resource/shader.rs index a0b874c092f18..302621fae069a 100644 --- a/crates/bevy_render/src/render_resource/shader.rs +++ b/crates/bevy_render/src/render_resource/shader.rs @@ -136,7 +136,7 @@ impl ProcessedShader { }; const CAPABILITIES: &[(Features, Capabilities)] = &[ (Features::PUSH_CONSTANTS, Capabilities::PUSH_CONSTANT), - (Features::SHADER_FLOAT64, Capabilities::FLOAT64), + (Features::SHADER_F64, Capabilities::FLOAT64), ( Features::SHADER_PRIMITIVE_INDEX, Capabilities::PRIMITIVE_INDEX, diff --git a/crates/bevy_render/src/texture/fallback_image.rs b/crates/bevy_render/src/texture/fallback_image.rs index 2ffe5204acb69..f7d7a5df16ceb 100644 --- a/crates/bevy_render/src/texture/fallback_image.rs +++ b/crates/bevy_render/src/texture/fallback_image.rs @@ -1,5 +1,3 @@ -use std::num::NonZeroU32; - use crate::{render_resource::*, texture::DefaultImageSampler}; use bevy_derive::{Deref, DerefMut}; use bevy_ecs::{ @@ -54,7 +52,7 @@ fn fallback_image_new( image.texture_descriptor.usage |= TextureUsages::RENDER_ATTACHMENT; // We can't create textures with data when it's a depth texture or when using multiple samples - let texture = if format.describe().sample_type == TextureSampleType::Depth || samples > 1 { + let texture = if format.sample_type(None) == Some(TextureSampleType::Depth) || samples > 1 { render_device.create_texture(&image.texture_descriptor) } else { render_device.create_texture_with_data(render_queue, &image.texture_descriptor, &image.data) @@ -62,7 +60,7 @@ fn fallback_image_new( let texture_view = texture.create_view(&TextureViewDescriptor { dimension: Some(dimension), - array_layer_count: NonZeroU32::new(extents.depth_or_array_layers), + array_layer_count: Some(extents.depth_or_array_layers), ..TextureViewDescriptor::default() }); let sampler = match image.sampler_descriptor { diff --git a/crates/bevy_render/src/texture/image.rs b/crates/bevy_render/src/texture/image.rs index 9df28d4210349..6dafce0844fc5 100644 --- a/crates/bevy_render/src/texture/image.rs +++ b/crates/bevy_render/src/texture/image.rs @@ -387,15 +387,15 @@ impl Image { /// Whether the texture format is compressed or uncompressed pub fn is_compressed(&self) -> bool { - let format_description = self.texture_descriptor.format.describe(); + let format_description = self.texture_descriptor.format; format_description - .required_features - .contains(wgpu::Features::TEXTURE_COMPRESSION_ASTC_LDR) + .required_features() + .contains(wgpu::Features::TEXTURE_COMPRESSION_ASTC) || format_description - .required_features + .required_features() .contains(wgpu::Features::TEXTURE_COMPRESSION_BC) || format_description - .required_features + .required_features() .contains(wgpu::Features::TEXTURE_COMPRESSION_ETC2) } } @@ -483,9 +483,9 @@ pub trait TextureFormatPixelInfo { impl TextureFormatPixelInfo for TextureFormat { fn pixel_size(&self) -> usize { - let info = self.describe(); - match info.block_dimensions { - (1, 1) => info.block_size.into(), + let info = self; + match info.block_dimensions() { + (1, 1) => (info.block_size(None).unwrap_or_default() as usize).into(), _ => panic!("Using pixel_size for compressed textures is invalid"), } } @@ -569,7 +569,7 @@ bitflags::bitflags! { impl CompressedImageFormats { pub fn from_features(features: wgpu::Features) -> Self { let mut supported_compressed_formats = Self::default(); - if features.contains(wgpu::Features::TEXTURE_COMPRESSION_ASTC_LDR) { + if features.contains(wgpu::Features::TEXTURE_COMPRESSION_ASTC) { supported_compressed_formats |= Self::ASTC_LDR; } if features.contains(wgpu::Features::TEXTURE_COMPRESSION_BC) { @@ -594,7 +594,7 @@ impl CompressedImageFormats { | TextureFormat::Bc5RgUnorm | TextureFormat::Bc5RgSnorm | TextureFormat::Bc6hRgbUfloat - | TextureFormat::Bc6hRgbSfloat + | TextureFormat::Bc6hRgbFloat | TextureFormat::Bc7RgbaUnorm | TextureFormat::Bc7RgbaUnormSrgb => self.contains(CompressedImageFormats::BC), TextureFormat::Etc2Rgb8Unorm diff --git a/crates/bevy_render/src/texture/ktx2.rs b/crates/bevy_render/src/texture/ktx2.rs index 6202df95d5502..3db8312519fcb 100644 --- a/crates/bevy_render/src/texture/ktx2.rs +++ b/crates/bevy_render/src/texture/ktx2.rs @@ -233,12 +233,12 @@ pub fn ktx2_buffer_to_image( } // Reorder data from KTX2 MipXLayerYFaceZ to wgpu LayerYFaceZMipX - let texture_format_info = texture_format.describe(); + let texture_format_info = texture_format; let (block_width_pixels, block_height_pixels) = ( - texture_format_info.block_dimensions.0 as usize, - texture_format_info.block_dimensions.1 as usize, + texture_format_info.block_dimensions().0 as usize, + texture_format_info.block_dimensions().1 as usize, ); - let block_bytes = texture_format_info.block_size as usize; + let block_bytes = texture_format_info.block_size(None).unwrap_or_default() as usize; let mut wgpu_data = vec![Vec::default(); (layer_count * face_count) as usize]; for (level, level_data) in levels.iter().enumerate() { @@ -1037,7 +1037,7 @@ pub fn ktx2_dfd_to_texture_format( if sample_information[0].lower == 0 { TextureFormat::Bc6hRgbUfloat } else { - TextureFormat::Bc6hRgbSfloat + TextureFormat::Bc6hRgbFloat } } Some(ColorModel::BC7) => { @@ -1311,7 +1311,7 @@ pub fn ktx2_format_to_texture_format( ktx2::Format::BC5_UNORM_BLOCK => TextureFormat::Bc5RgUnorm, ktx2::Format::BC5_SNORM_BLOCK => TextureFormat::Bc5RgSnorm, ktx2::Format::BC6H_UFLOAT_BLOCK => TextureFormat::Bc6hRgbUfloat, - ktx2::Format::BC6H_SFLOAT_BLOCK => TextureFormat::Bc6hRgbSfloat, + ktx2::Format::BC6H_SFLOAT_BLOCK => TextureFormat::Bc6hRgbFloat, ktx2::Format::BC7_UNORM_BLOCK | ktx2::Format::BC7_SRGB_BLOCK => { if is_srgb { TextureFormat::Bc7RgbaUnormSrgb diff --git a/crates/bevy_render/src/view/window/screenshot.rs b/crates/bevy_render/src/view/window/screenshot.rs index 2a67f43005a7a..3ddca122568ae 100644 --- a/crates/bevy_render/src/view/window/screenshot.rs +++ b/crates/bevy_render/src/view/window/screenshot.rs @@ -1,4 +1,4 @@ -use std::{borrow::Cow, num::NonZeroU32, path::Path}; +use std::{borrow::Cow, path::Path}; use bevy_app::Plugin; use bevy_asset::{load_internal_asset, HandleUntyped}; @@ -117,7 +117,7 @@ pub(crate) fn layout_data(width: u32, height: u32, format: TextureFormat) -> Ima ImageDataLayout { bytes_per_row: if height > 1 { // 1 = 1 row - NonZeroU32::new(get_aligned_size(width, 1, format.pixel_size() as u32)) + Some(get_aligned_size(width, 1, format.pixel_size() as u32)) } else { None }, diff --git a/crates/bevy_sprite/src/mesh2d/mesh.rs b/crates/bevy_sprite/src/mesh2d/mesh.rs index 070898df554e9..dbbfc1a1093ec 100644 --- a/crates/bevy_sprite/src/mesh2d/mesh.rs +++ b/crates/bevy_sprite/src/mesh2d/mesh.rs @@ -232,12 +232,7 @@ impl FromWorld for Mesh2dPipeline { &image.data, ImageDataLayout { offset: 0, - bytes_per_row: Some( - std::num::NonZeroU32::new( - image.texture_descriptor.size.width * format_size as u32, - ) - .unwrap(), - ), + bytes_per_row: Some(image.texture_descriptor.size.width * format_size as u32), rows_per_image: None, }, image.texture_descriptor.size, diff --git a/crates/bevy_sprite/src/render/mod.rs b/crates/bevy_sprite/src/render/mod.rs index 29f24bf37c0df..d87f58a1c5fb9 100644 --- a/crates/bevy_sprite/src/render/mod.rs +++ b/crates/bevy_sprite/src/render/mod.rs @@ -109,12 +109,7 @@ impl FromWorld for SpritePipeline { &image.data, ImageDataLayout { offset: 0, - bytes_per_row: Some( - std::num::NonZeroU32::new( - image.texture_descriptor.size.width * format_size as u32, - ) - .unwrap(), - ), + bytes_per_row: Some(image.texture_descriptor.size.width * format_size as u32), rows_per_image: None, }, image.texture_descriptor.size, From 7dc2d39fe0c9a670beaa27695e5e9f35ac0cb372 Mon Sep 17 00:00:00 2001 From: airingdeng Date: Thu, 20 Apr 2023 16:58:14 +0800 Subject: [PATCH 2/8] Updated to naga 0.12.0 --- crates/bevy_render/Cargo.toml | 2 +- crates/bevy_render/src/render_resource/shader.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/bevy_render/Cargo.toml b/crates/bevy_render/Cargo.toml index 64f81ba705ec1..1f921ad56f847 100644 --- a/crates/bevy_render/Cargo.toml +++ b/crates/bevy_render/Cargo.toml @@ -55,7 +55,7 @@ image = { version = "0.24", default-features = false } wgpu = { version = "0.16.0", features = ["spirv"] } wgpu-hal = "0.16.0" codespan-reporting = "0.11.0" -naga = { version = "0.11.0", features = ["glsl-in", "spv-in", "spv-out", "wgsl-in", "wgsl-out"] } +naga = { version = "0.12.0", features = ["glsl-in", "spv-in", "spv-out", "wgsl-in", "wgsl-out"] } serde = { version = "1", features = ["derive"] } bitflags = "1.2.1" smallvec = { version = "1.6", features = ["union", "const_generics"] } diff --git a/crates/bevy_render/src/render_resource/shader.rs b/crates/bevy_render/src/render_resource/shader.rs index 302621fae069a..f66de3f2bd4fd 100644 --- a/crates/bevy_render/src/render_resource/shader.rs +++ b/crates/bevy_render/src/render_resource/shader.rs @@ -121,7 +121,7 @@ impl ProcessedShader { // TODO: process macros here ProcessedShader::Wgsl(source) => naga::front::wgsl::parse_str(source)?, ProcessedShader::Glsl(source, shader_stage) => { - let mut parser = naga::front::glsl::Parser::default(); + let mut parser = naga::front::glsl::Frontend::default(); parser .parse(&naga::front::glsl::Options::from(*shader_stage), source) .map_err(ShaderReflectError::GlslParse)? From fad0a775907e6eb30920b4df9641897ab4bf27f0 Mon Sep 17 00:00:00 2001 From: airingdeng Date: Mon, 24 Apr 2023 09:35:48 +0800 Subject: [PATCH 3/8] Updated code format with `cargo fmt` --- crates/bevy_pbr/src/render/light.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/crates/bevy_pbr/src/render/light.rs b/crates/bevy_pbr/src/render/light.rs index c49b0e2efe7e6..1e73198a8744d 100644 --- a/crates/bevy_pbr/src/render/light.rs +++ b/crates/bevy_pbr/src/render/light.rs @@ -30,10 +30,7 @@ use bevy_utils::{ tracing::{error, warn}, HashMap, }; -use std::{ - hash::Hash, - num::{NonZeroU64}, -}; +use std::{hash::Hash, num::NonZeroU64}; #[derive(Debug, Hash, PartialEq, Eq, Clone, SystemSet)] pub enum RenderLightSystems { From 6c59137ffcb5739a98b1975108492b849c663493 Mon Sep 17 00:00:00 2001 From: airingdeng Date: Mon, 24 Apr 2023 09:41:54 +0800 Subject: [PATCH 4/8] Handle the error caused by dds during wgpu upgrade --- crates/bevy_render/src/texture/dds.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/bevy_render/src/texture/dds.rs b/crates/bevy_render/src/texture/dds.rs index bd008a3600fdf..bfedd4b102745 100644 --- a/crates/bevy_render/src/texture/dds.rs +++ b/crates/bevy_render/src/texture/dds.rs @@ -215,7 +215,7 @@ pub fn dds_format_to_texture_format( } DxgiFormat::BC6H_Typeless | DxgiFormat::BC6H_UF16 => TextureFormat::Bc6hRgbUfloat, - DxgiFormat::BC6H_SF16 => TextureFormat::Bc6hRgbSfloat, + DxgiFormat::BC6H_SF16 => TextureFormat::Bc6hRgbFloat, DxgiFormat::BC7_Typeless | DxgiFormat::BC7_UNorm | DxgiFormat::BC7_UNorm_sRGB => { if is_srgb { TextureFormat::Bc7RgbaUnormSrgb From 626a790c04fa805e084fd3a0be30b2d280046cd7 Mon Sep 17 00:00:00 2001 From: airingdeng Date: Tue, 25 Apr 2023 09:37:07 +0800 Subject: [PATCH 5/8] Updated the code for upgrading wgpu according to the suggestion by CR --- crates/bevy_render/src/texture/fallback_image.rs | 2 +- crates/bevy_render/src/texture/ktx2.rs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/bevy_render/src/texture/fallback_image.rs b/crates/bevy_render/src/texture/fallback_image.rs index f7d7a5df16ceb..cb3bec1420f8d 100644 --- a/crates/bevy_render/src/texture/fallback_image.rs +++ b/crates/bevy_render/src/texture/fallback_image.rs @@ -52,7 +52,7 @@ fn fallback_image_new( image.texture_descriptor.usage |= TextureUsages::RENDER_ATTACHMENT; // We can't create textures with data when it's a depth texture or when using multiple samples - let texture = if format.sample_type(None) == Some(TextureSampleType::Depth) || samples > 1 { + let texture = if format.is_depth_stencil_format() || samples > 1 { render_device.create_texture(&image.texture_descriptor) } else { render_device.create_texture_with_data(render_queue, &image.texture_descriptor, &image.data) diff --git a/crates/bevy_render/src/texture/ktx2.rs b/crates/bevy_render/src/texture/ktx2.rs index 3db8312519fcb..087ea74656381 100644 --- a/crates/bevy_render/src/texture/ktx2.rs +++ b/crates/bevy_render/src/texture/ktx2.rs @@ -238,6 +238,7 @@ pub fn ktx2_buffer_to_image( texture_format_info.block_dimensions().0 as usize, texture_format_info.block_dimensions().1 as usize, ); + // Texture is not a depth or stencil format, it is possible to pass `None` and unwrap let block_bytes = texture_format_info.block_size(None).unwrap_or_default() as usize; let mut wgpu_data = vec![Vec::default(); (layer_count * face_count) as usize]; From 5cbe08e455ebe77700819f26fa69bf4cff46aa99 Mon Sep 17 00:00:00 2001 From: airingdeng Date: Tue, 25 Apr 2023 10:27:13 +0800 Subject: [PATCH 6/8] Fix compilation error under basis-universal feature --- crates/bevy_render/src/texture/ktx2.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/crates/bevy_render/src/texture/ktx2.rs b/crates/bevy_render/src/texture/ktx2.rs index 087ea74656381..ad83a2ae62cb8 100644 --- a/crates/bevy_render/src/texture/ktx2.rs +++ b/crates/bevy_render/src/texture/ktx2.rs @@ -154,12 +154,13 @@ pub fn ktx2_buffer_to_image( TranscodeFormat::Uastc(data_format) => { let (transcode_block_format, texture_format) = get_transcoded_formats(supported_compressed_formats, data_format, is_srgb); - let texture_format_info = texture_format.describe(); + let texture_format_info = texture_format; let (block_width_pixels, block_height_pixels) = ( - texture_format_info.block_dimensions.0 as u32, - texture_format_info.block_dimensions.1 as u32, + texture_format_info.block_dimensions().0 as u32, + texture_format_info.block_dimensions().1 as u32, ); - let block_bytes = texture_format_info.block_size as u32; + // Texture is not a depth or stencil format, it is possible to pass `None` and unwrap + let block_bytes = texture_format_info.block_size(None).unwrap_or_default() as u32; let transcoder = LowLevelUastcTranscoder::new(); for (level, level_data) in levels.iter().enumerate() { From bc47618d89fe1589d030fa8e94a68239a9584bec Mon Sep 17 00:00:00 2001 From: airingdeng Date: Tue, 25 Apr 2023 10:35:49 +0800 Subject: [PATCH 7/8] Optimize the code according to the CI prompt --- crates/bevy_render/src/texture/image.rs | 2 +- crates/bevy_render/src/texture/ktx2.rs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/crates/bevy_render/src/texture/image.rs b/crates/bevy_render/src/texture/image.rs index 6dafce0844fc5..b4e0146bf48b1 100644 --- a/crates/bevy_render/src/texture/image.rs +++ b/crates/bevy_render/src/texture/image.rs @@ -485,7 +485,7 @@ impl TextureFormatPixelInfo for TextureFormat { fn pixel_size(&self) -> usize { let info = self; match info.block_dimensions() { - (1, 1) => (info.block_size(None).unwrap_or_default() as usize).into(), + (1, 1) => info.block_size(None).unwrap_or_default() as usize, _ => panic!("Using pixel_size for compressed textures is invalid"), } } diff --git a/crates/bevy_render/src/texture/ktx2.rs b/crates/bevy_render/src/texture/ktx2.rs index ad83a2ae62cb8..bb112ded5ec1e 100644 --- a/crates/bevy_render/src/texture/ktx2.rs +++ b/crates/bevy_render/src/texture/ktx2.rs @@ -156,11 +156,11 @@ pub fn ktx2_buffer_to_image( get_transcoded_formats(supported_compressed_formats, data_format, is_srgb); let texture_format_info = texture_format; let (block_width_pixels, block_height_pixels) = ( - texture_format_info.block_dimensions().0 as u32, - texture_format_info.block_dimensions().1 as u32, + texture_format_info.block_dimensions().0, + texture_format_info.block_dimensions().1, ); // Texture is not a depth or stencil format, it is possible to pass `None` and unwrap - let block_bytes = texture_format_info.block_size(None).unwrap_or_default() as u32; + let block_bytes = texture_format_info.block_size(None).unwrap_or_default(); let transcoder = LowLevelUastcTranscoder::new(); for (level, level_data) in levels.iter().enumerate() { From 639a09a802d90ee5d935410461d72e8bacedd081 Mon Sep 17 00:00:00 2001 From: airingdeng Date: Tue, 25 Apr 2023 17:15:38 +0800 Subject: [PATCH 8/8] Replace unwrap_or_default with unwrap in order to meet error in time --- crates/bevy_render/src/texture/image.rs | 2 +- crates/bevy_render/src/texture/ktx2.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/bevy_render/src/texture/image.rs b/crates/bevy_render/src/texture/image.rs index b4e0146bf48b1..9377631b80776 100644 --- a/crates/bevy_render/src/texture/image.rs +++ b/crates/bevy_render/src/texture/image.rs @@ -485,7 +485,7 @@ impl TextureFormatPixelInfo for TextureFormat { fn pixel_size(&self) -> usize { let info = self; match info.block_dimensions() { - (1, 1) => info.block_size(None).unwrap_or_default() as usize, + (1, 1) => info.block_size(None).unwrap() as usize, _ => panic!("Using pixel_size for compressed textures is invalid"), } } diff --git a/crates/bevy_render/src/texture/ktx2.rs b/crates/bevy_render/src/texture/ktx2.rs index bb112ded5ec1e..41801178de409 100644 --- a/crates/bevy_render/src/texture/ktx2.rs +++ b/crates/bevy_render/src/texture/ktx2.rs @@ -160,7 +160,7 @@ pub fn ktx2_buffer_to_image( texture_format_info.block_dimensions().1, ); // Texture is not a depth or stencil format, it is possible to pass `None` and unwrap - let block_bytes = texture_format_info.block_size(None).unwrap_or_default(); + let block_bytes = texture_format_info.block_size(None).unwrap(); let transcoder = LowLevelUastcTranscoder::new(); for (level, level_data) in levels.iter().enumerate() { @@ -240,7 +240,7 @@ pub fn ktx2_buffer_to_image( texture_format_info.block_dimensions().1 as usize, ); // Texture is not a depth or stencil format, it is possible to pass `None` and unwrap - let block_bytes = texture_format_info.block_size(None).unwrap_or_default() as usize; + let block_bytes = texture_format_info.block_size(None).unwrap() as usize; let mut wgpu_data = vec![Vec::default(); (layer_count * face_count) as usize]; for (level, level_data) in levels.iter().enumerate() {