Remove typedarray_elem_siz (#35022)

Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
This commit is contained in:
Taym Haddadi 2025-01-16 17:27:41 +01:00 committed by GitHub
parent b92a598e62
commit 7e7792dfbd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -111,19 +111,6 @@ pub(crate) struct WebGL2RenderingContext {
default_fb_drawbuffer: Cell<u32>,
}
// TODO: This should be in mozjs
// upstream: https://searchfox.org/mozilla-central/source/js/public/ScalarType.h#66
fn typedarray_elem_size(typeid: Type) -> usize {
match typeid {
Type::Int8 | Type::Uint8 | Type::Uint8Clamped => 1,
Type::Int16 | Type::Uint16 | Type::Float16 => 2,
Type::Int32 | Type::Uint32 | Type::Float32 => 4,
Type::Int64 | Type::Float64 => 8,
Type::BigInt64 | Type::BigUint64 => 8,
Type::Simd128 | Type::MaxTypedArrayViewType => unreachable!(),
}
}
struct ReadPixelsAllowedFormats<'a> {
array_types: &'a [Type],
channels: usize,
@ -491,7 +478,7 @@ impl WebGL2RenderingContext {
}
let dst_byte_offset = {
let dst_elem_size = typedarray_elem_size(dst.get_array_type());
let dst_elem_size = dst.get_array_type().byte_size().unwrap();
dst_elem_offset as usize * dst_elem_size
};
if dst_byte_offset > dst.len() {
@ -513,7 +500,7 @@ impl WebGL2RenderingContext {
return self.base.webgl_error(InvalidOperation);
}
let bytes_per_pixel = typedarray_elem_size(dst_array_type) * channels;
let bytes_per_pixel = dst_array_type.byte_size().unwrap() * channels;
let ReadPixelsSizes {
row_stride,
skipped_bytes,
@ -1369,7 +1356,7 @@ impl WebGL2RenderingContextMethods<crate::DomTypeHolder> for WebGL2RenderingCont
let bound_buffer =
handle_potential_webgl_error!(self.base, bound_buffer.ok_or(InvalidOperation), return);
let elem_size = typedarray_elem_size(data.get_array_type());
let elem_size = data.get_array_type().byte_size().unwrap();
let elem_count = data.len() / elem_size;
let elem_offset = elem_offset as usize;
let byte_offset = elem_offset * elem_size;
@ -1420,7 +1407,7 @@ impl WebGL2RenderingContextMethods<crate::DomTypeHolder> for WebGL2RenderingCont
let bound_buffer =
handle_potential_webgl_error!(self.base, bound_buffer.ok_or(InvalidOperation), return);
let src_elem_size = typedarray_elem_size(src_data.get_array_type());
let src_elem_size = src_data.get_array_type().byte_size().unwrap();
let src_elem_count = src_data.len() / src_elem_size;
let src_elem_offset = src_elem_offset as usize;
let src_byte_offset = src_elem_offset * src_elem_size;
@ -1528,7 +1515,7 @@ impl WebGL2RenderingContextMethods<crate::DomTypeHolder> for WebGL2RenderingCont
let bound_buffer =
handle_potential_webgl_error!(self.base, bound_buffer.ok_or(InvalidOperation), return);
let dst_elem_size = typedarray_elem_size(dst_buffer.get_array_type());
let dst_elem_size = dst_buffer.get_array_type().byte_size().unwrap();
let dst_elem_count = dst_buffer.len() / dst_elem_size;
let dst_elem_offset = dst_elem_offset as usize;
let dst_byte_offset = dst_elem_offset * dst_elem_size;
@ -3210,7 +3197,7 @@ impl WebGL2RenderingContextMethods<crate::DomTypeHolder> for WebGL2RenderingCont
let unpacking_alignment = self.base.texture_unpacking_alignment();
let src_elem_size = typedarray_elem_size(src_data.get_array_type());
let src_elem_size = src_data.get_array_type().byte_size().unwrap();
let src_byte_offset = src_offset as usize * src_elem_size;
if src_data.len() <= src_byte_offset {