diff options
author | Samson <16504129+sagudev@users.noreply.github.com> | 2023-08-21 01:16:46 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-20 23:16:46 +0000 |
commit | 71e0372ac18709da66e581cf4a777a7cc5d4cb92 (patch) | |
tree | 44907b543dcc822fe20025b2ac417da6e2b7c908 /components/script/dom/gpurenderbundleencoder.rs | |
parent | fed3491f23f8b7f3064ce297776deda76e485289 (diff) | |
download | servo-71e0372ac18709da66e581cf4a777a7cc5d4cb92.tar.gz servo-71e0372ac18709da66e581cf4a777a7cc5d4cb92.zip |
Upgrade whole webgpu stack (#29795)
* Allow noidl files in script/dom/webidls
* Upgrade wgpu to 0.16 and refresh whole webgpu implementation
* Update WebGPU test expectations
* misc
* MutNullableDom -> DomRefCell<Option<Dom for GPUTexture
* Direct use of GPUTextureDescriptor
* Remove config from GPUCanvasContext
* misc
* finally blue color
* gpubuffer "handle" error
* GPU object have non-null label
* gpu limits and info
* use buffer_size
* fix warnings
* Cleanup
* device destroy
* fallback adapter
* mach update-webgpu write webgpu commit hash in file
* Mising deps in CI for webgpu tests
* Updated expectations
* Fixups
* early reject
* DomRefCell<Option<Dom -> MutNullableDom for GPUTexture
Diffstat (limited to 'components/script/dom/gpurenderbundleencoder.rs')
-rw-r--r-- | components/script/dom/gpurenderbundleencoder.rs | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/components/script/dom/gpurenderbundleencoder.rs b/components/script/dom/gpurenderbundleencoder.rs index b261af6d857..0303a9c76c7 100644 --- a/components/script/dom/gpurenderbundleencoder.rs +++ b/components/script/dom/gpurenderbundleencoder.rs @@ -20,6 +20,8 @@ use webgpu::{ wgt, WebGPU, WebGPURenderBundle, WebGPURequest, }; +use super::bindings::codegen::Bindings::GPURenderPipelineBinding::GPUIndexFormat; + #[dom_struct] pub struct GPURenderBundleEncoder { reflector_: Reflector, @@ -30,7 +32,7 @@ pub struct GPURenderBundleEncoder { #[ignore_malloc_size_of = "defined in wgpu-core"] #[no_trace] render_bundle_encoder: DomRefCell<Option<RenderBundleEncoder>>, - label: DomRefCell<Option<USVString>>, + label: DomRefCell<USVString>, } impl GPURenderBundleEncoder { @@ -38,7 +40,7 @@ impl GPURenderBundleEncoder { render_bundle_encoder: RenderBundleEncoder, device: &GPUDevice, channel: WebGPU, - label: Option<USVString>, + label: USVString, ) -> Self { Self { reflector_: Reflector::new(), @@ -54,7 +56,7 @@ impl GPURenderBundleEncoder { render_bundle_encoder: RenderBundleEncoder, device: &GPUDevice, channel: WebGPU, - label: Option<USVString>, + label: USVString, ) -> DomRoot<Self> { reflect_dom_object( Box::new(GPURenderBundleEncoder::new_inherited( @@ -70,12 +72,12 @@ impl GPURenderBundleEncoder { impl GPURenderBundleEncoderMethods for GPURenderBundleEncoder { /// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label - fn GetLabel(&self) -> Option<USVString> { + fn Label(&self) -> USVString { self.label.borrow().clone() } /// https://gpuweb.github.io/gpuweb/#dom-gpuobjectbase-label - fn SetLabel(&self, value: Option<USVString>) { + fn SetLabel(&self, value: USVString) { *self.label.borrow_mut() = value; } @@ -103,11 +105,21 @@ impl GPURenderBundleEncoderMethods for GPURenderBundleEncoder { } /// https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-setindexbuffer - fn SetIndexBuffer(&self, buffer: &GPUBuffer, offset: u64, size: u64) { + fn SetIndexBuffer( + &self, + buffer: &GPUBuffer, + index_format: GPUIndexFormat, + offset: u64, + size: u64, + ) { if let Some(encoder) = self.render_bundle_encoder.borrow_mut().as_mut() { wgpu_bundle::wgpu_render_bundle_set_index_buffer( encoder, buffer.id().0, + match index_format { + GPUIndexFormat::Uint16 => wgt::IndexFormat::Uint16, + GPUIndexFormat::Uint32 => wgt::IndexFormat::Uint32, + }, offset, wgt::BufferSize::new(size), ); @@ -175,7 +187,7 @@ impl GPURenderBundleEncoderMethods for GPURenderBundleEncoder { /// https://gpuweb.github.io/gpuweb/#dom-gpurenderencoderbase-drawindexedindirect fn DrawIndexedIndirect(&self, indirect_buffer: &GPUBuffer, indirect_offset: u64) { if let Some(encoder) = self.render_bundle_encoder.borrow_mut().as_mut() { - wgpu_bundle::wgpu_render_pass_bundle_indexed_indirect( + wgpu_bundle::wgpu_render_bundle_draw_indexed_indirect( encoder, indirect_buffer.id().0, indirect_offset, @@ -214,7 +226,7 @@ impl GPURenderBundleEncoderMethods for GPURenderBundleEncoder { render_bundle, self.device.id(), self.channel.clone(), - descriptor.parent.label.as_ref().cloned(), + descriptor.parent.label.clone().unwrap_or_default(), ) } } |