webgpu: Move errorscopes to WGPU thread (#32304)

* Prepare errorscopes logic in wgpu_thread

* remove scope_id from ipc

* new GPUErrors per spec

* remove cotent timeline error_scope

* fixup poperrorscope types

* device_scope -> gpu_error and nice errors

* Handle errors detection more elegantly

* good expectations

* new expectations

* Make error_scope.errors Vec as per spec
This commit is contained in:
Samson 2024-05-22 18:47:35 +02:00 committed by GitHub
parent 9f32809671
commit 794110ebe5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
37 changed files with 3401 additions and 725 deletions

View file

@ -29,7 +29,7 @@ use wgc::resource::{
pub use {wgpu_core as wgc, wgpu_types as wgt};
use crate::identity::*;
use crate::{WebGPU, PRESENTATION_BUFFER_COUNT};
use crate::{Error, ErrorFilter, PopError, WebGPU, PRESENTATION_BUFFER_COUNT};
#[derive(Debug, Deserialize, Serialize)]
#[allow(clippy::large_enum_variant)]
@ -48,6 +48,7 @@ pub enum WebGPUResponse {
},
BufferMapAsync(IpcSharedMemory),
SubmittedWorkDone,
PoppedErrorScope(Result<Option<Error>, PopError>),
}
pub type WebGPUResponseResult = Result<WebGPUResponse, String>;
@ -251,4 +252,16 @@ pub enum WebGPURequest {
sender: IpcSender<Option<WebGPUResponseResult>>,
queue_id: id::QueueId,
},
PushErrorScope {
device_id: id::DeviceId,
filter: ErrorFilter,
},
DispatchError {
device_id: id::DeviceId,
error: Error,
},
PopErrorScope {
device_id: id::DeviceId,
sender: IpcSender<Option<WebGPUResponseResult>>,
},
}