diff options
author | Samson <16504129+sagudev@users.noreply.github.com> | 2024-08-08 09:53:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-08 07:53:17 +0000 |
commit | f989d3776eca7c4a21f03a406a11c1b1228b285e (patch) | |
tree | a5beb95a358c52c9fbfb0e43518fdcb6e6e599fd /components/webgpu/wgpu_thread.rs | |
parent | a5df51ea56dd7116b5fb95acd9c88f123bdebbfc (diff) | |
download | servo-f989d3776eca7c4a21f03a406a11c1b1228b285e.tar.gz servo-f989d3776eca7c4a21f03a406a11c1b1228b285e.zip |
separate Queue&Device Id (#32966)
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
Diffstat (limited to 'components/webgpu/wgpu_thread.rs')
-rw-r--r-- | components/webgpu/wgpu_thread.rs | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/components/webgpu/wgpu_thread.rs b/components/webgpu/wgpu_thread.rs index d1f9744b32c..6d7acaa739c 100644 --- a/components/webgpu/wgpu_thread.rs +++ b/components/webgpu/wgpu_thread.rs @@ -38,8 +38,8 @@ use crate::gpu_error::ErrorScope; use crate::poll_thread::Poller; use crate::render_commands::apply_render_command; use crate::{ - Adapter, ComputePassId, Error, PopError, PresentationData, RenderPassId, Transmute, WebGPU, - WebGPUAdapter, WebGPUDevice, WebGPUMsg, WebGPUQueue, WebGPURequest, WebGPUResponse, + Adapter, ComputePassId, Error, PopError, PresentationData, RenderPassId, WebGPU, WebGPUAdapter, + WebGPUDevice, WebGPUMsg, WebGPUQueue, WebGPURequest, WebGPUResponse, }; pub const PRESENTATION_BUFFER_COUNT: usize = 10; @@ -491,6 +491,7 @@ impl WGPU { }, WebGPURequest::CreateSwapChain { device_id, + queue_id, buffer_ids, external_id, sender, @@ -510,7 +511,7 @@ impl WGPU { external_id, PresentationData { device_id, - queue_id: device_id.transmute(), + queue_id, data: vec![255; (buffer_stride * height as u32) as usize], size: Size2D::new(width, height), unassigned_buffer_ids: buffer_ids, @@ -704,6 +705,7 @@ impl WGPU { adapter_id, descriptor, device_id, + queue_id, pipeline_id, } => { let desc = DeviceDescriptor { @@ -718,7 +720,7 @@ impl WGPU { &desc, None, Some(device_id), - Some(device_id.transmute()), + Some(queue_id), )); let device = WebGPUDevice(device_id); let queue = WebGPUQueue(queue_id); @@ -991,6 +993,7 @@ impl WGPU { }; }, WebGPURequest::Submit { + device_id, queue_id, command_buffers, } => { @@ -1008,7 +1011,7 @@ impl WGPU { gfx_select!(queue_id => global.queue_submit(queue_id, &command_buffers)) .map_err(Error::from_error) }; - self.maybe_dispatch_error(queue_id.transmute(), result.err()); + self.maybe_dispatch_error(device_id, result.err()); }, WebGPURequest::SwapChainPresent { external_id, @@ -1195,6 +1198,7 @@ impl WGPU { self.maybe_dispatch_wgpu_error(device_id, result.err()); }, WebGPURequest::WriteBuffer { + device_id, queue_id, buffer_id, buffer_offset, @@ -1208,9 +1212,10 @@ impl WGPU { buffer_offset as wgt::BufferAddress, &data )); - self.maybe_dispatch_wgpu_error(queue_id.transmute(), result.err()); + self.maybe_dispatch_wgpu_error(device_id, result.err()); }, WebGPURequest::WriteTexture { + device_id, queue_id, texture_cv, data_layout, @@ -1228,9 +1233,13 @@ impl WGPU { &size )); drop(_guard); - self.maybe_dispatch_wgpu_error(queue_id.transmute(), result.err()); + self.maybe_dispatch_wgpu_error(device_id, result.err()); }, - WebGPURequest::QueueOnSubmittedWorkDone { sender, queue_id } => { + WebGPURequest::QueueOnSubmittedWorkDone { + sender, + queue_id, + device_id, + } => { let global = &self.global; let token = self.poller.token(); let callback = SubmittedWorkDoneClosure::from_rust(Box::from(move || { @@ -1241,7 +1250,7 @@ impl WGPU { })); let result = gfx_select!(queue_id => global.queue_on_submitted_work_done(queue_id, callback)); self.poller.wake(); - self.maybe_dispatch_wgpu_error(queue_id.transmute(), result.err()); + self.maybe_dispatch_wgpu_error(device_id, result.err()); }, WebGPURequest::DropTexture(id) => { let global = &self.global; |