From 9601c51172c63c33455a383922a0620a9ee1b9df Mon Sep 17 00:00:00 2001 From: Chance Date: Mon, 21 Apr 2025 16:08:31 -0400 Subject: [PATCH] no zip compression --- .forgejo/workflows/build-release.yml | 3 ++- src/main.rs | 3 ++- src/texture.rs | 30 +++++++++++++++++++--------- subcrates/zlog/src/lib.rs | 1 + subcrates/zlog/src/tests.rs | 4 ++-- 5 files changed, 28 insertions(+), 13 deletions(-) diff --git a/.forgejo/workflows/build-release.yml b/.forgejo/workflows/build-release.yml index 5ef6aba..3688af2 100644 --- a/.forgejo/workflows/build-release.yml +++ b/.forgejo/workflows/build-release.yml @@ -161,4 +161,5 @@ jobs: uses: https://code.forgejo.org/forgejo/upload-artifact@v4 with: name: ${{ matrix.binary_name }}.zip - path: artifacts \ No newline at end of file + path: artifacts + compression-level: 0 \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index b424169..c8df33a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -309,7 +309,8 @@ impl WgpuState { &queue, &texture_bind_group_layout, ); - let checkerboard_img = crate::texture::create_checkerboard(); + use tracing::Instrument; + let checkerboard_img = crate::texture::get_checkerboard(); let checkerboard_texture = texture::Texture::from_image(&device, &queue, &checkerboard_img, Some("checkerboard")) .unwrap(); diff --git a/src/texture.rs b/src/texture.rs index f5aaab1..f649bc8 100644 --- a/src/texture.rs +++ b/src/texture.rs @@ -1,4 +1,6 @@ -use image::GenericImageView; +use std::sync::OnceLock; + +use image::{DynamicImage, GenericImageView, RgbaImage}; use thiserror::Error; #[derive(Debug, Error)] pub enum TextureError { @@ -16,6 +18,7 @@ pub struct Texture { pub sampler: wgpu::Sampler, } impl Texture { + pub fn from_bytes( device: &wgpu::Device, queue: &wgpu::Queue, @@ -85,24 +88,33 @@ impl Texture { }) } } - -pub fn create_checkerboard() -> image::DynamicImage { - let size = 512; - let tile_size = 24; - let mut img = image::RgbaImage::new(size, size); +static CHECKERBOARD_IMAGE: OnceLock = OnceLock::new(); +pub fn create_checkerboard(size: u32, tile_size: u32) -> DynamicImage { + let mut img = RgbaImage::new(size, size); + let pixels = img.as_mut(); + let bytes_per_pixel = 4; // RGBA for y in 0..size { + let tile_y = y / tile_size; for x in 0..size { let tile_x = x / tile_size; - let tile_y = y / tile_size; let color = if (tile_x + tile_y) % 2 == 0 { - [0, 0, 0, 255] + [0, 0, 0, 255] } else { [255, 5, 255, 255] }; - img.put_pixel(x, y, image::Rgba(color)); + let pixel_index = (y * size + x) as usize * bytes_per_pixel; + pixels[pixel_index..pixel_index + bytes_per_pixel].copy_from_slice(&color); } } image::DynamicImage::ImageRgba8(img) } +#[tracing::instrument] +pub fn get_checkerboard() -> &'static DynamicImage { + CHECKERBOARD_IMAGE.get_or_init(|| { + let size = 512; + let tile_size = 24; + create_checkerboard(size, tile_size) + }) +} diff --git a/subcrates/zlog/src/lib.rs b/subcrates/zlog/src/lib.rs index e6b64a4..648b8fb 100644 --- a/subcrates/zlog/src/lib.rs +++ b/subcrates/zlog/src/lib.rs @@ -101,6 +101,7 @@ where fn on_event(&self, event: &Event<'_>, _ctx: Context<'_, S>) { let metadata = event.metadata(); let level = *metadata.level(); + let name = metadata.name(); let timestamp = SystemTime::now(); #[cfg(feature = "json")] let additional_fields = serde_json::Map::new(); diff --git a/subcrates/zlog/src/tests.rs b/subcrates/zlog/src/tests.rs index 13c90ab..d519b88 100644 --- a/subcrates/zlog/src/tests.rs +++ b/subcrates/zlog/src/tests.rs @@ -50,7 +50,7 @@ fn test_logger_sequential_consistency() { log.level, expected_level, "Log {} has incorrect level: {:?}", i, log.level - ); + ); let expected_msg = match expected_level { Level::ERROR => format!("Error message {}", expected_count), @@ -61,7 +61,7 @@ fn test_logger_sequential_consistency() { }; assert_eq!( - log.message, expected_msg, + log.message, expected_msg, "Log {} has incorrect message. Expected: '{}', Got: '{}'", i, expected_msg, log.message );