aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreri <eri@inventati.org>2024-03-06 17:48:34 +0100
committerGitHub <noreply@github.com>2024-03-06 16:48:34 +0000
commita8170966ec4ba970043ca67c09160bc7fff71f9d (patch)
tree5bad263ca159ff94142128d2b6e821c1436b481b
parent7ce19f2885328a4824f57374ac7fdd8b66fa3c61 (diff)
downloadservo-a8170966ec4ba970043ca67c09160bc7fff71f9d.tar.gz
servo-a8170966ec4ba970043ca67c09160bc7fff71f9d.zip
Move convert_* functions into gpuconvert.rs (#31521)
* feat: unify convert_* functions across gpu*.rs files #31104 * chore: reorder and format
-rw-r--r--components/script/dom/gpucommandencoder.rs76
-rw-r--r--components/script/dom/gpuconvert.rs333
-rw-r--r--components/script/dom/gpudevice.rs279
-rw-r--r--components/script/dom/gpuqueue.rs7
-rw-r--r--components/script/dom/gpurenderbundleencoder.rs3
-rw-r--r--components/script/dom/gputexture.rs5
-rw-r--r--components/script/dom/mod.rs1
7 files changed, 365 insertions, 339 deletions
diff --git a/components/script/dom/gpucommandencoder.rs b/components/script/dom/gpucommandencoder.rs
index 869a4e17346..4fbd375a579 100644
--- a/components/script/dom/gpucommandencoder.rs
+++ b/components/script/dom/gpucommandencoder.rs
@@ -10,16 +10,12 @@ use dom_struct::dom_struct;
use webgpu::wgpu::command as wgpu_com;
use webgpu::{self, wgt, WebGPU, WebGPURequest};
-use super::bindings::codegen::Bindings::WebGPUBinding::{
- GPUCommandBufferDescriptor, GPUImageCopyBuffer, GPUImageCopyTexture, GPUImageDataLayout,
- GPULoadOp, GPUTextureAspect,
-};
-use super::bindings::codegen::UnionTypes::DoubleSequenceOrGPUColorDict;
use crate::dom::bindings::cell::DomRefCell;
use crate::dom::bindings::codegen::Bindings::WebGPUBinding::{
- GPUCommandEncoderMethods, GPUComputePassDescriptor, GPUExtent3D, GPUOrigin3D,
- GPURenderPassDescriptor, GPUSize64, GPUStoreOp,
+ GPUCommandBufferDescriptor, GPUCommandEncoderMethods, GPUComputePassDescriptor, GPUExtent3D,
+ GPUImageCopyBuffer, GPUImageCopyTexture, GPURenderPassDescriptor, GPUSize64,
};
+use crate::dom::bindings::codegen::UnionTypes::DoubleSequenceOrGPUColorDict;
use crate::dom::bindings::num::Finite;
use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector};
use crate::dom::bindings::root::{Dom, DomRoot};
@@ -28,7 +24,11 @@ use crate::dom::globalscope::GlobalScope;
use crate::dom::gpubuffer::GPUBuffer;
use crate::dom::gpucommandbuffer::GPUCommandBuffer;
use crate::dom::gpucomputepassencoder::GPUComputePassEncoder;
-use crate::dom::gpudevice::{convert_texture_size_to_dict, convert_texture_size_to_wgt, GPUDevice};
+use crate::dom::gpuconvert::{
+ convert_ic_buffer, convert_ic_texture, convert_load_op, convert_store_op,
+ convert_texture_size_to_dict, convert_texture_size_to_wgt,
+};
+use crate::dom::gpudevice::GPUDevice;
use crate::dom::gpurenderpassencoder::GPURenderPassEncoder;
// TODO(sagudev): this is different now
@@ -403,63 +403,3 @@ impl GPUCommandEncoderMethods for GPUCommandEncoder {
)
}
}
-
-fn convert_load_op(op: Option<GPULoadOp>) -> wgpu_com::LoadOp {
- match op {
- Some(GPULoadOp::Load) => wgpu_com::LoadOp::Load,
- Some(GPULoadOp::Clear) => wgpu_com::LoadOp::Clear,
- None => wgpu_com::LoadOp::Clear,
- }
-}
-
-fn convert_store_op(op: Option<GPUStoreOp>) -> wgpu_com::StoreOp {
- match op {
- Some(GPUStoreOp::Store) => wgpu_com::StoreOp::Store,
- Some(GPUStoreOp::Discard) => wgpu_com::StoreOp::Discard,
- None => wgpu_com::StoreOp::Discard,
- }
-}
-
-fn convert_ic_buffer(ic_buffer: &GPUImageCopyBuffer) -> wgpu_com::ImageCopyBuffer {
- wgpu_com::ImageCopyBuffer {
- buffer: ic_buffer.buffer.id().0,
- layout: convert_image_data_layout(&ic_buffer.parent),
- }
-}
-
-pub fn convert_ic_texture(ic_texture: &GPUImageCopyTexture) -> wgpu_com::ImageCopyTexture {
- wgpu_com::ImageCopyTexture {
- texture: ic_texture.texture.id().0,
- mip_level: ic_texture.mipLevel,
- origin: match ic_texture.origin {
- Some(GPUOrigin3D::RangeEnforcedUnsignedLongSequence(ref v)) => {
- let mut w = v.clone();
- w.resize(3, 0);
- wgt::Origin3d {
- x: w[0],
- y: w[1],
- z: w[2],
- }
- },
- Some(GPUOrigin3D::GPUOrigin3DDict(ref d)) => wgt::Origin3d {
- x: d.x,
- y: d.y,
- z: d.z,
- },
- None => wgt::Origin3d::default(),
- },
- aspect: match ic_texture.aspect {
- GPUTextureAspect::All => wgt::TextureAspect::All,
- GPUTextureAspect::Stencil_only => wgt::TextureAspect::StencilOnly,
- GPUTextureAspect::Depth_only => wgt::TextureAspect::DepthOnly,
- },
- }
-}
-
-pub fn convert_image_data_layout(data_layout: &GPUImageDataLayout) -> wgt::ImageDataLayout {
- wgt::ImageDataLayout {
- offset: data_layout.offset as wgt::BufferAddress,
- bytes_per_row: data_layout.bytesPerRow,
- rows_per_image: data_layout.rowsPerImage,
- }
-}
diff --git a/components/script/dom/gpuconvert.rs b/components/script/dom/gpuconvert.rs
new file mode 100644
index 00000000000..82b6b1dc2f0
--- /dev/null
+++ b/components/script/dom/gpuconvert.rs
@@ -0,0 +1,333 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+
+use std::borrow::Cow;
+
+use webgpu::wgpu::command as wgpu_com;
+use webgpu::wgt;
+
+use crate::dom::bindings::codegen::Bindings::WebGPUBinding::{
+ GPUAddressMode, GPUBlendComponent, GPUBlendFactor, GPUBlendOperation, GPUCompareFunction,
+ GPUCullMode, GPUExtent3D, GPUExtent3DDict, GPUFilterMode, GPUFrontFace, GPUImageCopyBuffer,
+ GPUImageCopyTexture, GPUImageDataLayout, GPUIndexFormat, GPULoadOp, GPUObjectDescriptorBase,
+ GPUOrigin3D, GPUPrimitiveState, GPUPrimitiveTopology, GPUStencilOperation, GPUStoreOp,
+ GPUTextureAspect, GPUTextureFormat, GPUTextureViewDimension, GPUVertexFormat,
+};
+
+pub fn convert_texture_format(format: GPUTextureFormat) -> wgt::TextureFormat {
+ match format {
+ GPUTextureFormat::R8unorm => wgt::TextureFormat::R8Unorm,
+ GPUTextureFormat::R8snorm => wgt::TextureFormat::R8Snorm,
+ GPUTextureFormat::R8uint => wgt::TextureFormat::R8Uint,
+ GPUTextureFormat::R8sint => wgt::TextureFormat::R8Sint,
+ GPUTextureFormat::R16uint => wgt::TextureFormat::R16Uint,
+ GPUTextureFormat::R16sint => wgt::TextureFormat::R16Sint,
+ GPUTextureFormat::R16float => wgt::TextureFormat::R16Float,
+ GPUTextureFormat::Rg8unorm => wgt::TextureFormat::Rg8Unorm,
+ GPUTextureFormat::Rg8snorm => wgt::TextureFormat::Rg8Snorm,
+ GPUTextureFormat::Rg8uint => wgt::TextureFormat::Rg8Uint,
+ GPUTextureFormat::Rg8sint => wgt::TextureFormat::Rg8Sint,
+ GPUTextureFormat::R32uint => wgt::TextureFormat::R32Uint,
+ GPUTextureFormat::R32sint => wgt::TextureFormat::R32Sint,
+ GPUTextureFormat::R32float => wgt::TextureFormat::R32Float,
+ GPUTextureFormat::Rg16uint => wgt::TextureFormat::Rg16Uint,
+ GPUTextureFormat::Rg16sint => wgt::TextureFormat::Rg16Sint,
+ GPUTextureFormat::Rg16float => wgt::TextureFormat::Rg16Float,
+ GPUTextureFormat::Rgba8unorm => wgt::TextureFormat::Rgba8Unorm,
+ GPUTextureFormat::Rgba8unorm_srgb => wgt::TextureFormat::Rgba8UnormSrgb,
+ GPUTextureFormat::Rgba8snorm => wgt::TextureFormat::Rgba8Snorm,
+ GPUTextureFormat::Rgba8uint => wgt::TextureFormat::Rgba8Uint,
+ GPUTextureFormat::Rgba8sint => wgt::TextureFormat::Rgba8Sint,
+ GPUTextureFormat::Bgra8unorm => wgt::TextureFormat::Bgra8Unorm,
+ GPUTextureFormat::Bgra8unorm_srgb => wgt::TextureFormat::Bgra8UnormSrgb,
+ GPUTextureFormat::Rgb10a2unorm => wgt::TextureFormat::Rgb10a2Unorm,
+ GPUTextureFormat::Rg32uint => wgt::TextureFormat::Rg32Uint,
+ GPUTextureFormat::Rg32sint => wgt::TextureFormat::Rg32Sint,
+ GPUTextureFormat::Rg32float => wgt::TextureFormat::Rg32Float,
+ GPUTextureFormat::Rgba16uint => wgt::TextureFormat::Rgba16Uint,
+ GPUTextureFormat::Rgba16sint => wgt::TextureFormat::Rgba16Sint,
+ GPUTextureFormat::Rgba16float => wgt::TextureFormat::Rgba16Float,
+ GPUTextureFormat::Rgba32uint => wgt::TextureFormat::Rgba32Uint,
+ GPUTextureFormat::Rgba32sint => wgt::TextureFormat::Rgba32Sint,
+ GPUTextureFormat::Rgba32float => wgt::TextureFormat::Rgba32Float,
+ GPUTextureFormat::Depth32float => wgt::TextureFormat::Depth32Float,
+ GPUTextureFormat::Depth24plus => wgt::TextureFormat::Depth24Plus,
+ GPUTextureFormat::Depth24plus_stencil8 => wgt::TextureFormat::Depth24PlusStencil8,
+ GPUTextureFormat::Bc1_rgba_unorm => wgt::TextureFormat::Bc1RgbaUnorm,
+ GPUTextureFormat::Bc1_rgba_unorm_srgb => wgt::TextureFormat::Bc1RgbaUnormSrgb,
+ GPUTextureFormat::Bc2_rgba_unorm => wgt::TextureFormat::Bc2RgbaUnorm,
+ GPUTextureFormat::Bc2_rgba_unorm_srgb => wgt::TextureFormat::Bc2RgbaUnormSrgb,
+ GPUTextureFormat::Bc3_rgba_unorm => wgt::TextureFormat::Bc3RgbaUnorm,
+ GPUTextureFormat::Bc3_rgba_unorm_srgb => wgt::TextureFormat::Bc3RgbaUnormSrgb,
+ GPUTextureFormat::Bc4_r_unorm => wgt::TextureFormat::Bc4RUnorm,
+ GPUTextureFormat::Bc4_r_snorm => wgt::TextureFormat::Bc4RSnorm,
+ GPUTextureFormat::Bc5_rg_unorm => wgt::TextureFormat::Bc5RgUnorm,
+ GPUTextureFormat::Bc5_rg_snorm => wgt::TextureFormat::Bc5RgSnorm,
+ GPUTextureFormat::Bc6h_rgb_ufloat => wgt::TextureFormat::Bc6hRgbUfloat,
+ GPUTextureFormat::Bc7_rgba_unorm => wgt::TextureFormat::Bc7RgbaUnorm,
+ GPUTextureFormat::Bc7_rgba_unorm_srgb => wgt::TextureFormat::Bc7RgbaUnormSrgb,
+ GPUTextureFormat::Rg11b10float => wgt::TextureFormat::Rg11b10Float,
+ GPUTextureFormat::Bc6h_rgb_float => wgt::TextureFormat::Bc6hRgbFloat,
+ }
+}
+
+pub fn convert_texture_view_dimension(
+ dimension: GPUTextureViewDimension,
+) -> wgt::TextureViewDimension {
+ match dimension {
+ GPUTextureViewDimension::_1d => wgt::TextureViewDimension::D1,
+ GPUTextureViewDimension::_2d => wgt::TextureViewDimension::D2,
+ GPUTextureViewDimension::_2d_array => wgt::TextureViewDimension::D2Array,
+ GPUTextureViewDimension::Cube => wgt::TextureViewDimension::Cube,
+ GPUTextureViewDimension::Cube_array => wgt::TextureViewDimension::CubeArray,
+ GPUTextureViewDimension::_3d => wgt::TextureViewDimension::D3,
+ }
+}
+
+pub fn convert_texture_size_to_dict(size: &GPUExtent3D) -> GPUExtent3DDict {
+ match *size {
+ GPUExtent3D::GPUExtent3DDict(ref dict) => GPUExtent3DDict {
+ width: dict.width,
+ height: dict.height,
+ depthOrArrayLayers: dict.depthOrArrayLayers,
+ },
+ GPUExtent3D::RangeEnforcedUnsignedLongSequence(ref v) => {
+ let mut w = v.clone();
+ w.resize(3, 1);
+ GPUExtent3DDict {
+ width: w[0],
+ height: w[1],
+ depthOrArrayLayers: w[2],
+ }
+ },
+ }
+}
+
+pub fn convert_texture_size_to_wgt(size: &GPUExtent3DDict) -> wgt::Extent3d {
+ wgt::Extent3d {
+ width: size.width,
+ height: size.height,
+ depth_or_array_layers: size.depthOrArrayLayers,
+ }
+}
+
+pub fn convert_image_data_layout(data_layout: &GPUImageDataLayout) -> wgt::ImageDataLayout {
+ wgt::ImageDataLayout {
+ offset: data_layout.offset as wgt::BufferAddress,
+ bytes_per_row: data_layout.bytesPerRow,
+ rows_per_image: data_layout.rowsPerImage,
+ }
+}
+
+pub fn convert_vertex_format(format: GPUVertexFormat) -> wgt::VertexFormat {
+ match format {
+ GPUVertexFormat::Uint8x2 => wgt::VertexFormat::Uint8x2,
+ GPUVertexFormat::Uint8x4 => wgt::VertexFormat::Uint8x4,
+ GPUVertexFormat::Sint8x2 => wgt::VertexFormat::Sint8x2,
+ GPUVertexFormat::Sint8x4 => wgt::VertexFormat::Sint8x4,
+ GPUVertexFormat::Unorm8x2 => wgt::VertexFormat::Unorm8x2,
+ GPUVertexFormat::Unorm8x4 => wgt::VertexFormat::Unorm8x4,
+ GPUVertexFormat::Snorm8x2 => wgt::VertexFormat::Unorm8x2,
+ GPUVertexFormat::Snorm8x4 => wgt::VertexFormat::Unorm8x4,
+ GPUVertexFormat::Uint16x2 => wgt::VertexFormat::Uint16x2,
+ GPUVertexFormat::Uint16x4 => wgt::VertexFormat::Uint16x4,
+ GPUVertexFormat::Sint16x2 => wgt::VertexFormat::Sint16x2,
+ GPUVertexFormat::Sint16x4 => wgt::VertexFormat::Sint16x4,
+ GPUVertexFormat::Unorm16x2 => wgt::VertexFormat::Unorm16x2,
+ GPUVertexFormat::Unorm16x4 => wgt::VertexFormat::Unorm16x4,
+ GPUVertexFormat::Snorm16x2 => wgt::VertexFormat::Snorm16x2,
+ GPUVertexFormat::Snorm16x4 => wgt::VertexFormat::Snorm16x4,
+ GPUVertexFormat::Float16x2 => wgt::VertexFormat::Float16x2,
+ GPUVertexFormat::Float16x4 => wgt::VertexFormat::Float16x4,
+ GPUVertexFormat::Float32 => wgt::VertexFormat::Float32,
+ GPUVertexFormat::Float32x2 => wgt::VertexFormat::Float32x2,
+ GPUVertexFormat::Float32x3 => wgt::VertexFormat::Float32x3,
+ GPUVertexFormat::Float32x4 => wgt::VertexFormat::Float32x4,
+ GPUVertexFormat::Uint32 => wgt::VertexFormat::Uint32,
+ GPUVertexFormat::Uint32x2 => wgt::VertexFormat::Uint32x2,
+ GPUVertexFormat::Uint32x3 => wgt::VertexFormat::Uint32x3,
+ GPUVertexFormat::Uint32x4 => wgt::VertexFormat::Uint32x4,
+ GPUVertexFormat::Sint32 => wgt::VertexFormat::Sint32,
+ GPUVertexFormat::Sint32x2 => wgt::VertexFormat::Sint32x2,
+ GPUVertexFormat::Sint32x3 => wgt::VertexFormat::Sint32x3,
+ GPUVertexFormat::Sint32x4 => wgt::VertexFormat::Sint32x4,
+ }
+}
+
+pub fn convert_primitive_state(primitive_state: &GPUPrimitiveState) -> wgt::PrimitiveState {
+ wgt::PrimitiveState {
+ topology: convert_primitive_topology(&primitive_state.topology),
+ strip_index_format: primitive_state.stripIndexFormat.map(
+ |index_format| match index_format {
+ GPUIndexFormat::Uint16 => wgt::IndexFormat::Uint16,
+ GPUIndexFormat::Uint32 => wgt::IndexFormat::Uint32,
+ },
+ ),
+ front_face: match primitive_state.frontFace {
+ GPUFrontFace::Ccw => wgt::FrontFace::Ccw,
+ GPUFrontFace::Cw => wgt::FrontFace::Cw,
+ },
+ cull_mode: match primitive_state.cullMode {
+ GPUCullMode::None => None,
+ GPUCullMode::Front => Some(wgt::Face::Front),
+ GPUCullMode::Back => Some(wgt::Face::Back),
+ },
+ unclipped_depth: primitive_state.clampDepth,
+ ..Default::default()
+ }
+}
+
+pub fn convert_primitive_topology(
+ primitive_topology: &GPUPrimitiveTopology,
+) -> wgt::PrimitiveTopology {
+ match primitive_topology {
+ GPUPrimitiveTopology::Point_list => wgt::PrimitiveTopology::PointList,
+ GPUPrimitiveTopology::Line_list => wgt::PrimitiveTopology::LineList,
+ GPUPrimitiveTopology::Line_strip => wgt::PrimitiveTopology::LineStrip,
+ GPUPrimitiveTopology::Triangle_list => wgt::PrimitiveTopology::TriangleList,
+ GPUPrimitiveTopology::Triangle_strip => wgt::PrimitiveTopology::TriangleStrip,
+ }
+}
+
+pub fn convert_address_mode(address_mode: GPUAddressMode) -> wgt::AddressMode {
+ match address_mode {
+ GPUAddressMode::Clamp_to_edge => wgt::AddressMode::ClampToEdge,
+ GPUAddressMode::Repeat => wgt::AddressMode::Repeat,
+ GPUAddressMode::Mirror_repeat => wgt::AddressMode::MirrorRepeat,
+ }
+}
+
+pub fn convert_filter_mode(filter_mode: GPUFilterMode) -> wgt::FilterMode {
+ match filter_mode {
+ GPUFilterMode::Nearest => wgt::FilterMode::Nearest,
+ GPUFilterMode::Linear => wgt::FilterMode::Linear,
+ }
+}
+
+pub fn convert_view_dimension(
+ view_dimension: GPUTextureViewDimension,
+) -> wgt::TextureViewDimension {
+ match view_dimension {
+ GPUTextureViewDimension::_1d => wgt::TextureViewDimension::D1,
+ GPUTextureViewDimension::_2d => wgt::TextureViewDimension::D2,
+ GPUTextureViewDimension::_2d_array => wgt::TextureViewDimension::D2Array,
+ GPUTextureViewDimension::Cube => wgt::TextureViewDimension::Cube,
+ GPUTextureViewDimension::Cube_array => wgt::TextureViewDimension::CubeArray,
+ GPUTextureViewDimension::_3d => wgt::TextureViewDimension::D3,
+ }
+}
+
+pub fn convert_compare_function(compare: GPUCompareFunction) -> wgt::CompareFunction {
+ match compare {
+ GPUCompareFunction::Never => wgt::CompareFunction::Never,
+ GPUCompareFunction::Less => wgt::CompareFunction::Less,
+ GPUCompareFunction::Equal => wgt::CompareFunction::Equal,
+ GPUCompareFunction::Less_equal => wgt::CompareFunction::LessEqual,
+ GPUCompareFunction::Greater => wgt::CompareFunction::Greater,
+ GPUCompareFunction::Not_equal => wgt::CompareFunction::NotEqual,
+ GPUCompareFunction::Greater_equal => wgt::CompareFunction::GreaterEqual,
+ GPUCompareFunction::Always => wgt::CompareFunction::Always,
+ }
+}
+
+pub fn convert_blend_factor(factor: &GPUBlendFactor) -> wgt::BlendFactor {
+ match factor {
+ GPUBlendFactor::Zero => wgt::BlendFactor::Zero,
+ GPUBlendFactor::One => wgt::BlendFactor::One,
+ GPUBlendFactor::Src => wgt::BlendFactor::Src,
+ GPUBlendFactor::One_minus_src => wgt::BlendFactor::OneMinusSrc,
+ GPUBlendFactor::Src_alpha => wgt::BlendFactor::SrcAlpha,
+ GPUBlendFactor::One_minus_src_alpha => wgt::BlendFactor::OneMinusSrcAlpha,
+ GPUBlendFactor::Dst => wgt::BlendFactor::Dst,
+ GPUBlendFactor::One_minus_dst => wgt::BlendFactor::OneMinusDst,
+ GPUBlendFactor::Dst_alpha => wgt::BlendFactor::DstAlpha,
+ GPUBlendFactor::One_minus_dst_alpha => wgt::BlendFactor::OneMinusDstAlpha,
+ GPUBlendFactor::Src_alpha_saturated => wgt::BlendFactor::SrcAlphaSaturated,
+ GPUBlendFactor::Constant => wgt::BlendFactor::Constant,
+ GPUBlendFactor::One_minus_constant => wgt::BlendFactor::OneMinusConstant,
+ }
+}
+
+pub fn convert_blend_component(blend_component: &GPUBlendComponent) -> wgt::BlendComponent {
+ wgt::BlendComponent {
+ src_factor: convert_blend_factor(&blend_component.srcFactor),
+ dst_factor: convert_blend_factor(&blend_component.dstFactor),
+ operation: match blend_component.operation {
+ GPUBlendOperation::Add => wgt::BlendOperation::Add,
+ GPUBlendOperation::Subtract => wgt::BlendOperation::Subtract,
+ GPUBlendOperation::Reverse_subtract => wgt::BlendOperation::ReverseSubtract,
+ GPUBlendOperation::Min => wgt::BlendOperation::Min,
+ GPUBlendOperation::Max => wgt::BlendOperation::Max,
+ },
+ }
+}
+
+pub fn convert_load_op(op: Option<GPULoadOp>) -> wgpu_com::LoadOp {
+ match op {
+ Some(GPULoadOp::Load) => wgpu_com::LoadOp::Load,
+ Some(GPULoadOp::Clear) => wgpu_com::LoadOp::Clear,
+ None => wgpu_com::LoadOp::Clear,
+ }
+}
+
+pub fn convert_store_op(op: Option<GPUStoreOp>) -> wgpu_com::StoreOp {
+ match op {
+ Some(GPUStoreOp::Store) => wgpu_com::StoreOp::Store,
+ Some(GPUStoreOp::Discard) => wgpu_com::StoreOp::Discard,
+ None => wgpu_com::StoreOp::Discard,
+ }
+}
+
+pub fn convert_stencil_op(operation: GPUStencilOperation) -> wgt::StencilOperation {
+ match operation {
+ GPUStencilOperation::Keep => wgt::StencilOperation::Keep,
+ GPUStencilOperation::Zero => wgt::StencilOperation::Zero,
+ GPUStencilOperation::Replace => wgt::StencilOperation::Replace,
+ GPUStencilOperation::Invert => wgt::StencilOperation::Invert,
+ GPUStencilOperation::Increment_clamp => wgt::StencilOperation::IncrementClamp,
+ GPUStencilOperation::Decrement_clamp => wgt::StencilOperation::DecrementClamp,
+ GPUStencilOperation::Increment_wrap => wgt::StencilOperation::IncrementWrap,
+ GPUStencilOperation::Decrement_wrap => wgt::StencilOperation::DecrementWrap,
+ }
+}
+
+pub fn convert_ic_buffer(ic_buffer: &GPUImageCopyBuffer) -> wgpu_com::ImageCopyBuffer {
+ wgpu_com::ImageCopyBuffer {
+ buffer: ic_buffer.buffer.id().0,
+ layout: convert_image_data_layout(&ic_buffer.parent),
+ }
+}
+
+pub fn convert_ic_texture(ic_texture: &GPUImageCopyTexture) -> wgpu_com::ImageCopyTexture {
+ wgpu_com::ImageCopyTexture {
+ texture: ic_texture.texture.id().0,
+ mip_level: ic_texture.mipLevel,
+ origin: match ic_texture.origin {
+ Some(GPUOrigin3D::RangeEnforcedUnsignedLongSequence(ref v)) => {
+ let mut w = v.clone();
+ w.resize(3, 0);
+ wgt::Origin3d {
+ x: w[0],
+ y: w[1],
+ z: w[2],
+ }
+ },
+ Some(GPUOrigin3D::GPUOrigin3DDict(ref d)) => wgt::Origin3d {
+ x: d.x,
+ y: d.y,
+ z: d.z,
+ },
+ None => wgt::Origin3d::default(),
+ },
+ aspect: match ic_texture.aspect {
+ GPUTextureAspect::All => wgt::TextureAspect::All,
+ GPUTextureAspect::Stencil_only => wgt::TextureAspect::StencilOnly,
+ GPUTextureAspect::Depth_only => wgt::TextureAspect::DepthOnly,
+ },
+ }
+}
+
+pub fn convert_label(parent: &GPUObjectDescriptorBase) -> Option<Cow<'static, str>> {
+ parent.label.as_ref().map(|s| Cow::Owned(s.to_string()))
+}
diff --git a/components/script/dom/gpudevice.rs b/components/script/dom/gpudevice.rs
index 89b98f0d232..eb0f83bf4dc 100644
--- a/components/script/dom/gpudevice.rs
+++ b/components/script/dom/gpudevice.rs
@@ -20,10 +20,6 @@ use webgpu::wgpu::{
};
use webgpu::{self, wgt, ErrorScopeId, WebGPU, WebGPURequest};
-use super::bindings::codegen::Bindings::WebGPUBinding::{
- GPUBlendComponent, GPUBufferBindingType, GPUDeviceLostReason, GPUPrimitiveState,
- GPUSamplerBindingType, GPUStorageTextureAccess, GPUTextureSampleType, GPUVertexStepMode,
-};
use super::bindings::codegen::UnionTypes::GPUPipelineLayoutOrGPUAutoLayoutMode;
use super::bindings::error::Fallible;
use super::gpudevicelostinfo::GPUDeviceLostInfo;
@@ -32,15 +28,13 @@ use crate::dom::bindings::cell::DomRefCell;
use crate::dom::bindings::codegen::Bindings::EventBinding::EventInit;
use crate::dom::bindings::codegen::Bindings::EventTargetBinding::EventTargetMethods;
use crate::dom::bindings::codegen::Bindings::WebGPUBinding::{
- GPUAddressMode, GPUBindGroupDescriptor, GPUBindGroupLayoutDescriptor, GPUBindingResource,
- GPUBlendFactor, GPUBlendOperation, GPUBufferDescriptor, GPUCommandEncoderDescriptor,
- GPUCompareFunction, GPUComputePipelineDescriptor, GPUCullMode, GPUDeviceMethods, GPUError,
- GPUErrorFilter, GPUExtent3D, GPUExtent3DDict, GPUFilterMode, GPUFrontFace, GPUIndexFormat,
- GPUObjectDescriptorBase, GPUPipelineLayoutDescriptor, GPUPrimitiveTopology,
- GPURenderBundleEncoderDescriptor, GPURenderPipelineDescriptor, GPUSamplerDescriptor,
- GPUShaderModuleDescriptor, GPUStencilOperation, GPUSupportedLimitsMethods,
- GPUTextureDescriptor, GPUTextureDimension, GPUTextureFormat, GPUTextureViewDimension,
- GPUUncapturedErrorEventInit, GPUVertexFormat,
+ GPUBindGroupDescriptor, GPUBindGroupLayoutDescriptor, GPUBindingResource, GPUBufferBindingType,
+ GPUBufferDescriptor, GPUCommandEncoderDescriptor, GPUComputePipelineDescriptor,
+ GPUDeviceLostReason, GPUDeviceMethods, GPUError, GPUErrorFilter, GPUPipelineLayoutDescriptor,
+ GPURenderBundleEncoderDescriptor, GPURenderPipelineDescriptor, GPUSamplerBindingType,
+ GPUSamplerDescriptor, GPUShaderModuleDescriptor, GPUStorageTextureAccess,
+ GPUSupportedLimitsMethods, GPUTextureDescriptor, GPUTextureDimension, GPUTextureSampleType,
+ GPUUncapturedErrorEventInit, GPUVertexStepMode,
};
use crate::dom::bindings::error::Error;
use crate::dom::bindings::reflector::{reflect_dom_object, DomObject};
@@ -55,6 +49,12 @@ use crate::dom::gpubindgrouplayout::GPUBindGroupLayout;
use crate::dom::gpubuffer::{GPUBuffer, GPUBufferMapInfo, GPUBufferState};
use crate::dom::gpucommandencoder::GPUCommandEncoder;
use crate::dom::gpucomputepipeline::GPUComputePipeline;
+use crate::dom::gpuconvert::{
+ convert_address_mode, convert_blend_component, convert_compare_function, convert_filter_mode,
+ convert_label, convert_primitive_state, convert_stencil_op, convert_texture_format,
+ convert_texture_size_to_dict, convert_texture_size_to_wgt, convert_vertex_format,
+ convert_view_dimension,
+};
use crate::dom::gpuoutofmemoryerror::GPUOutOfMemoryError;
use crate::dom::gpupipelinelayout::GPUPipelineLayout;
use crate::dom::gpuqueue::GPUQueue;
@@ -1169,256 +1169,3 @@ impl Drop for GPUDevice {
self.Destroy()
}
}
-
-fn convert_blend_component(blend_component: &GPUBlendComponent) -> wgt::BlendComponent {
- wgt::BlendComponent {
- src_factor: convert_blend_factor(&blend_component.srcFactor),
- dst_factor: convert_blend_factor(&blend_component.dstFactor),
- operation: match blend_component.operation {
- GPUBlendOperation::Add => wgt::BlendOperation::Add,
- GPUBlendOperation::Subtract => wgt::BlendOperation::Subtract,
- GPUBlendOperation::Reverse_subtract => wgt::BlendOperation::ReverseSubtract,
- GPUBlendOperation::Min => wgt::BlendOperation::Min,
- GPUBlendOperation::Max => wgt::BlendOperation::Max,
- },
- }
-}
-
-fn convert_primitive_state(primitive_state: &GPUPrimitiveState) -> wgt::PrimitiveState {
- wgt::PrimitiveState {
- topology: convert_primitive_topology(&primitive_state.topology),
- strip_index_format: primitive_state.stripIndexFormat.map(
- |index_format| match index_format {
- GPUIndexFormat::Uint16 => wgt::IndexFormat::Uint16,
- GPUIndexFormat::Uint32 => wgt::IndexFormat::Uint32,
- },
- ),
- front_face: match primitive_state.frontFace {
- GPUFrontFace::Ccw => wgt::FrontFace::Ccw,
- GPUFrontFace::Cw => wgt::FrontFace::Cw,
- },
- cull_mode: match primitive_state.cullMode {
- GPUCullMode::None => None,
- GPUCullMode::Front => Some(wgt::Face::Front),
- GPUCullMode::Back => Some(wgt::Face::Back),
- },
- unclipped_depth: primitive_state.clampDepth,
- ..Default::default()
- }
-}
-
-fn convert_primitive_topology(primitive_topology: &GPUPrimitiveTopology) -> wgt::PrimitiveTopology {
- match primitive_topology {
- GPUPrimitiveTopology::Point_list => wgt::PrimitiveTopology::PointList,
- GPUPrimitiveTopology::Line_list => wgt::PrimitiveTopology::LineList,
- GPUPrimitiveTopology::Line_strip => wgt::PrimitiveTopology::LineStrip,
- GPUPrimitiveTopology::Triangle_list => wgt::PrimitiveTopology::TriangleList,
- GPUPrimitiveTopology::Triangle_strip => wgt::PrimitiveTopology::TriangleStrip,
- }
-}
-
-fn convert_view_dimension(view_dimension: GPUTextureViewDimension) -> wgt::TextureViewDimension {
- match view_dimension {
- GPUTextureViewDimension::_1d => wgt::TextureViewDimension::D1,
- GPUTextureViewDimension::_2d => wgt::TextureViewDimension::D2,
- GPUTextureViewDimension::_2d_array => wgt::TextureViewDimension::D2Array,
- GPUTextureViewDimension::Cube => wgt::TextureViewDimension::Cube,
- GPUTextureViewDimension::Cube_array => wgt::TextureViewDimension::CubeArray,
- GPUTextureViewDimension::_3d => wgt::TextureViewDimension::D3,
- }
-}
-
-fn convert_address_mode(address_mode: GPUAddressMode) -> wgt::AddressMode {
- match address_mode {
- GPUAddressMode::Clamp_to_edge => wgt::AddressMode::ClampToEdge,
- GPUAddressMode::Repeat => wgt::AddressMode::Repeat,
- GPUAddressMode::Mirror_repeat => wgt::AddressMode::MirrorRepeat,
- }
-}
-
-fn convert_filter_mode(filter_mode: GPUFilterMode) -> wgt::FilterMode {
- match filter_mode {
- GPUFilterMode::Nearest => wgt::FilterMode::Nearest,
- GPUFilterMode::Linear => wgt::FilterMode::Linear,
- }
-}
-
-fn convert_compare_function(compare: GPUCompareFunction) -> wgt::CompareFunction {
- match compare {
- GPUCompareFunction::Never => wgt::CompareFunction::Never,
- GPUCompareFunction::Less => wgt::CompareFunction::Less,
- GPUCompareFunction::Equal => wgt::CompareFunction::Equal,
- GPUCompareFunction::Less_equal => wgt::CompareFunction::LessEqual,
- GPUCompareFunction::Greater => wgt::CompareFunction::Greater,
- GPUCompareFunction::Not_equal => wgt::CompareFunction::NotEqual,
- GPUCompareFunction::Greater_equal => wgt::CompareFunction::GreaterEqual,
- GPUCompareFunction::Always => wgt::CompareFunction::Always,
- }
-}
-
-fn convert_blend_factor(factor: &GPUBlendFactor) -> wgt::BlendFactor {
- match factor {
- GPUBlendFactor::Zero => wgt::BlendFactor::Zero,
- GPUBlendFactor::One => wgt::BlendFactor::One,
- GPUBlendFactor::Src => wgt::BlendFactor::Src,
- GPUBlendFactor::One_minus_src => wgt::BlendFactor::OneMinusSrc,
- GPUBlendFactor::Src_alpha => wgt::BlendFactor::SrcAlpha,
- GPUBlendFactor::One_minus_src_alpha => wgt::BlendFactor::OneMinusSrcAlpha,
- GPUBlendFactor::Dst => wgt::BlendFactor::Dst,
- GPUBlendFactor::One_minus_dst => wgt::BlendFactor::OneMinusDst,
- GPUBlendFactor::Dst_alpha => wgt::BlendFactor::DstAlpha,
- GPUBlendFactor::One_minus_dst_alpha => wgt::BlendFactor::OneMinusDstAlpha,
- GPUBlendFactor::Src_alpha_saturated => wgt::BlendFactor::SrcAlphaSaturated,
- GPUBlendFactor::Constant => wgt::BlendFactor::Constant,
- GPUBlendFactor::One_minus_constant => wgt::BlendFactor::OneMinusConstant,
- }
-}
-
-fn convert_stencil_op(operation: GPUStencilOperation) -> wgt::StencilOperation {
- match operation {
- GPUStencilOperation::Keep => wgt::StencilOperation::Keep,
- GPUStencilOperation::Zero => wgt::StencilOperation::Zero,
- GPUStencilOperation::Replace => wgt::StencilOperation::Replace,
- GPUStencilOperation::Invert => wgt::StencilOperation::Invert,
- GPUStencilOperation::Increment_clamp => wgt::StencilOperation::IncrementClamp,
- GPUStencilOperation::Decrement_clamp => wgt::StencilOperation::DecrementClamp,
- GPUStencilOperation::Increment_wrap => wgt::StencilOperation::IncrementWrap,
- GPUStencilOperation::Decrement_wrap => wgt::StencilOperation::DecrementWrap,
- }
-}
-
-fn convert_vertex_format(format: GPUVertexFormat) -> wgt::VertexFormat {
- match format {
- GPUVertexFormat::Uint8x2 => wgt::VertexFormat::Uint8x2,
- GPUVertexFormat::Uint8x4 => wgt::VertexFormat::Uint8x4,
- GPUVertexFormat::Sint8x2 => wgt::VertexFormat::Sint8x2,
- GPUVertexFormat::Sint8x4 => wgt::VertexFormat::Sint8x4,
- GPUVertexFormat::Unorm8x2 => wgt::VertexFormat::Unorm8x2,
- GPUVertexFormat::Unorm8x4 => wgt::VertexFormat::Unorm8x4,
- GPUVertexFormat::Snorm8x2 => wgt::VertexFormat::Unorm8x2,
- GPUVertexFormat::Snorm8x4 => wgt::VertexFormat::Unorm8x4,
- GPUVertexFormat::Uint16x2 => wgt::VertexFormat::Uint16x2,
- GPUVertexFormat::Uint16x4 => wgt::VertexFormat::Uint16x4,
- GPUVertexFormat::Sint16x2 => wgt::VertexFormat::Sint16x2,
- GPUVertexFormat::Sint16x4 => wgt::VertexFormat::Sint16x4,
- GPUVertexFormat::Unorm16x2 => wgt::VertexFormat::Unorm16x2,
- GPUVertexFormat::Unorm16x4 => wgt::VertexFormat::Unorm16x4,
- GPUVertexFormat::Snorm16x2 => wgt::VertexFormat::Snorm16x2,
- GPUVertexFormat::Snorm16x4 => wgt::VertexFormat::Snorm16x4,
- GPUVertexFormat::Float16x2 => wgt::VertexFormat::Float16x2,
- GPUVertexFormat::Float16x4 => wgt::VertexFormat::Float16x4,
- GPUVertexFormat::Float32 => wgt::VertexFormat::Float32,
- GPUVertexFormat::Float32x2 => wgt::VertexFormat::Float32x2,
- GPUVertexFormat::Float32x3 => wgt::VertexFormat::Float32x3,
- GPUVertexFormat::Float32x4 => wgt::VertexFormat::Float32x4,
- GPUVertexFormat::Uint32 => wgt::VertexFormat::Uint32,
- GPUVertexFormat::Uint32x2 => wgt::VertexFormat::Uint32x2,
- GPUVertexFormat::Uint32x3 => wgt::VertexFormat::Uint32x3,
- GPUVertexFormat::Uint32x4 => wgt::VertexFormat::Uint32x4,
- GPUVertexFormat::Sint32 => wgt::VertexFormat::Sint32,
- GPUVertexFormat::Sint32x2 => wgt::VertexFormat::Sint32x2,
- GPUVertexFormat::Sint32x3 => wgt::VertexFormat::Sint32x3,
- GPUVertexFormat::Sint32x4 => wgt::VertexFormat::Sint32x4,
- }
-}
-
-pub fn convert_texture_format(format: GPUTextureFormat) -> wgt::TextureFormat {
- match format {
- GPUTextureFormat::R8unorm => wgt::TextureFormat::R8Unorm,
- GPUTextureFormat::R8snorm => wgt::TextureFormat::R8Snorm,
- GPUTextureFormat::R8uint => wgt::TextureFormat::R8Uint,
- GPUTextureFormat::R8sint => wgt::TextureFormat::R8Sint,
- GPUTextureFormat::R16uint => wgt::TextureFormat::R16Uint,
- GPUTextureFormat::R16sint => wgt::TextureFormat::R16Sint,
- GPUTextureFormat::R16float => wgt::TextureFormat::R16Float,
- GPUTextureFormat::Rg8unorm => wgt::TextureFormat::Rg8Unorm,
- GPUTextureFormat::Rg8snorm => wgt::TextureFormat::Rg8Snorm,
- GPUTextureFormat::Rg8uint => wgt::TextureFormat::Rg8Uint,
- GPUTextureFormat::Rg8sint => wgt::TextureFormat::Rg8Sint,
- GPUTextureFormat::R32uint => wgt::TextureFormat::R32Uint,
- GPUTextureFormat::R32sint => wgt::TextureFormat::R32Sint,
- GPUTextureFormat::R32float => wgt::TextureFormat::R32Float,
- GPUTextureFormat::Rg16uint => wgt::TextureFormat::Rg16Uint,
- GPUTextureFormat::Rg16sint => wgt::TextureFormat::Rg16Sint,
- GPUTextureFormat::Rg16float => wgt::TextureFormat::Rg16Float,
- GPUTextureFormat::Rgba8unorm => wgt::TextureFormat::Rgba8Unorm,
- GPUTextureFormat::Rgba8unorm_srgb => wgt::TextureFormat::Rgba8UnormSrgb,
- GPUTextureFormat::Rgba8snorm => wgt::TextureFormat::Rgba8Snorm,
- GPUTextureFormat::Rgba8uint => wgt::TextureFormat::Rgba8Uint,
- GPUTextureFormat::Rgba8sint => wgt::TextureFormat::Rgba8Sint,
- GPUTextureFormat::Bgra8unorm => wgt::TextureFormat::Bgra8Unorm,
- GPUTextureFormat::Bgra8unorm_srgb => wgt::TextureFormat::Bgra8UnormSrgb,
- GPUTextureFormat::Rgb10a2unorm => wgt::TextureFormat::Rgb10a2Unorm,
- GPUTextureFormat::Rg32uint => wgt::TextureFormat::Rg32Uint,
- GPUTextureFormat::Rg32sint => wgt::TextureFormat::Rg32Sint,
- GPUTextureFormat::Rg32float => wgt::TextureFormat::Rg32Float,
- GPUTextureFormat::Rgba16uint => wgt::TextureFormat::Rgba16Uint,
- GPUTextureFormat::Rgba16sint => wgt::TextureFormat::Rgba16Sint,
- GPUTextureFormat::Rgba16float => wgt::TextureFormat::Rgba16Float,
- GPUTextureFormat::Rgba32uint => wgt::TextureFormat::Rgba32Uint,
- GPUTextureFormat::Rgba32sint => wgt::TextureFormat::Rgba32Sint,
- GPUTextureFormat::Rgba32float => wgt::TextureFormat::Rgba32Float,
- GPUTextureFormat::Depth32float => wgt::TextureFormat::Depth32Float,
- GPUTextureFormat::Depth24plus => wgt::TextureFormat::Depth24Plus,
- GPUTextureFormat::Depth24plus_stencil8 => wgt::TextureFormat::Depth24PlusStencil8,
- GPUTextureFormat::Bc1_rgba_unorm => wgt::TextureFormat::Bc1RgbaUnorm,
- GPUTextureFormat::Bc1_rgba_unorm_srgb => wgt::TextureFormat::Bc1RgbaUnormSrgb,
- GPUTextureFormat::Bc2_rgba_unorm => wgt::TextureFormat::Bc2RgbaUnorm,
- GPUTextureFormat::Bc2_rgba_unorm_srgb => wgt::TextureFormat::Bc2RgbaUnormSrgb,
- GPUTextureFormat::Bc3_rgba_unorm => wgt::TextureFormat::Bc3RgbaUnorm,
- GPUTextureFormat::Bc3_rgba_unorm_srgb => wgt::TextureFormat::Bc3RgbaUnormSrgb,
- GPUTextureFormat::Bc4_r_unorm => wgt::TextureFormat::Bc4RUnorm,
- GPUTextureFormat::Bc4_r_snorm => wgt::TextureFormat::Bc4RSnorm,
- GPUTextureFormat::Bc5_rg_unorm => wgt::TextureFormat::Bc5RgUnorm,
- GPUTextureFormat::Bc5_rg_snorm => wgt::TextureFormat::Bc5RgSnorm,
- GPUTextureFormat::Bc6h_rgb_ufloat => wgt::TextureFormat::Bc6hRgbUfloat,
- GPUTextureFormat::Bc7_rgba_unorm => wgt::TextureFormat::Bc7RgbaUnorm,
- GPUTextureFormat::Bc7_rgba_unorm_srgb => wgt::TextureFormat::Bc7RgbaUnormSrgb,
- GPUTextureFormat::Rg11b10float => wgt::TextureFormat::Rg11b10Float,
- GPUTextureFormat::Bc6h_rgb_float => wgt::TextureFormat::Bc6hRgbFloat,
- }
-}
-
-pub fn convert_texture_view_dimension(
- dimension: GPUTextureViewDimension,
-) -> wgt::TextureViewDimension {
- match dimension {
- GPUTextureViewDimension::_1d => wgt::TextureViewDimension::D1,
- GPUTextureViewDimension::_2d => wgt::TextureViewDimension::D2,
- GPUTextureViewDimension::_2d_array => wgt::TextureViewDimension::D2Array,
- GPUTextureViewDimension::Cube => wgt::TextureViewDimension::Cube,
- GPUTextureViewDimension::Cube_array => wgt::TextureViewDimension::CubeArray,
- GPUTextureViewDimension::_3d => wgt::TextureViewDimension::D3,
- }
-}
-
-pub fn convert_texture_size_to_dict(size: &GPUExtent3D) -> GPUExtent3DDict {
- match *size {
- GPUExtent3D::GPUExtent3DDict(ref dict) => GPUExtent3DDict {
- width: dict.width,
- height: dict.height,
- depthOrArrayLayers: dict.depthOrArrayLayers,
- },
- GPUExtent3D::RangeEnforcedUnsignedLongSequence(ref v) => {
- let mut w = v.clone();
- w.resize(3, 1);
- GPUExtent3DDict {
- width: w[0],
- height: w[1],
- depthOrArrayLayers: w[2],
- }
- },
- }
-}
-
-pub fn convert_texture_size_to_wgt(size: &GPUExtent3DDict) -> wgt::Extent3d {
- wgt::Extent3d {
- width: size.width,
- height: size.height,
- depth_or_array_layers: size.depthOrArrayLayers,
- }
-}
-
-pub fn convert_label(parent: &GPUObjectDescriptorBase) -> Option<Cow<'static, str>> {
- parent.label.as_ref().map(|s| Cow::Owned(s.to_string()))
-}
diff --git a/components/script/dom/gpuqueue.rs b/components/script/dom/gpuqueue.rs
index 41dc1085529..de8766c3365 100644
--- a/components/script/dom/gpuqueue.rs
+++ b/components/script/dom/gpuqueue.rs
@@ -20,8 +20,11 @@ use crate::dom::bindings::str::USVString;
use crate::dom::globalscope::GlobalScope;
use crate::dom::gpubuffer::{GPUBuffer, GPUBufferState};
use crate::dom::gpucommandbuffer::GPUCommandBuffer;
-use crate::dom::gpucommandencoder::{convert_ic_texture, convert_image_data_layout};
-use crate::dom::gpudevice::{convert_texture_size_to_dict, convert_texture_size_to_wgt, GPUDevice};
+use crate::dom::gpuconvert::{
+ convert_ic_texture, convert_image_data_layout, convert_texture_size_to_dict,
+ convert_texture_size_to_wgt,
+};
+use crate::dom::gpudevice::GPUDevice;
#[dom_struct]
pub struct GPUQueue {
diff --git a/components/script/dom/gpurenderbundleencoder.rs b/components/script/dom/gpurenderbundleencoder.rs
index a81d7ad6891..6287b8233d7 100644
--- a/components/script/dom/gpurenderbundleencoder.rs
+++ b/components/script/dom/gpurenderbundleencoder.rs
@@ -17,7 +17,8 @@ use crate::dom::bindings::str::USVString;
use crate::dom::globalscope::GlobalScope;
use crate::dom::gpubindgroup::GPUBindGroup;
use crate::dom::gpubuffer::GPUBuffer;
-use crate::dom::gpudevice::{convert_label, GPUDevice};
+use crate::dom::gpuconvert::convert_label;
+use crate::dom::gpudevice::GPUDevice;
use crate::dom::gpurenderbundle::GPURenderBundle;
use crate::dom::gpurenderpipeline::GPURenderPipeline;
diff --git a/components/script/dom/gputexture.rs b/components/script/dom/gputexture.rs
index d3058f1e5dd..0589e36dd52 100644
--- a/components/script/dom/gputexture.rs
+++ b/components/script/dom/gputexture.rs
@@ -19,9 +19,10 @@ use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector};
use crate::dom::bindings::root::{Dom, DomRoot};
use crate::dom::bindings::str::USVString;
use crate::dom::globalscope::GlobalScope;
-use crate::dom::gpudevice::{
- convert_label, convert_texture_format, convert_texture_view_dimension, GPUDevice,
+use crate::dom::gpuconvert::{
+ convert_label, convert_texture_format, convert_texture_view_dimension,
};
+use crate::dom::gpudevice::GPUDevice;
use crate::dom::gputextureview::GPUTextureView;
#[dom_struct]
diff --git a/components/script/dom/mod.rs b/components/script/dom/mod.rs
index babf49d0dc8..2b1e72d0bb7 100644
--- a/components/script/dom/mod.rs
+++ b/components/script/dom/mod.rs
@@ -336,6 +336,7 @@ pub mod gpucompilationinfo;
pub mod gpucompilationmessage;
pub mod gpucomputepassencoder;
pub mod gpucomputepipeline;
+pub mod gpuconvert;
pub mod gpudevice;
pub mod gpudevicelostinfo;
pub mod gpumapmode;