From 0c8d09effae046f78734de1c7c5e75c66023428c Mon Sep 17 00:00:00 2001 From: Asuro Date: Sat, 13 Mar 2021 20:44:38 +0100 Subject: [PATCH] meep maap --- Cargo.toml | 5 +---- src/vulkan/mod.rs | 21 +++++++++++---------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index a654d27..27e0416 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,7 +22,4 @@ mgf = "1.4.0" [[bin]] name = "converter" -path = "build/converter/src/main.rs" - -[profile.dev.package."*"] -opt-level = 3 \ No newline at end of file +path = "build/converter/src/main.rs" \ No newline at end of file diff --git a/src/vulkan/mod.rs b/src/vulkan/mod.rs index 79e76f0..198f8b0 100644 --- a/src/vulkan/mod.rs +++ b/src/vulkan/mod.rs @@ -447,7 +447,7 @@ impl VulkanRenderer { device.clone(), dimensions, format, - MipmapsCount::Specific(13), + MipmapsCount::Log2, usage, layout, device.active_queue_families(), @@ -456,7 +456,7 @@ impl VulkanRenderer { let init = SubImage::new( Arc::new(initializer), 0, - 13, + image_view.mipmap_levels(), 0, 1, ImageLayout::ShaderReadOnlyOptimal, @@ -464,15 +464,16 @@ impl VulkanRenderer { let mut cbb = AutoCommandBufferBuilder::new(device.clone(), self.queue.family()).unwrap(); - let mut offset: usize = 0; + let mut offset: usize = 128; - for i in 0..13 { + for i in 0..image_view.mipmap_levels() { let mip_size = dimensions.to_image_dimensions().mipmap_dimensions(i).unwrap().width_height_depth(); - println!("Mip level {}, dimensions {:?}", i, mip_size); - // TODO: load sizes from DXT header instead - // 4 bits per pixel in DXT1 -> 1/2 byte - let mip_byte_size = ((mip_size[0] * mip_size[1]) / 2 + 8) as usize; + let block_bytes = 8; + let mip_byte_size = ( + (u32::max(4, mip_size[0]) / 4) + * (u32::max(4, mip_size[1]) / 4) + * block_bytes) as usize; let source = CpuAccessibleBuffer::from_iter( device.clone(), @@ -505,8 +506,8 @@ impl VulkanRenderer { future.flush().unwrap(); let sampler = Sampler::new(device.clone(), Filter::Linear, Filter::Linear, - MipmapMode::Nearest, SamplerAddressMode::Repeat, SamplerAddressMode::Repeat, - SamplerAddressMode::Repeat, 0.0, 1.0, 0.0, 12 as f32).unwrap(); + MipmapMode::Linear, SamplerAddressMode::Repeat, SamplerAddressMode::Repeat, + SamplerAddressMode::Repeat, 0.0, 1.0, 0.0, (image_view.mipmap_levels() - 1) as f32).unwrap(); self.game_data.textures.push(Texture { image: image_view, sampler }); }