aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/gpuadapter.rs10
-rw-r--r--components/script/dom/gpubindgroup.rs8
-rw-r--r--components/script/dom/gpubindgrouplayout.rs4
-rw-r--r--components/script/dom/gpubuffer.rs4
-rw-r--r--components/script/dom/gpucommandbuffer.rs6
-rw-r--r--components/script/dom/gpucommandencoder.rs2
-rw-r--r--components/script/dom/gpucomputepipeline.rs7
-rw-r--r--components/script/dom/gpudevice.rs24
-rw-r--r--components/script/dom/gpupipelinelayout.rs4
-rw-r--r--components/script/dom/gpuqueue.rs4
-rw-r--r--components/script/dom/gpurenderpassencoder.rs18
-rw-r--r--components/script/dom/gpurenderpipeline.rs4
-rw-r--r--components/script/dom/gpusampler.rs4
-rw-r--r--components/script/dom/gpushadermodule.rs7
-rw-r--r--components/script/dom/gputexture.rs4
-rw-r--r--components/script/dom/webidls/GPUAdapter.webidl7
16 files changed, 54 insertions, 63 deletions
diff --git a/components/script/dom/gpuadapter.rs b/components/script/dom/gpuadapter.rs
index 8420a0058fc..7947a069335 100644
--- a/components/script/dom/gpuadapter.rs
+++ b/components/script/dom/gpuadapter.rs
@@ -39,8 +39,8 @@ impl GPUAdapter {
name: DOMString,
extensions: Heap<*mut JSObject>,
adapter: WebGPUAdapter,
- ) -> GPUAdapter {
- GPUAdapter {
+ ) -> Self {
+ Self {
reflector_: Reflector::new(),
channel,
name,
@@ -55,7 +55,7 @@ impl GPUAdapter {
name: DOMString,
extensions: Heap<*mut JSObject>,
adapter: WebGPUAdapter,
- ) -> DomRoot<GPUAdapter> {
+ ) -> DomRoot<Self> {
reflect_dom_object(
Box::new(GPUAdapter::new_inherited(
channel, name, extensions, adapter,
@@ -81,9 +81,7 @@ impl GPUAdapterMethods for GPUAdapter {
let promise = Promise::new_in_current_realm(&self.global(), comp);
let sender = response_async(&promise, self);
let desc = wgt::DeviceDescriptor {
- extensions: wgt::Extensions {
- anisotropic_filtering: descriptor.extensions.anisotropicFiltering,
- },
+ extensions: wgt::Extensions::empty(),
limits: wgt::Limits {
max_bind_groups: descriptor.limits.maxBindGroups,
},
diff --git a/components/script/dom/gpubindgroup.rs b/components/script/dom/gpubindgroup.rs
index b7b8cadeacf..4767d28d0f1 100644
--- a/components/script/dom/gpubindgroup.rs
+++ b/components/script/dom/gpubindgroup.rs
@@ -21,7 +21,7 @@ pub struct GPUBindGroup {
}
impl GPUBindGroup {
- fn new_inherited(bind_group: WebGPUBindGroup, valid: bool) -> GPUBindGroup {
+ fn new_inherited(bind_group: WebGPUBindGroup, valid: bool) -> Self {
Self {
reflector_: Reflector::new(),
label: DomRefCell::new(None),
@@ -30,11 +30,7 @@ impl GPUBindGroup {
}
}
- pub fn new(
- global: &GlobalScope,
- bind_group: WebGPUBindGroup,
- valid: bool,
- ) -> DomRoot<GPUBindGroup> {
+ pub fn new(global: &GlobalScope, bind_group: WebGPUBindGroup, valid: bool) -> DomRoot<Self> {
reflect_dom_object(
Box::new(GPUBindGroup::new_inherited(bind_group, valid)),
global,
diff --git a/components/script/dom/gpubindgrouplayout.rs b/components/script/dom/gpubindgrouplayout.rs
index c57fc272328..8c141256261 100644
--- a/components/script/dom/gpubindgrouplayout.rs
+++ b/components/script/dom/gpubindgrouplayout.rs
@@ -32,7 +32,7 @@ impl GPUBindGroupLayout {
bind_group_layout: WebGPUBindGroupLayout,
bindings: Vec<GPUBindGroupLayoutEntry>,
valid: bool,
- ) -> GPUBindGroupLayout {
+ ) -> Self {
Self {
reflector_: Reflector::new(),
channel,
@@ -49,7 +49,7 @@ impl GPUBindGroupLayout {
bind_group_layout: WebGPUBindGroupLayout,
bindings: Vec<GPUBindGroupLayoutEntry>,
valid: bool,
- ) -> DomRoot<GPUBindGroupLayout> {
+ ) -> DomRoot<Self> {
reflect_dom_object(
Box::new(GPUBindGroupLayout::new_inherited(
channel,
diff --git a/components/script/dom/gpubuffer.rs b/components/script/dom/gpubuffer.rs
index 643fbfc98c7..1c756dae15f 100644
--- a/components/script/dom/gpubuffer.rs
+++ b/components/script/dom/gpubuffer.rs
@@ -57,7 +57,7 @@ impl GPUBuffer {
usage: u32,
valid: bool,
mapping: RootedTraceableBox<Heap<*mut JSObject>>,
- ) -> GPUBuffer {
+ ) -> Self {
Self {
reflector_: Reflector::new(),
channel,
@@ -83,7 +83,7 @@ impl GPUBuffer {
usage: u32,
valid: bool,
mapping: RootedTraceableBox<Heap<*mut JSObject>>,
- ) -> DomRoot<GPUBuffer> {
+ ) -> DomRoot<Self> {
reflect_dom_object(
Box::new(GPUBuffer::new_inherited(
channel, buffer, device, state, size, usage, valid, mapping,
diff --git a/components/script/dom/gpucommandbuffer.rs b/components/script/dom/gpucommandbuffer.rs
index b1871051e52..4b23a622ca3 100644
--- a/components/script/dom/gpucommandbuffer.rs
+++ b/components/script/dom/gpucommandbuffer.rs
@@ -37,8 +37,8 @@ impl GPUCommandBuffer {
channel: WebGPU,
command_buffer: WebGPUCommandBuffer,
buffers: HashSet<DomRoot<GPUBuffer>>,
- ) -> GPUCommandBuffer {
- GPUCommandBuffer {
+ ) -> Self {
+ Self {
channel,
reflector_: Reflector::new(),
label: DomRefCell::new(None),
@@ -52,7 +52,7 @@ impl GPUCommandBuffer {
channel: WebGPU,
command_buffer: WebGPUCommandBuffer,
buffers: HashSet<DomRoot<GPUBuffer>>,
- ) -> DomRoot<GPUCommandBuffer> {
+ ) -> DomRoot<Self> {
reflect_dom_object(
Box::new(GPUCommandBuffer::new_inherited(
channel,
diff --git a/components/script/dom/gpucommandencoder.rs b/components/script/dom/gpucommandencoder.rs
index 6fcd1bc23b6..d0ba2dc8624 100644
--- a/components/script/dom/gpucommandencoder.rs
+++ b/components/script/dom/gpucommandencoder.rs
@@ -192,12 +192,14 @@ impl GPUCommandEncoderMethods for GPUCommandEncoder {
GPUStoreOp::Clear => wgt::StoreOp::Clear,
},
clear_depth,
+ depth_read_only: depth.depthReadOnly,
stencil_load_op,
stencil_store_op: match depth.stencilStoreOp {
GPUStoreOp::Store => wgt::StoreOp::Store,
GPUStoreOp::Clear => wgt::StoreOp::Clear,
},
clear_stencil,
+ stencil_read_only: depth.stencilReadOnly,
}
});
diff --git a/components/script/dom/gpucomputepipeline.rs b/components/script/dom/gpucomputepipeline.rs
index a4700db4505..e96697c95a2 100644
--- a/components/script/dom/gpucomputepipeline.rs
+++ b/components/script/dom/gpucomputepipeline.rs
@@ -20,7 +20,7 @@ pub struct GPUComputePipeline {
}
impl GPUComputePipeline {
- fn new_inherited(compute_pipeline: WebGPUComputePipeline) -> GPUComputePipeline {
+ fn new_inherited(compute_pipeline: WebGPUComputePipeline) -> Self {
Self {
reflector_: Reflector::new(),
label: DomRefCell::new(None),
@@ -28,10 +28,7 @@ impl GPUComputePipeline {
}
}
- pub fn new(
- global: &GlobalScope,
- compute_pipeline: WebGPUComputePipeline,
- ) -> DomRoot<GPUComputePipeline> {
+ pub fn new(global: &GlobalScope, compute_pipeline: WebGPUComputePipeline) -> DomRoot<Self> {
reflect_dom_object(
Box::new(GPUComputePipeline::new_inherited(compute_pipeline)),
global,
diff --git a/components/script/dom/gpudevice.rs b/components/script/dom/gpudevice.rs
index 6a4301124b9..e8720bf2189 100644
--- a/components/script/dom/gpudevice.rs
+++ b/components/script/dom/gpudevice.rs
@@ -85,7 +85,7 @@ impl GPUDevice {
limits: Heap<*mut JSObject>,
device: webgpu::WebGPUDevice,
queue: &GPUQueue,
- ) -> GPUDevice {
+ ) -> Self {
Self {
eventtarget: EventTarget::new_inherited(),
channel,
@@ -106,7 +106,7 @@ impl GPUDevice {
limits: Heap<*mut JSObject>,
device: webgpu::WebGPUDevice,
queue: webgpu::WebGPUQueue,
- ) -> DomRoot<GPUDevice> {
+ ) -> DomRoot<Self> {
let queue = GPUQueue::new(global, channel.clone(), queue);
reflect_dom_object(
Box::new(GPUDevice::new_inherited(
@@ -121,6 +121,7 @@ impl GPUDevice {
fn validate_buffer_descriptor(
&self,
descriptor: &GPUBufferDescriptor,
+ mapped_at_creation: bool,
) -> (bool, wgt::BufferDescriptor<std::string::String>) {
// TODO: Record a validation error in the current scope if the descriptor is invalid.
let wgpu_usage = wgt::BufferUsage::from_bits(descriptor.usage);
@@ -132,6 +133,7 @@ impl GPUDevice {
wgt::BufferDescriptor {
size: descriptor.size,
usage: wgpu_usage.unwrap(),
+ mapped_at_creation,
label: Default::default(),
},
)
@@ -141,6 +143,7 @@ impl GPUDevice {
wgt::BufferDescriptor {
size: 0,
usage: wgt::BufferUsage::empty(),
+ mapped_at_creation,
label: Default::default(),
},
)
@@ -181,7 +184,7 @@ impl GPUDeviceMethods for GPUDevice {
/// https://gpuweb.github.io/gpuweb/#dom-gpudevice-createbuffer
fn CreateBuffer(&self, descriptor: &GPUBufferDescriptor) -> DomRoot<GPUBuffer> {
- let (valid, wgpu_descriptor) = self.validate_buffer_descriptor(descriptor);
+ let (valid, wgpu_descriptor) = self.validate_buffer_descriptor(descriptor, false);
let id = self
.global()
.wgpu_id_hub()
@@ -217,7 +220,7 @@ impl GPUDeviceMethods for GPUDevice {
cx: SafeJSContext,
descriptor: &GPUBufferDescriptor,
) -> Vec<JSVal> {
- let (valid, wgpu_descriptor) = self.validate_buffer_descriptor(descriptor);
+ let (valid, wgpu_descriptor) = self.validate_buffer_descriptor(descriptor, true);
let buffer_id = self
.global()
.wgpu_id_hub()
@@ -225,7 +228,7 @@ impl GPUDeviceMethods for GPUDevice {
.create_buffer_id(self.device.0.backend());
self.channel
.0
- .send(WebGPURequest::CreateBufferMapped {
+ .send(WebGPURequest::CreateBuffer {
device_id: self.device.0,
buffer_id,
descriptor: wgpu_descriptor.clone(),
@@ -546,7 +549,9 @@ impl GPUDeviceMethods for GPUDevice {
resource: BindingResource::Buffer(BufferBinding {
buffer: bind.resource.buffer.id().0,
offset: bind.resource.offset,
- size: bind.resource.size.unwrap_or(bind.resource.buffer.size()),
+ size: wgt::BufferSize(
+ bind.resource.size.unwrap_or(bind.resource.buffer.size()),
+ ),
}),
})
.collect::<Vec<_>>();
@@ -729,11 +734,8 @@ impl GPUDeviceMethods for GPUDevice {
mipmap_filter: convert_filter_mode(descriptor.mipmapFilter),
lod_min_clamp: *descriptor.lodMinClamp,
lod_max_clamp: *descriptor.lodMaxClamp,
- compare: if let Some(c) = descriptor.compare {
- convert_compare_function(c)
- } else {
- wgt::CompareFunction::Undefined
- },
+ compare: descriptor.compare.map(|c| convert_compare_function(c)),
+ anisotropy_clamp: None,
};
self.channel
.0
diff --git a/components/script/dom/gpupipelinelayout.rs b/components/script/dom/gpupipelinelayout.rs
index d1c3d0d2bef..af665ba8c41 100644
--- a/components/script/dom/gpupipelinelayout.rs
+++ b/components/script/dom/gpupipelinelayout.rs
@@ -26,7 +26,7 @@ impl GPUPipelineLayout {
bind_group_layouts: Vec<WebGPUBindGroupLayout>,
pipeline_layout: WebGPUPipelineLayout,
valid: bool,
- ) -> GPUPipelineLayout {
+ ) -> Self {
Self {
reflector_: Reflector::new(),
bind_group_layouts,
@@ -41,7 +41,7 @@ impl GPUPipelineLayout {
bind_group_layouts: Vec<WebGPUBindGroupLayout>,
pipeline_layout: WebGPUPipelineLayout,
valid: bool,
- ) -> DomRoot<GPUPipelineLayout> {
+ ) -> DomRoot<Self> {
reflect_dom_object(
Box::new(GPUPipelineLayout::new_inherited(
bind_group_layouts,
diff --git a/components/script/dom/gpuqueue.rs b/components/script/dom/gpuqueue.rs
index 1b4ffa590f3..5b533a8d32c 100644
--- a/components/script/dom/gpuqueue.rs
+++ b/components/script/dom/gpuqueue.rs
@@ -23,7 +23,7 @@ pub struct GPUQueue {
}
impl GPUQueue {
- fn new_inherited(channel: WebGPU, queue: WebGPUQueue) -> GPUQueue {
+ fn new_inherited(channel: WebGPU, queue: WebGPUQueue) -> Self {
GPUQueue {
channel,
reflector_: Reflector::new(),
@@ -32,7 +32,7 @@ impl GPUQueue {
}
}
- pub fn new(global: &GlobalScope, channel: WebGPU, queue: WebGPUQueue) -> DomRoot<GPUQueue> {
+ pub fn new(global: &GlobalScope, channel: WebGPU, queue: WebGPUQueue) -> DomRoot<Self> {
reflect_dom_object(Box::new(GPUQueue::new_inherited(channel, queue)), global)
}
}
diff --git a/components/script/dom/gpurenderpassencoder.rs b/components/script/dom/gpurenderpassencoder.rs
index 47ac8c6db22..a74d1f86c8e 100644
--- a/components/script/dom/gpurenderpassencoder.rs
+++ b/components/script/dom/gpurenderpassencoder.rs
@@ -173,12 +173,11 @@ impl GPURenderPassEncoderMethods for GPURenderPassEncoder {
/// https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-setindexbuffer
fn SetIndexBuffer(&self, buffer: &GPUBuffer, offset: u64, size: u64) {
- let s;
- if size == 0 {
- s = buffer.size() - offset;
+ let s = if size == 0 {
+ wgt::BufferSize::WHOLE
} else {
- s = size;
- }
+ wgt::BufferSize(size)
+ };
if let Some(raw_pass) = self.raw_pass.borrow_mut().as_mut() {
unsafe {
@@ -189,12 +188,11 @@ impl GPURenderPassEncoderMethods for GPURenderPassEncoder {
/// https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-setvertexbuffer
fn SetVertexBuffer(&self, slot: u32, buffer: &GPUBuffer, offset: u64, size: u64) {
- let s;
- if size == 0 {
- s = buffer.size() - offset;
+ let s = if size == 0 {
+ wgt::BufferSize::WHOLE
} else {
- s = size;
- }
+ wgt::BufferSize(size)
+ };
if let Some(raw_pass) = self.raw_pass.borrow_mut().as_mut() {
unsafe {
diff --git a/components/script/dom/gpurenderpipeline.rs b/components/script/dom/gpurenderpipeline.rs
index 68d07820103..3a9bebba945 100644
--- a/components/script/dom/gpurenderpipeline.rs
+++ b/components/script/dom/gpurenderpipeline.rs
@@ -27,7 +27,7 @@ impl GPURenderPipeline {
render_pipeline: WebGPURenderPipeline,
device: WebGPUDevice,
valid: bool,
- ) -> GPURenderPipeline {
+ ) -> Self {
Self {
reflector_: Reflector::new(),
label: DomRefCell::new(None),
@@ -42,7 +42,7 @@ impl GPURenderPipeline {
render_pipeline: WebGPURenderPipeline,
device: WebGPUDevice,
valid: bool,
- ) -> DomRoot<GPURenderPipeline> {
+ ) -> DomRoot<Self> {
reflect_dom_object(
Box::new(GPURenderPipeline::new_inherited(
render_pipeline,
diff --git a/components/script/dom/gpusampler.rs b/components/script/dom/gpusampler.rs
index eab237a4c8f..db85f60e9b6 100644
--- a/components/script/dom/gpusampler.rs
+++ b/components/script/dom/gpusampler.rs
@@ -31,7 +31,7 @@ impl GPUSampler {
compare_enable: bool,
sampler: WebGPUSampler,
valid: bool,
- ) -> GPUSampler {
+ ) -> Self {
Self {
reflector_: Reflector::new(),
channel,
@@ -50,7 +50,7 @@ impl GPUSampler {
compare_enable: bool,
sampler: WebGPUSampler,
valid: bool,
- ) -> DomRoot<GPUSampler> {
+ ) -> DomRoot<Self> {
reflect_dom_object(
Box::new(GPUSampler::new_inherited(
channel,
diff --git a/components/script/dom/gpushadermodule.rs b/components/script/dom/gpushadermodule.rs
index 07aef69cbcc..24a96bdaac4 100644
--- a/components/script/dom/gpushadermodule.rs
+++ b/components/script/dom/gpushadermodule.rs
@@ -19,7 +19,7 @@ pub struct GPUShaderModule {
}
impl GPUShaderModule {
- fn new_inherited(shader_module: WebGPUShaderModule) -> GPUShaderModule {
+ fn new_inherited(shader_module: WebGPUShaderModule) -> Self {
Self {
reflector_: Reflector::new(),
label: DomRefCell::new(None),
@@ -27,10 +27,7 @@ impl GPUShaderModule {
}
}
- pub fn new(
- global: &GlobalScope,
- shader_module: WebGPUShaderModule,
- ) -> DomRoot<GPUShaderModule> {
+ pub fn new(global: &GlobalScope, shader_module: WebGPUShaderModule) -> DomRoot<Self> {
reflect_dom_object(
Box::new(GPUShaderModule::new_inherited(shader_module)),
global,
diff --git a/components/script/dom/gputexture.rs b/components/script/dom/gputexture.rs
index 036c1a57307..be2d11bfc50 100644
--- a/components/script/dom/gputexture.rs
+++ b/components/script/dom/gputexture.rs
@@ -49,7 +49,7 @@ impl GPUTexture {
format: GPUTextureFormat,
texture_usage: u32,
valid: bool,
- ) -> GPUTexture {
+ ) -> Self {
Self {
reflector_: Reflector::new(),
texture,
@@ -78,7 +78,7 @@ impl GPUTexture {
format: GPUTextureFormat,
texture_usage: u32,
valid: bool,
- ) -> DomRoot<GPUTexture> {
+ ) -> DomRoot<Self> {
reflect_dom_object(
Box::new(GPUTexture::new_inherited(
texture,
diff --git a/components/script/dom/webidls/GPUAdapter.webidl b/components/script/dom/webidls/GPUAdapter.webidl
index cc664fabffa..8d2e34f4a57 100644
--- a/components/script/dom/webidls/GPUAdapter.webidl
+++ b/components/script/dom/webidls/GPUAdapter.webidl
@@ -14,12 +14,13 @@ interface GPUAdapter {
};
dictionary GPUDeviceDescriptor : GPUObjectDescriptorBase {
- GPUExtensions extensions = {};
+ sequence<GPUExtensionName> extensions = [];
GPULimits limits = {};
};
-dictionary GPUExtensions {
- boolean anisotropicFiltering = false;
+enum GPUExtensionName {
+ "texture-compression-bc",
+ "pipeline-statistics-query"
};
dictionary GPULimits {