mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Auto merge of #27607 - kunalmohan:copy-validation, r=kvark
Defer Encoding errors to GPUCommandEncoder.finish() <!-- Please describe your changes on the following line: --> Errors that occur are stored in `HashMap<id::CommandEncoderId, String>`. This also upgrades wgpu to v0.6 r?@kvark --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [ ] These changes fix #___ (GitHub issue number if applicable) <!-- Either: --> - [X] There are tests for these changes <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
This commit is contained in:
commit
84185eb1da
10 changed files with 177 additions and 506 deletions
151
Cargo.lock
generated
151
Cargo.lock
generated
|
@ -726,6 +726,15 @@ dependencies = [
|
|||
"bitflags",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cloudabi"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4344512281c643ae7638bbabc3af17a11307803ec8f0fcad9fae512a8bf36467"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cmake"
|
||||
version = "0.1.44"
|
||||
|
@ -1911,9 +1920,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "gfx-auxil"
|
||||
version = "0.4.0"
|
||||
version = "0.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "67bdbf8e8d6883c70e5a0d7379ad8ab3ac95127a3761306b36122d8f1c177a8e"
|
||||
checksum = "6311ee3cc7a3b4c8ae94c4513cd2cbe888ec37990cf0ffa672bd275391b12eb1"
|
||||
dependencies = [
|
||||
"fxhash",
|
||||
"gfx-hal",
|
||||
|
@ -1922,16 +1931,16 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "gfx-backend-dx11"
|
||||
version = "0.5.1"
|
||||
version = "0.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "92de0ddc0fde1a89b2a0e92dcc6bbb554bd34af0135e53a28d5ef064611094a4"
|
||||
checksum = "de0a460b6458f3857af43064c687b1a010fe1f1b2e8c68fcd1d5db7206fa0809"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"gfx-auxil",
|
||||
"gfx-hal",
|
||||
"libloading 0.5.2",
|
||||
"libloading 0.6.1",
|
||||
"log",
|
||||
"parking_lot 0.10.2",
|
||||
"parking_lot 0.11.0",
|
||||
"range-alloc",
|
||||
"raw-window-handle",
|
||||
"smallvec 1.4.2",
|
||||
|
@ -1942,9 +1951,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "gfx-backend-dx12"
|
||||
version = "0.5.8"
|
||||
version = "0.6.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "05218b5c94539f22ac7d6feb4b2482431b89f6cc897132494701ac48619218d7"
|
||||
checksum = "c392af02ae88bc127abf94e1b88c817b7274d8d977aae986d5f2829392a30b0b"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"d3d12",
|
||||
|
@ -1960,19 +1969,20 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "gfx-backend-empty"
|
||||
version = "0.5.0"
|
||||
version = "0.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b67bd2d7bc022b257ddbdabc5fa3b10c29c292372c3409f2b6a6e3f4e11cdb85"
|
||||
checksum = "2085227c12b78f6657a900c829f2d0deb46a9be3eaf86844fde263cdc218f77c"
|
||||
dependencies = [
|
||||
"gfx-hal",
|
||||
"log",
|
||||
"raw-window-handle",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gfx-backend-metal"
|
||||
version = "0.5.6"
|
||||
version = "0.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "92804d20b194de6c84cb4bec14ec6a6dcae9c51f0a9186817fb412a590131ae6"
|
||||
checksum = "42518c5b571be5ba337a89cfba5abfaf2d90b83fc4db96357f64f2ea05f20f81"
|
||||
dependencies = [
|
||||
"arrayvec 0.5.1",
|
||||
"bitflags",
|
||||
|
@ -1986,7 +1996,7 @@ dependencies = [
|
|||
"log",
|
||||
"metal 0.20.0",
|
||||
"objc",
|
||||
"parking_lot 0.10.2",
|
||||
"parking_lot 0.11.0",
|
||||
"range-alloc",
|
||||
"raw-window-handle",
|
||||
"smallvec 1.4.2",
|
||||
|
@ -1996,15 +2006,16 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "gfx-backend-vulkan"
|
||||
version = "0.5.11"
|
||||
version = "0.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "aec9c919cfc236d2c36aaa38609c1906a92f2df99a3c7f53022b01936f98275a"
|
||||
checksum = "a84bda4200a82e1912d575801e2bb76ae19c6256359afbc0adfbbaec02fcadc6"
|
||||
dependencies = [
|
||||
"arrayvec 0.5.1",
|
||||
"ash",
|
||||
"byteorder",
|
||||
"core-graphics-types",
|
||||
"gfx-hal",
|
||||
"inplace_it",
|
||||
"lazy_static",
|
||||
"log",
|
||||
"objc",
|
||||
|
@ -2015,9 +2026,11 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "gfx-descriptor"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/gfx-rs/gfx-extras?rev=473a4cdc63463e7986707507c4a7f6a3a767e329#473a4cdc63463e7986707507c4a7f6a3a767e329"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cd8c7afcd000f279d541a490e27117e61037537279b9342279abf4938fe60c6b"
|
||||
dependencies = [
|
||||
"arrayvec 0.5.1",
|
||||
"fxhash",
|
||||
"gfx-hal",
|
||||
"log",
|
||||
|
@ -2025,9 +2038,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "gfx-hal"
|
||||
version = "0.5.3"
|
||||
version = "0.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a18534b23d4c262916231511309bc1f307c74cda8dcb68b93a10ca213a22814b"
|
||||
checksum = "18d0754f5b7a43915fd7466883b2d1bb0800d7cc4609178d0b27bf143b9e5123"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"raw-window-handle",
|
||||
|
@ -2035,8 +2048,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "gfx-memory"
|
||||
version = "0.1.3"
|
||||
source = "git+https://github.com/gfx-rs/gfx-extras?rev=473a4cdc63463e7986707507c4a7f6a3a767e329#473a4cdc63463e7986707507c4a7f6a3a767e329"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fe8d8855df07f438eb8a765e90356d5b821d644ea3b59b870091450b89576a9f"
|
||||
dependencies = [
|
||||
"fxhash",
|
||||
"gfx-hal",
|
||||
|
@ -2773,6 +2787,12 @@ dependencies = [
|
|||
"hashbrown",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "inplace_it"
|
||||
version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dd01a2a73f2f399df96b22dc88ea687ef4d76226284e7531ae3c7ee1dc5cb534"
|
||||
|
||||
[[package]]
|
||||
name = "input_buffer"
|
||||
version = "0.3.1"
|
||||
|
@ -2782,6 +2802,12 @@ dependencies = [
|
|||
"bytes 0.5.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "instant"
|
||||
version = "0.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5b141fdc7836c525d4d594027d318c84161ca17aaf8113ab1f81ab93ae897485"
|
||||
|
||||
[[package]]
|
||||
name = "io-surface"
|
||||
version = "0.12.1"
|
||||
|
@ -3137,9 +3163,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.70"
|
||||
version = "0.2.76"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3baa92041a6fec78c687fa0cc2b3fae8884f743d672cf551bed1d6dac6988d0f"
|
||||
checksum = "755456fae044e6fa1ebbbd1b3e902ae19e73097ed4ed87bb79934a867c007bc3"
|
||||
|
||||
[[package]]
|
||||
name = "libdbus-sys"
|
||||
|
@ -3297,6 +3323,15 @@ dependencies = [
|
|||
"scopeguard",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "lock_api"
|
||||
version = "0.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "28247cc5a5be2f05fbcd76dd0cf2c7d3b5400cb978a28042abcd4fa0b3f8261c"
|
||||
dependencies = [
|
||||
"scopeguard",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "log"
|
||||
version = "0.4.11"
|
||||
|
@ -3724,8 +3759,9 @@ checksum = "0419348c027fa7be448d2ae7ea0e4e04c2334c31dc4e74ab29f00a2a7ca69204"
|
|||
|
||||
[[package]]
|
||||
name = "naga"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/gfx-rs/naga?rev=1eb637038dd15fc1dad770eca8e6943424dbc122#1eb637038dd15fc1dad770eca8e6943424dbc122"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0873deb76cf44b7454fba7b2ba6a89d3de70c08aceffd2c489379b3d9d08e661"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"fxhash",
|
||||
|
@ -4117,7 +4153,7 @@ version = "0.9.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252"
|
||||
dependencies = [
|
||||
"lock_api",
|
||||
"lock_api 0.3.4",
|
||||
"parking_lot_core 0.6.2",
|
||||
"rustc_version",
|
||||
]
|
||||
|
@ -4128,10 +4164,21 @@ version = "0.10.2"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505e"
|
||||
dependencies = [
|
||||
"lock_api",
|
||||
"lock_api 0.3.4",
|
||||
"parking_lot_core 0.7.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "parking_lot"
|
||||
version = "0.11.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a4893845fa2ca272e647da5d0e46660a314ead9c2fdd9a883aabc32e481a8733"
|
||||
dependencies = [
|
||||
"instant",
|
||||
"lock_api 0.4.1",
|
||||
"parking_lot_core 0.8.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "parking_lot_core"
|
||||
version = "0.6.2"
|
||||
|
@ -4139,7 +4186,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cloudabi",
|
||||
"cloudabi 0.0.3",
|
||||
"libc",
|
||||
"redox_syscall",
|
||||
"rustc_version",
|
||||
|
@ -4154,7 +4201,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "d58c7c768d4ba344e3e8d72518ac13e259d7c7ade24167003b8488e10b6740a3"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cloudabi",
|
||||
"cloudabi 0.0.3",
|
||||
"libc",
|
||||
"redox_syscall",
|
||||
"smallvec 1.4.2",
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "parking_lot_core"
|
||||
version = "0.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c361aa727dd08437f2f1447be8b59a33b0edd15e0fcee698f935613d9efbca9b"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cloudabi 0.1.0",
|
||||
"instant",
|
||||
"libc",
|
||||
"redox_syscall",
|
||||
"smallvec 1.4.2",
|
||||
|
@ -4715,6 +4777,17 @@ dependencies = [
|
|||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ron"
|
||||
version = "0.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a91260f321dbf3b5a16ff91c451dc9eb644ce72775a6812f9c3dfffe63818f8f"
|
||||
dependencies = [
|
||||
"base64 0.12.0",
|
||||
"bitflags",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rust-argon2"
|
||||
version = "0.7.0"
|
||||
|
@ -5700,11 +5773,11 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "storage-map"
|
||||
version = "0.2.0"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fd0a4829a5c591dc24a944a736d6b1e4053e51339a79fd5d4702c4c999a9c45e"
|
||||
checksum = "418bb14643aa55a7841d5303f72cf512cfb323b8cc221d51580500a1ca75206c"
|
||||
dependencies = [
|
||||
"lock_api",
|
||||
"lock_api 0.4.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -6856,7 +6929,7 @@ dependencies = [
|
|||
"num-traits",
|
||||
"plane-split",
|
||||
"rayon",
|
||||
"ron",
|
||||
"ron 0.5.1",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"sig",
|
||||
|
@ -6954,8 +7027,8 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "wgpu-core"
|
||||
version = "0.5.0"
|
||||
source = "git+https://github.com/gfx-rs/wgpu#f7ec6cc1fe73651cfeda44295cd41533ec60f850"
|
||||
version = "0.6.0"
|
||||
source = "git+https://github.com/gfx-rs/wgpu#1d0e0ce37ede5ec53000ab252c27b8cf856865b2"
|
||||
dependencies = [
|
||||
"arrayvec 0.5.1",
|
||||
"bitflags",
|
||||
|
@ -6970,8 +7043,8 @@ dependencies = [
|
|||
"gfx-hal",
|
||||
"gfx-memory",
|
||||
"naga",
|
||||
"parking_lot 0.10.2",
|
||||
"ron",
|
||||
"parking_lot 0.11.0",
|
||||
"ron 0.6.0",
|
||||
"serde",
|
||||
"smallvec 1.4.2",
|
||||
"thiserror",
|
||||
|
@ -6981,8 +7054,8 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "wgpu-types"
|
||||
version = "0.5.0"
|
||||
source = "git+https://github.com/gfx-rs/wgpu#f7ec6cc1fe73651cfeda44295cd41533ec60f850"
|
||||
version = "0.6.0"
|
||||
source = "git+https://github.com/gfx-rs/wgpu#1d0e0ce37ede5ec53000ab252c27b8cf856865b2"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"serde",
|
||||
|
|
|
@ -29,7 +29,7 @@ use std::borrow::Cow;
|
|||
use std::cell::Cell;
|
||||
use std::collections::HashSet;
|
||||
use webgpu::wgpu::command as wgpu_com;
|
||||
use webgpu::{self, identity::WebGPUOpResult, wgt, WebGPU, WebGPURequest};
|
||||
use webgpu::{self, wgt, WebGPU, WebGPURequest};
|
||||
|
||||
// https://gpuweb.github.io/gpuweb/#enumdef-encoder-state
|
||||
#[derive(MallocSizeOf, PartialEq)]
|
||||
|
@ -58,7 +58,6 @@ impl GPUCommandEncoder {
|
|||
channel: WebGPU,
|
||||
device: &GPUDevice,
|
||||
encoder: webgpu::WebGPUCommandEncoder,
|
||||
valid: bool,
|
||||
label: Option<USVString>,
|
||||
) -> Self {
|
||||
Self {
|
||||
|
@ -69,7 +68,7 @@ impl GPUCommandEncoder {
|
|||
encoder,
|
||||
buffers: DomRefCell::new(HashSet::new()),
|
||||
state: DomRefCell::new(GPUCommandEncoderState::Open),
|
||||
valid: Cell::new(valid),
|
||||
valid: Cell::new(true),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -78,12 +77,11 @@ impl GPUCommandEncoder {
|
|||
channel: WebGPU,
|
||||
device: &GPUDevice,
|
||||
encoder: webgpu::WebGPUCommandEncoder,
|
||||
valid: bool,
|
||||
label: Option<USVString>,
|
||||
) -> DomRoot<Self> {
|
||||
reflect_dom_object(
|
||||
Box::new(GPUCommandEncoder::new_inherited(
|
||||
channel, device, encoder, valid, label,
|
||||
channel, device, encoder, label,
|
||||
)),
|
||||
global,
|
||||
)
|
||||
|
@ -103,10 +101,6 @@ impl GPUCommandEncoder {
|
|||
*self.state.borrow_mut() = GPUCommandEncoderState::Closed;
|
||||
}
|
||||
}
|
||||
|
||||
pub fn device(&self) -> &GPUDevice {
|
||||
&*self.device
|
||||
}
|
||||
}
|
||||
|
||||
impl GPUCommandEncoderMethods for GPUCommandEncoder {
|
||||
|
@ -125,26 +119,16 @@ impl GPUCommandEncoderMethods for GPUCommandEncoder {
|
|||
&self,
|
||||
descriptor: &GPUComputePassDescriptor,
|
||||
) -> DomRoot<GPUComputePassEncoder> {
|
||||
let scope_id = self.device.use_current_scope();
|
||||
self.set_state(
|
||||
GPUCommandEncoderState::EncodingComputePass,
|
||||
GPUCommandEncoderState::Open,
|
||||
);
|
||||
let (compute_pass, res) = if !self.valid.get() {
|
||||
(
|
||||
None,
|
||||
WebGPUOpResult::ValidationError(String::from(
|
||||
"CommandEncoder is not in Open State",
|
||||
)),
|
||||
)
|
||||
} else {
|
||||
(
|
||||
Some(wgpu_com::ComputePass::new(self.encoder.0)),
|
||||
WebGPUOpResult::Success,
|
||||
)
|
||||
};
|
||||
|
||||
self.device.handle_server_msg(scope_id, res);
|
||||
let compute_pass = if !self.valid.get() {
|
||||
None
|
||||
} else {
|
||||
Some(wgpu_com::ComputePass::new(self.encoder.0))
|
||||
};
|
||||
|
||||
GPUComputePassEncoder::new(
|
||||
&self.global(),
|
||||
|
@ -160,19 +144,13 @@ impl GPUCommandEncoderMethods for GPUCommandEncoder {
|
|||
&self,
|
||||
descriptor: &GPURenderPassDescriptor,
|
||||
) -> DomRoot<GPURenderPassEncoder> {
|
||||
let scope_id = self.device.use_current_scope();
|
||||
self.set_state(
|
||||
GPUCommandEncoderState::EncodingRenderPass,
|
||||
GPUCommandEncoderState::Open,
|
||||
);
|
||||
|
||||
let (render_pass, res) = if !self.valid.get() {
|
||||
(
|
||||
None,
|
||||
WebGPUOpResult::ValidationError(String::from(
|
||||
"CommandEncoder is not in Open State",
|
||||
)),
|
||||
)
|
||||
let render_pass = if !self.valid.get() {
|
||||
None
|
||||
} else {
|
||||
let depth_stencil = descriptor.depthStencilAttachment.as_ref().map(|depth| {
|
||||
let (depth_load_op, clear_depth) = match depth.depthLoadValue {
|
||||
|
@ -265,14 +243,9 @@ impl GPUCommandEncoderMethods for GPUCommandEncoder {
|
|||
),
|
||||
depth_stencil_attachment: depth_stencil.as_ref(),
|
||||
};
|
||||
(
|
||||
Some(wgpu_com::RenderPass::new(self.encoder.0, desc)),
|
||||
WebGPUOpResult::Success,
|
||||
)
|
||||
Some(wgpu_com::RenderPass::new(self.encoder.0, desc))
|
||||
};
|
||||
|
||||
self.device.handle_server_msg(scope_id, res);
|
||||
|
||||
GPURenderPassEncoder::new(
|
||||
&self.global(),
|
||||
self.channel.clone(),
|
||||
|
@ -291,15 +264,7 @@ impl GPUCommandEncoderMethods for GPUCommandEncoder {
|
|||
destination_offset: GPUSize64,
|
||||
size: GPUSize64,
|
||||
) {
|
||||
let scope_id = self.device.use_current_scope();
|
||||
|
||||
if !(*self.state.borrow() == GPUCommandEncoderState::Open) {
|
||||
self.device.handle_server_msg(
|
||||
scope_id,
|
||||
WebGPUOpResult::ValidationError(String::from(
|
||||
"CommandEncoder is not in Open State",
|
||||
)),
|
||||
);
|
||||
self.valid.set(false);
|
||||
return;
|
||||
}
|
||||
|
@ -311,10 +276,9 @@ impl GPUCommandEncoderMethods for GPUCommandEncoder {
|
|||
self.channel
|
||||
.0
|
||||
.send((
|
||||
scope_id,
|
||||
None,
|
||||
WebGPURequest::CopyBufferToBuffer {
|
||||
command_encoder_id: self.encoder.0,
|
||||
device_id: self.device.id().0,
|
||||
source_id: source.id().0,
|
||||
source_offset,
|
||||
destination_id: destination.id().0,
|
||||
|
@ -332,15 +296,7 @@ impl GPUCommandEncoderMethods for GPUCommandEncoder {
|
|||
destination: &GPUTextureCopyView,
|
||||
copy_size: GPUExtent3D,
|
||||
) {
|
||||
let scope_id = self.device.use_current_scope();
|
||||
|
||||
if !(*self.state.borrow() == GPUCommandEncoderState::Open) {
|
||||
self.device.handle_server_msg(
|
||||
scope_id,
|
||||
WebGPUOpResult::ValidationError(String::from(
|
||||
"CommandEncoder is not in Open State",
|
||||
)),
|
||||
);
|
||||
self.valid.set(false);
|
||||
return;
|
||||
}
|
||||
|
@ -352,10 +308,9 @@ impl GPUCommandEncoderMethods for GPUCommandEncoder {
|
|||
self.channel
|
||||
.0
|
||||
.send((
|
||||
scope_id,
|
||||
None,
|
||||
WebGPURequest::CopyBufferToTexture {
|
||||
command_encoder_id: self.encoder.0,
|
||||
device_id: self.device.id().0,
|
||||
source: convert_buffer_cv(source),
|
||||
destination: convert_texture_cv(destination),
|
||||
copy_size: convert_texture_size_to_wgt(&convert_texture_size_to_dict(
|
||||
|
@ -373,15 +328,7 @@ impl GPUCommandEncoderMethods for GPUCommandEncoder {
|
|||
destination: &GPUBufferCopyView,
|
||||
copy_size: GPUExtent3D,
|
||||
) {
|
||||
let scope_id = self.device.use_current_scope();
|
||||
|
||||
if !(*self.state.borrow() == GPUCommandEncoderState::Open) {
|
||||
self.device.handle_server_msg(
|
||||
scope_id,
|
||||
WebGPUOpResult::ValidationError(String::from(
|
||||
"CommandEncoder is not in Open State",
|
||||
)),
|
||||
);
|
||||
self.valid.set(false);
|
||||
return;
|
||||
}
|
||||
|
@ -393,10 +340,9 @@ impl GPUCommandEncoderMethods for GPUCommandEncoder {
|
|||
self.channel
|
||||
.0
|
||||
.send((
|
||||
scope_id,
|
||||
None,
|
||||
WebGPURequest::CopyTextureToBuffer {
|
||||
command_encoder_id: self.encoder.0,
|
||||
device_id: self.device.id().0,
|
||||
source: convert_texture_cv(source),
|
||||
destination: convert_buffer_cv(destination),
|
||||
copy_size: convert_texture_size_to_wgt(&convert_texture_size_to_dict(
|
||||
|
@ -414,15 +360,7 @@ impl GPUCommandEncoderMethods for GPUCommandEncoder {
|
|||
destination: &GPUTextureCopyView,
|
||||
copy_size: GPUExtent3D,
|
||||
) {
|
||||
let scope_id = self.device.use_current_scope();
|
||||
|
||||
if !(*self.state.borrow() == GPUCommandEncoderState::Open) {
|
||||
self.device.handle_server_msg(
|
||||
scope_id,
|
||||
WebGPUOpResult::ValidationError(String::from(
|
||||
"CommandEncoder is not in Open State",
|
||||
)),
|
||||
);
|
||||
self.valid.set(false);
|
||||
return;
|
||||
}
|
||||
|
@ -430,10 +368,9 @@ impl GPUCommandEncoderMethods for GPUCommandEncoder {
|
|||
self.channel
|
||||
.0
|
||||
.send((
|
||||
scope_id,
|
||||
None,
|
||||
WebGPURequest::CopyTextureToTexture {
|
||||
command_encoder_id: self.encoder.0,
|
||||
device_id: self.device.id().0,
|
||||
source: convert_texture_cv(source),
|
||||
destination: convert_texture_cv(destination),
|
||||
copy_size: convert_texture_size_to_wgt(&convert_texture_size_to_dict(
|
||||
|
|
|
@ -99,10 +99,9 @@ impl GPUComputePassEncoderMethods for GPUComputePassEncoder {
|
|||
self.channel
|
||||
.0
|
||||
.send((
|
||||
self.command_encoder.device().use_current_scope(),
|
||||
None,
|
||||
WebGPURequest::RunComputePass {
|
||||
command_encoder_id: self.command_encoder.id().0,
|
||||
device_id: self.command_encoder.device().id().0,
|
||||
compute_pass,
|
||||
},
|
||||
))
|
||||
|
|
|
@ -775,7 +775,6 @@ impl GPUDeviceMethods for GPUDevice {
|
|||
self.channel.clone(),
|
||||
&self,
|
||||
encoder,
|
||||
true,
|
||||
descriptor.parent.label.as_ref().cloned(),
|
||||
)
|
||||
}
|
||||
|
|
|
@ -164,10 +164,9 @@ impl GPURenderPassEncoderMethods for GPURenderPassEncoder {
|
|||
self.channel
|
||||
.0
|
||||
.send((
|
||||
self.command_encoder.device().use_current_scope(),
|
||||
None,
|
||||
WebGPURequest::RunRenderPass {
|
||||
command_encoder_id: self.command_encoder.id().0,
|
||||
device_id: self.command_encoder.device().id().0,
|
||||
render_pass,
|
||||
},
|
||||
))
|
||||
|
|
|
@ -90,7 +90,6 @@ impl GPUSwapChainMethods for GPUSwapChain {
|
|||
/// https://gpuweb.github.io/gpuweb/#dom-gpuswapchain-getcurrenttexture
|
||||
fn GetCurrentTexture(&self) -> DomRoot<GPUTexture> {
|
||||
self.context.mark_as_dirty();
|
||||
//self.context.send_swap_chain_present();
|
||||
DomRoot::from_ref(&*self.texture)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,5 +22,5 @@ servo_config = { path = "../config" }
|
|||
smallvec = { version = "0.6", features = ["serde"] }
|
||||
webrender_api = { git = "https://github.com/servo/webrender" }
|
||||
webrender_traits = { path = "../webrender_traits" }
|
||||
wgpu-core = { version = "0.5.0", git = "https://github.com/gfx-rs/wgpu", features = ["replay", "trace", "serial-pass"] }
|
||||
wgpu-types = { version = "0.5.0", git = "https://github.com/gfx-rs/wgpu", features = ["replay", "trace"] }
|
||||
wgpu-core = { version = "0.6.0", git = "https://github.com/gfx-rs/wgpu", features = ["replay", "trace", "serial-pass"] }
|
||||
wgpu-types = { version = "0.6.0", git = "https://github.com/gfx-rs/wgpu", features = ["replay", "trace"] }
|
||||
|
|
|
@ -20,7 +20,9 @@ use serde::{Deserialize, Serialize};
|
|||
use servo_config::pref;
|
||||
use smallvec::SmallVec;
|
||||
use std::borrow::Cow;
|
||||
use std::collections::{HashMap, HashSet};
|
||||
use std::cell::RefCell;
|
||||
use std::collections::hash_map::Entry;
|
||||
use std::collections::HashMap;
|
||||
use std::num::NonZeroU64;
|
||||
use std::rc::Rc;
|
||||
use std::slice;
|
||||
|
@ -87,7 +89,6 @@ pub enum WebGPURequest {
|
|||
},
|
||||
CopyBufferToBuffer {
|
||||
command_encoder_id: id::CommandEncoderId,
|
||||
device_id: id::DeviceId,
|
||||
source_id: id::BufferId,
|
||||
source_offset: wgt::BufferAddress,
|
||||
destination_id: id::BufferId,
|
||||
|
@ -96,21 +97,18 @@ pub enum WebGPURequest {
|
|||
},
|
||||
CopyBufferToTexture {
|
||||
command_encoder_id: id::CommandEncoderId,
|
||||
device_id: id::DeviceId,
|
||||
source: BufferCopyView,
|
||||
destination: TextureCopyView,
|
||||
copy_size: wgt::Extent3d,
|
||||
},
|
||||
CopyTextureToBuffer {
|
||||
command_encoder_id: id::CommandEncoderId,
|
||||
device_id: id::DeviceId,
|
||||
source: TextureCopyView,
|
||||
destination: BufferCopyView,
|
||||
copy_size: wgt::Extent3d,
|
||||
},
|
||||
CopyTextureToTexture {
|
||||
command_encoder_id: id::CommandEncoderId,
|
||||
device_id: id::DeviceId,
|
||||
source: TextureCopyView,
|
||||
destination: TextureCopyView,
|
||||
copy_size: wgt::Extent3d,
|
||||
|
@ -214,12 +212,10 @@ pub enum WebGPURequest {
|
|||
},
|
||||
RunComputePass {
|
||||
command_encoder_id: id::CommandEncoderId,
|
||||
device_id: id::DeviceId,
|
||||
compute_pass: Option<ComputePass>,
|
||||
},
|
||||
RunRenderPass {
|
||||
command_encoder_id: id::CommandEncoderId,
|
||||
device_id: id::DeviceId,
|
||||
render_pass: Option<RenderPass>,
|
||||
},
|
||||
Submit {
|
||||
|
@ -346,7 +342,7 @@ struct WGPU<'a> {
|
|||
present_buffer_maps:
|
||||
HashMap<id::BufferId, Rc<BufferMapInfo<'a, (Option<ErrorScopeId>, WebGPURequest)>>>,
|
||||
//TODO: Remove this (https://github.com/gfx-rs/wgpu/issues/867)
|
||||
error_command_buffers: HashSet<id::CommandBufferId>,
|
||||
error_command_encoders: RefCell<HashMap<id::CommandEncoderId, String>>,
|
||||
webrender_api: webrender_api::RenderApi,
|
||||
webrender_document: webrender_api::DocumentId,
|
||||
external_images: Arc<Mutex<WebrenderExternalImageRegistry>>,
|
||||
|
@ -378,7 +374,7 @@ impl<'a> WGPU<'a> {
|
|||
_invalid_adapters: Vec::new(),
|
||||
buffer_maps: HashMap::new(),
|
||||
present_buffer_maps: HashMap::new(),
|
||||
error_command_buffers: HashSet::new(),
|
||||
error_command_encoders: RefCell::new(HashMap::new()),
|
||||
webrender_api: webrender_api_sender.create_api(),
|
||||
webrender_document,
|
||||
external_images,
|
||||
|
@ -466,6 +462,12 @@ impl<'a> WGPU<'a> {
|
|||
let global = &self.global;
|
||||
let result = if is_error {
|
||||
Err(String::from("Invalid GPUCommandEncoder"))
|
||||
} else if let Some(err) = self
|
||||
.error_command_encoders
|
||||
.borrow()
|
||||
.get(&command_encoder_id)
|
||||
{
|
||||
Err(err.clone())
|
||||
} else {
|
||||
gfx_select!(command_encoder_id => global.command_encoder_finish(
|
||||
command_encoder_id,
|
||||
|
@ -474,13 +476,12 @@ impl<'a> WGPU<'a> {
|
|||
.map_err(|e| format!("{:?}", e))
|
||||
};
|
||||
if result.is_err() {
|
||||
self.error_command_buffers.insert(command_encoder_id);
|
||||
self.encoder_record_error(command_encoder_id, result.clone());
|
||||
}
|
||||
self.send_result(device_id, scope_id, result);
|
||||
},
|
||||
WebGPURequest::CopyBufferToBuffer {
|
||||
command_encoder_id,
|
||||
device_id,
|
||||
source_id,
|
||||
source_offset,
|
||||
destination_id,
|
||||
|
@ -496,11 +497,10 @@ impl<'a> WGPU<'a> {
|
|||
destination_offset,
|
||||
size
|
||||
));
|
||||
self.send_result(device_id, scope_id, result);
|
||||
self.encoder_record_error(command_encoder_id, result);
|
||||
},
|
||||
WebGPURequest::CopyBufferToTexture {
|
||||
command_encoder_id,
|
||||
device_id,
|
||||
source,
|
||||
destination,
|
||||
copy_size,
|
||||
|
@ -512,11 +512,10 @@ impl<'a> WGPU<'a> {
|
|||
&destination,
|
||||
©_size
|
||||
));
|
||||
self.send_result(device_id, scope_id, result);
|
||||
self.encoder_record_error(command_encoder_id, result);
|
||||
},
|
||||
WebGPURequest::CopyTextureToBuffer {
|
||||
command_encoder_id,
|
||||
device_id,
|
||||
source,
|
||||
destination,
|
||||
copy_size,
|
||||
|
@ -528,11 +527,10 @@ impl<'a> WGPU<'a> {
|
|||
&destination,
|
||||
©_size
|
||||
));
|
||||
self.send_result(device_id, scope_id, result);
|
||||
self.encoder_record_error(command_encoder_id, result);
|
||||
},
|
||||
WebGPURequest::CopyTextureToTexture {
|
||||
command_encoder_id,
|
||||
device_id,
|
||||
source,
|
||||
destination,
|
||||
copy_size,
|
||||
|
@ -544,7 +542,7 @@ impl<'a> WGPU<'a> {
|
|||
&destination,
|
||||
©_size
|
||||
));
|
||||
self.send_result(device_id, scope_id, result);
|
||||
self.encoder_record_error(command_encoder_id, result);
|
||||
},
|
||||
WebGPURequest::CreateBindGroup {
|
||||
device_id,
|
||||
|
@ -863,7 +861,9 @@ impl<'a> WGPU<'a> {
|
|||
return;
|
||||
},
|
||||
WebGPURequest::FreeCommandBuffer(command_buffer_id) => {
|
||||
self.error_command_buffers.remove(&command_buffer_id);
|
||||
self.error_command_encoders
|
||||
.borrow_mut()
|
||||
.remove(&command_buffer_id);
|
||||
},
|
||||
WebGPURequest::FreeDevice(device_id) => {
|
||||
let device = WebGPUDevice(device_id);
|
||||
|
@ -974,7 +974,6 @@ impl<'a> WGPU<'a> {
|
|||
},
|
||||
WebGPURequest::RunComputePass {
|
||||
command_encoder_id,
|
||||
device_id,
|
||||
compute_pass,
|
||||
} => {
|
||||
let global = &self.global;
|
||||
|
@ -986,11 +985,10 @@ impl<'a> WGPU<'a> {
|
|||
} else {
|
||||
Err(String::from("Invalid ComputePass"))
|
||||
};
|
||||
self.send_result(device_id, scope_id, result);
|
||||
self.encoder_record_error(command_encoder_id, result);
|
||||
},
|
||||
WebGPURequest::RunRenderPass {
|
||||
command_encoder_id,
|
||||
device_id,
|
||||
render_pass,
|
||||
} => {
|
||||
let global = &self.global;
|
||||
|
@ -1002,7 +1000,7 @@ impl<'a> WGPU<'a> {
|
|||
} else {
|
||||
Err(String::from("Invalid RenderPass"))
|
||||
};
|
||||
self.send_result(device_id, scope_id, result);
|
||||
self.encoder_record_error(command_encoder_id, result);
|
||||
},
|
||||
WebGPURequest::Submit {
|
||||
queue_id,
|
||||
|
@ -1011,7 +1009,7 @@ impl<'a> WGPU<'a> {
|
|||
let global = &self.global;
|
||||
let cmd_id = command_buffers
|
||||
.iter()
|
||||
.find(|id| self.error_command_buffers.contains(id));
|
||||
.find(|id| self.error_command_encoders.borrow().contains_key(id));
|
||||
let result = if cmd_id.is_some() {
|
||||
Err(String::from("Invalid command buffer submitted"))
|
||||
} else {
|
||||
|
@ -1129,17 +1127,20 @@ impl<'a> WGPU<'a> {
|
|||
status: BufferMapAsyncStatus,
|
||||
userdata: *mut u8,
|
||||
) {
|
||||
let info =
|
||||
Rc::from_raw(userdata as *const BufferMapInfo<WebGPURequest>);
|
||||
let info = Rc::from_raw(
|
||||
userdata
|
||||
as *const BufferMapInfo<(Option<ErrorScopeId>, WebGPURequest)>,
|
||||
);
|
||||
match status {
|
||||
BufferMapAsyncStatus::Success => {
|
||||
if let Err(e) =
|
||||
info.sender.send(WebGPURequest::UpdateWebRenderData {
|
||||
if let Err(e) = info.sender.send((
|
||||
None,
|
||||
WebGPURequest::UpdateWebRenderData {
|
||||
buffer_id: info.buffer_id,
|
||||
buffer_size: info.size,
|
||||
external_id: info.external_id.unwrap(),
|
||||
})
|
||||
{
|
||||
},
|
||||
)) {
|
||||
warn!("Could not send UpdateWebRenderData ({})", e);
|
||||
}
|
||||
},
|
||||
|
@ -1274,6 +1275,18 @@ impl<'a> WGPU<'a> {
|
|||
warn!("Failed to send WebGPUOpResult ({})", w);
|
||||
}
|
||||
}
|
||||
|
||||
fn encoder_record_error<U, T: std::fmt::Debug>(
|
||||
&self,
|
||||
encoder_id: id::CommandEncoderId,
|
||||
result: Result<U, T>,
|
||||
) {
|
||||
if let Err(e) = result {
|
||||
if let Entry::Vacant(v) = self.error_command_encoders.borrow_mut().entry(encoder_id) {
|
||||
v.insert(format!("{:?}", e));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn convert_to_pointer<T: Sized>(obj: Rc<T>) -> *mut u8 {
|
||||
|
|
|
@ -31,14 +31,17 @@ rand = [
|
|||
packages = [
|
||||
"arrayvec",
|
||||
"base64",
|
||||
"cloudabi",
|
||||
"cocoa",
|
||||
"gleam",
|
||||
"libloading",
|
||||
"lock_api",
|
||||
"metal",
|
||||
"miniz_oxide",
|
||||
"num-rational",
|
||||
"parking_lot",
|
||||
"parking_lot_core",
|
||||
"ron",
|
||||
"wayland-sys",
|
||||
|
||||
# https://github.com/servo/servo/issues/26933
|
||||
|
|
|
@ -4,24 +4,12 @@
|
|||
|
||||
|
||||
[cts.html?q=webgpu:api,validation,render_pass,resolve:*]
|
||||
[webgpu:api,validation,render_pass,resolve:resolve_attachment:resolveTargetWidth=4]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass,resolve:resolve_attachment:resolveTargetViewBaseMipLevel=1;resolveTargetViewMipCount=2;resolveTargetHeight=4;resolveTargetWidth=4]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass,resolve:resolve_attachment:colorAttachmentHeight=4]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass,resolve:resolve_attachment:resolveTargetUsage=1]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass,resolve:resolve_attachment:resolveTargetFormat="bgra8unorm"]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass,resolve:resolve_attachment:colorAttachmentSamples=1]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass,resolve:resolve_attachment:resolveTargetFormat="rgba8unorm-srgb"]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -31,21 +19,12 @@
|
|||
[webgpu:api,validation,render_pass,resolve:resolve_attachment:colorAttachmentFormat="rgba8unorm-srgb"]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass,resolve:resolve_attachment:resolveTargetHeight=4]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass,resolve:resolve_attachment:resolveTargetSamples=4]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass,resolve:resolve_attachment:resolveTargetViewArrayLayerCount=2]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass,resolve:resolve_attachment:colorAttachmentFormat="bgra8unorm"]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass,resolve:resolve_attachment:colorAttachmentWidth=4]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass,resolve:resolve_attachment:resolveTargetViewBaseArrayLayer=1;resolveTargetViewArrayLayerCount=2]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -144,9 +123,6 @@
|
|||
[cts.html?q=webgpu:api,validation,setBlendColor:*]
|
||||
|
||||
[cts.html?q=webgpu:api,validation,render_pass_descriptor:*]
|
||||
[webgpu:api,validation,render_pass_descriptor:check_the_use_of_multisampled_textures_as_color_attachments:]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass_descriptor:check_mip_level_count_for_color_or_depth_stencil:mipLevelCount=2;baseMipLevel=0]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -156,39 +132,18 @@
|
|||
[webgpu:api,validation,render_pass_descriptor:use_a_resolve_target_in_a_format_different_than_the_attachment_is_not_allowed:]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass_descriptor:it_is_invalid_to_use_a_resolve_target_in_error_state:]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass_descriptor:size_of_the_resolve_target_must_be_the_same_as_the_color_attachment:]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass_descriptor:attachments_must_have_the_same_size:]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass_descriptor:check_layer_count_for_color_or_depth_stencil:arrayLayerCount=5;baseArrayLayer=0]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass_descriptor:it_is_invalid_to_use_a_resolve_target_with_mipmap_level_count_greater_than_1:]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass_descriptor:it_is_invalid_to_set_resolve_target_if_color_attachment_is_non_multisampled:]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass_descriptor:OOB_color_attachment_indices_are_handled:colorAttachmentsCount=5]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass_descriptor:attachments_must_match_whether_they_are_used_for_color_or_depth_stencil:]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass_descriptor:it_is_invalid_to_use_a_multisampled_resolve_target:]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass_descriptor:it_is_invalid_to_use_a_resolve_target_whose_usage_is_not_output_attachment:]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass_descriptor:check_depth_stencil_attachment_sample_counts_mismatch:]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[cts.html?q=webgpu:examples:*]
|
||||
[webgpu:examples:gpu,async:]
|
||||
|
@ -255,12 +210,6 @@
|
|||
[webgpu:api,validation,render_pass,storeOp:store_op_and_read_only:readonly=false;stencilReadOnly=true]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass,storeOp:store_op_and_read_only:readonly=true;stencilStoreOp="clear"]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass,storeOp:store_op_and_read_only:readonly=true;depthStoreOp="clear"]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,render_pass,storeOp:store_op_and_read_only:readonly="_undef_";depthReadOnly=true]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -273,381 +222,81 @@
|
|||
[cts.html?q=webgpu:api,operation,command_buffer,render,basic:*]
|
||||
|
||||
[cts.html?q=webgpu:api,validation,copyBufferToBuffer:*]
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=1;dstUsage=32]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_offset_alignment:srcOffset=2;dstOffset=0]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_with_invalid_buffer:]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=8;dstUsage=128]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=16;dstUsage=256]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_overflow:srcOffset=0;dstOffset=9007199254740984;copySize=16]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=64;dstUsage=8]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=4;dstUsage=4]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=1;dstUsage=128]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=64;dstUsage=4]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=64;dstUsage=2]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=4;dstUsage=2]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_within_same_buffer:srcOffset=4;dstOffset=0;copySize=8]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=16;dstUsage=64]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_overflow:srcOffset=0;dstOffset=16;copySize=9007199254740984]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=64;dstUsage=512]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_out_of_bounds:srcOffset=0;dstOffset=36;copySize=0]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=16;dstUsage=128]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=32;dstUsage=16]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_out_of_bounds:srcOffset=0;dstOffset=36;copySize=4]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=512;dstUsage=8]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=8;dstUsage=256]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=512;dstUsage=4]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=512;dstUsage=2]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=128;dstUsage=128]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=512;dstUsage=1]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=16;dstUsage=2]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=4;dstUsage=32]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=16;dstUsage=1]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=16;dstUsage=4]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=16;dstUsage=8]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_overflow:srcOffset=0;dstOffset=9007199254740984;copySize=9007199254740984]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=128;dstUsage=64]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=16;dstUsage=16]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_out_of_bounds:srcOffset=36;dstOffset=0;copySize=0]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_out_of_bounds:srcOffset=36;dstOffset=0;copySize=4]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=8;dstUsage=8]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=1;dstUsage=4]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=1;dstUsage=2]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=1;dstUsage=1]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=8;dstUsage=1]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=8;dstUsage=2]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=8;dstUsage=4]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=1;dstUsage=8]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=64;dstUsage=64]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=8;dstUsage=512]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_overflow:srcOffset=9007199254740984;dstOffset=0;copySize=16]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=512;dstUsage=256]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=1;dstUsage=512]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=32;dstUsage=32]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=256;dstUsage=4]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=256;dstUsage=2]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=256;dstUsage=1]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_size_alignment:copySize=5]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_size_alignment:copySize=2]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=128;dstUsage=256]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=256;dstUsage=8]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=4;dstUsage=16]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_within_same_buffer:srcOffset=0;dstOffset=4;copySize=8]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=2;dstUsage=256]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_overflow:srcOffset=9007199254740984;dstOffset=9007199254740984;copySize=9007199254740984]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=2;dstUsage=512]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_offset_alignment:srcOffset=0;dstOffset=2]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_offset_alignment:srcOffset=0;dstOffset=5]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_within_same_buffer:srcOffset=0;dstOffset=8;copySize=4]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=32;dstUsage=128]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=128;dstUsage=32]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=8;dstUsage=32]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=4;dstUsage=512]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=512;dstUsage=16]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_out_of_bounds:srcOffset=0;dstOffset=20;copySize=16]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=32;dstUsage=64]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=4;dstUsage=1]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=512;dstUsage=32]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=64;dstUsage=1]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=256;dstUsage=512]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=4;dstUsage=64]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=16;dstUsage=512]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_within_same_buffer:srcOffset=8;dstOffset=0;copySize=4]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=2;dstUsage=4]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=2;dstUsage=2]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=2;dstUsage=1]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_overflow:srcOffset=0;dstOffset=0;copySize=9007199254740984]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=2;dstUsage=8]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=512;dstUsage=64]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=2;dstUsage=16]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=128;dstUsage=4]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=128;dstUsage=2]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=128;dstUsage=1]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=32;dstUsage=2]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=128;dstUsage=8]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=1;dstUsage=64]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=256;dstUsage=32]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=64;dstUsage=32]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=512;dstUsage=128]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=8;dstUsage=16]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=16;dstUsage=32]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=256;dstUsage=128]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=2;dstUsage=64]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=32;dstUsage=256]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=1;dstUsage=16]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=256;dstUsage=64]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_overflow:srcOffset=9007199254740984;dstOffset=0;copySize=9007199254740984]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=1;dstUsage=256]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=2;dstUsage=128]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=128;dstUsage=16]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=8;dstUsage=64]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=256;dstUsage=256]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=2;dstUsage=32]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_overflow:srcOffset=16;dstOffset=0;copySize=9007199254740984]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=4;dstUsage=256]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=256;dstUsage=16]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=64;dstUsage=128]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=512;dstUsage=512]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_out_of_bounds:srcOffset=20;dstOffset=0;copySize=16]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_out_of_bounds:srcOffset=0;dstOffset=0;copySize=36]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=64;dstUsage=16]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=32;dstUsage=1]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=32;dstUsage=512]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=32;dstUsage=4]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=32;dstUsage=8]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=128;dstUsage=512]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:copy_offset_alignment:srcOffset=5;dstOffset=0]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=4;dstUsage=128]
|
||||
expected: FAIL
|
||||
|
||||
[webgpu:api,validation,copyBufferToBuffer:buffer_usage:srcUsage=64;dstUsage=256]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[cts.html?q=webgpu:api,validation,copy_between_linear_data_and_texture,copyBetweenLinearDataAndTexture_textureRelated:*]
|
||||
expected: CRASH
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue