From 0837ade0fc92e331761204b537840e8898931e3e Mon Sep 17 00:00:00 2001 From: Antony Date: Tue, 8 Oct 2024 23:43:35 +0100 Subject: [PATCH] Ensure Bevy's rendering byte usage is little-endian (#15750) # Objective - Fixes (partially) #15701. ## Solution - Use little-endian bytes over native-endian bytes where applicable. ## Testing - Ran CI. ## Open Questions - Should we config-gate these for big-endian targets? It looks like there are [very few targets](https://doc.rust-lang.org/nightly/rustc/platform-support.html) that use big-endian. --- crates/bevy_image/src/hdr_texture_loader.rs | 8 ++++---- crates/bevy_image/src/image_texture_conversion.rs | 8 ++++---- crates/bevy_render/src/diagnostic/internal.rs | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/crates/bevy_image/src/hdr_texture_loader.rs b/crates/bevy_image/src/hdr_texture_loader.rs index 24bad7bf5b458..a83575db0bb40 100644 --- a/crates/bevy_image/src/hdr_texture_loader.rs +++ b/crates/bevy_image/src/hdr_texture_loader.rs @@ -54,10 +54,10 @@ impl AssetLoader for HdrTextureLoader { for rgb in image_buffer.pixels() { let alpha = 1.0f32; - rgba_data.extend_from_slice(&rgb.0[0].to_ne_bytes()); - rgba_data.extend_from_slice(&rgb.0[1].to_ne_bytes()); - rgba_data.extend_from_slice(&rgb.0[2].to_ne_bytes()); - rgba_data.extend_from_slice(&alpha.to_ne_bytes()); + rgba_data.extend_from_slice(&rgb.0[0].to_le_bytes()); + rgba_data.extend_from_slice(&rgb.0[1].to_le_bytes()); + rgba_data.extend_from_slice(&rgb.0[2].to_le_bytes()); + rgba_data.extend_from_slice(&alpha.to_le_bytes()); } Ok(Image::new( diff --git a/crates/bevy_image/src/image_texture_conversion.rs b/crates/bevy_image/src/image_texture_conversion.rs index f3a8a2029adfc..f16c93d9a2a4b 100644 --- a/crates/bevy_image/src/image_texture_conversion.rs +++ b/crates/bevy_image/src/image_texture_conversion.rs @@ -119,10 +119,10 @@ impl Image { let b = pixel[2]; let a = 1f32; - local_data.extend_from_slice(&r.to_ne_bytes()); - local_data.extend_from_slice(&g.to_ne_bytes()); - local_data.extend_from_slice(&b.to_ne_bytes()); - local_data.extend_from_slice(&a.to_ne_bytes()); + local_data.extend_from_slice(&r.to_le_bytes()); + local_data.extend_from_slice(&g.to_le_bytes()); + local_data.extend_from_slice(&b.to_le_bytes()); + local_data.extend_from_slice(&a.to_le_bytes()); } data = local_data; diff --git a/crates/bevy_render/src/diagnostic/internal.rs b/crates/bevy_render/src/diagnostic/internal.rs index e023fe9bd2323..872323f80fc2d 100644 --- a/crates/bevy_render/src/diagnostic/internal.rs +++ b/crates/bevy_render/src/diagnostic/internal.rs @@ -474,14 +474,14 @@ impl FrameData { let timestamps = data[..(self.num_timestamps * 8) as usize] .chunks(8) - .map(|v| u64::from_ne_bytes(v.try_into().unwrap())) + .map(|v| u64::from_le_bytes(v.try_into().unwrap())) .collect::>(); let start = self.pipeline_statistics_buffer_offset as usize; let len = (self.num_pipeline_statistics as usize) * 40; let pipeline_statistics = data[start..start + len] .chunks(8) - .map(|v| u64::from_ne_bytes(v.try_into().unwrap())) + .map(|v| u64::from_le_bytes(v.try_into().unwrap())) .collect::>(); let mut diagnostics = Vec::new();