diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2018-09-10 12:43:38 +0200 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2018-09-10 12:43:38 +0200 |
commit | e1486f7d711f8d6f9a11c7ba863465a6a8e91938 (patch) | |
tree | 5da9c4ea088dac581a445583723fab25cb8e1694 /components/script/dom/webglrenderingcontext.rs | |
parent | 7e7441749b7b9250776a9c2ea81aa55c1e8f1f26 (diff) | |
download | servo-e1486f7d711f8d6f9a11c7ba863465a6a8e91938.tar.gz servo-e1486f7d711f8d6f9a11c7ba863465a6a8e91938.zip |
Reuse input vector for LUMINANCE_ALPHA/HALF_FLOAT
Diffstat (limited to 'components/script/dom/webglrenderingcontext.rs')
-rw-r--r-- | components/script/dom/webglrenderingcontext.rs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index d6e255bcbd0..9b99f598d51 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -4178,12 +4178,13 @@ fn rgba8_image_to_tex_image_data( pixels }, (TexFormat::LuminanceAlpha, TexDataType::HalfFloat) => { - let mut data = Vec::<u8>::with_capacity(pixel_count * 8); - for rgba8 in pixels.chunks(4) { - data.write_u16::<NativeEndian>(f16::from_f32(rgba8[0] as f32).as_bits()).unwrap(); - data.write_u16::<NativeEndian>(f16::from_f32(rgba8[3] as f32).as_bits()).unwrap(); + for rgba8 in pixels.chunks_mut(4) { + let lum = f16::from_f32(rgba8[0] as f32).as_bits(); + let a = f16::from_f32(rgba8[3] as f32).as_bits(); + NativeEndian::write_u16(&mut rgba8[0..2], lum); + NativeEndian::write_u16(&mut rgba8[2..4], a); } - data + pixels }, // Validation should have ensured that we only hit the |