aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webglrenderingcontext.rs
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2018-09-10 12:43:38 +0200
committerAnthony Ramine <n.oxyde@gmail.com>2018-09-10 12:43:38 +0200
commite1486f7d711f8d6f9a11c7ba863465a6a8e91938 (patch)
tree5da9c4ea088dac581a445583723fab25cb8e1694 /components/script/dom/webglrenderingcontext.rs
parent7e7441749b7b9250776a9c2ea81aa55c1e8f1f26 (diff)
downloadservo-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.rs11
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