From 83bc23206ad0982fcf2bf6c8e7256190dbe148f0 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Mon, 21 Nov 2022 22:09:42 +0100 Subject: works --- vgcodec/src/helper.rs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'vgcodec/src/helper.rs') diff --git a/vgcodec/src/helper.rs b/vgcodec/src/helper.rs index 3aca81d..1d029b8 100644 --- a/vgcodec/src/helper.rs +++ b/vgcodec/src/helper.rs @@ -1,7 +1,15 @@ -use wgpu::{Queue, Texture, Extent3d}; - +use log::info; +use wgpu::{Extent3d, Queue, Texture}; pub fn write_texture(queue: &Queue, target: &Texture, data: &[u8], size: Extent3d) { + info!("uploading texture {size:?} ({} bytes)", data.len()); + + let bytes_per_pixel = std::mem::size_of::() as u32; + let unpadded_bytes_per_row = size.width * bytes_per_pixel; + let align = wgpu::COPY_BYTES_PER_ROW_ALIGNMENT; + let padded_bytes_per_row_padding = (align - unpadded_bytes_per_row % align) % align; + let padded_bytes_per_row = unpadded_bytes_per_row + padded_bytes_per_row_padding; + queue.write_texture( wgpu::ImageCopyTexture { texture: &target, @@ -12,7 +20,7 @@ pub fn write_texture(queue: &Queue, target: &Texture, data: &[u8], size: Extent3 &data, wgpu::ImageDataLayout { offset: 0, - bytes_per_row: Some(std::num::NonZeroU32::try_from((size.width * 4) as u32).unwrap()), + bytes_per_row: Some(std::num::NonZeroU32::try_from(padded_bytes_per_row).unwrap()), rows_per_image: None, }, size, -- cgit v1.2.3-70-g09d2