diff options
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/gpuadapter.rs | 10 | ||||
-rw-r--r-- | components/script/dom/gpubindgroup.rs | 8 | ||||
-rw-r--r-- | components/script/dom/gpubindgrouplayout.rs | 4 | ||||
-rw-r--r-- | components/script/dom/gpubuffer.rs | 4 | ||||
-rw-r--r-- | components/script/dom/gpucommandbuffer.rs | 6 | ||||
-rw-r--r-- | components/script/dom/gpucommandencoder.rs | 2 | ||||
-rw-r--r-- | components/script/dom/gpucomputepipeline.rs | 7 | ||||
-rw-r--r-- | components/script/dom/gpudevice.rs | 24 | ||||
-rw-r--r-- | components/script/dom/gpupipelinelayout.rs | 4 | ||||
-rw-r--r-- | components/script/dom/gpuqueue.rs | 4 | ||||
-rw-r--r-- | components/script/dom/gpurenderpassencoder.rs | 18 | ||||
-rw-r--r-- | components/script/dom/gpurenderpipeline.rs | 4 | ||||
-rw-r--r-- | components/script/dom/gpusampler.rs | 4 | ||||
-rw-r--r-- | components/script/dom/gpushadermodule.rs | 7 | ||||
-rw-r--r-- | components/script/dom/gputexture.rs | 4 | ||||
-rw-r--r-- | components/script/dom/webidls/GPUAdapter.webidl | 7 |
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 { |