Bug 1963329 - Update wgpu to revision 9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b. r=webgpu-reviewers,supply-chain-reviewers,webidl,saschanaz,ErichDonGubler

Differential Revision: https://phabricator.services.mozilla.com/D247125
This commit is contained in:
teoxoy
2025-04-30 09:21:24 +00:00
parent 5bb09f929e
commit c02d99f385
399 changed files with 86156 additions and 83616 deletions

View File

@@ -40,9 +40,9 @@ git = "https://github.com/franziskuskiefer/cose-rust"
rev = "43c22248d136c8b38fe42ea709d08da6355cf04b" rev = "43c22248d136c8b38fe42ea709d08da6355cf04b"
replace-with = "vendored-sources" replace-with = "vendored-sources"
[source."git+https://github.com/gfx-rs/wgpu?rev=35f131ff10153e48b790e1f156c864734063ce71"] [source."git+https://github.com/gfx-rs/wgpu?rev=9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"]
git = "https://github.com/gfx-rs/wgpu" git = "https://github.com/gfx-rs/wgpu"
rev = "35f131ff10153e48b790e1f156c864734063ce71" rev = "9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
replace-with = "vendored-sources" replace-with = "vendored-sources"
[source."git+https://github.com/glandium/rust-objc?rev=4de89f5aa9851ceca4d40e7ac1e2759410c04324"] [source."git+https://github.com/glandium/rust-objc?rev=4de89f5aa9851ceca4d40e7ac1e2759410c04324"]

32
Cargo.lock generated
View File

@@ -3624,9 +3624,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67"
[[package]] [[package]]
name = "libc" name = "libc"
version = "0.2.161" version = "0.2.171"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6"
[[package]] [[package]]
name = "libdbus-sys" name = "libdbus-sys"
@@ -3780,9 +3780,9 @@ dependencies = [
[[package]] [[package]]
name = "log" name = "log"
version = "0.4.20" version = "0.4.26"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e"
[[package]] [[package]]
name = "mach" name = "mach"
@@ -3958,13 +3958,13 @@ dependencies = [
[[package]] [[package]]
name = "metal" name = "metal"
version = "0.31.0" version = "0.32.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e" checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605"
dependencies = [ dependencies = [
"bitflags 2.9.0", "bitflags 2.9.0",
"block", "block",
"core-graphics-types 0.1.999", "core-graphics-types 0.2.0",
"foreign-types", "foreign-types",
"log", "log",
"objc", "objc",
@@ -4586,7 +4586,7 @@ checksum = "a2983372caf4480544083767bf2d27defafe32af49ab4df3a0b7fc90793a3664"
[[package]] [[package]]
name = "naga" name = "naga"
version = "25.0.0" version = "25.0.0"
source = "git+https://github.com/gfx-rs/wgpu?rev=35f131ff10153e48b790e1f156c864734063ce71#35f131ff10153e48b790e1f156c864734063ce71" source = "git+https://github.com/gfx-rs/wgpu?rev=9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b#9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
dependencies = [ dependencies = [
"arrayvec", "arrayvec",
"bit-set", "bit-set",
@@ -5007,9 +5007,9 @@ dependencies = [
[[package]] [[package]]
name = "parking_lot" name = "parking_lot"
version = "0.12.1" version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
dependencies = [ dependencies = [
"lock_api", "lock_api",
"parking_lot_core", "parking_lot_core",
@@ -7541,7 +7541,7 @@ dependencies = [
[[package]] [[package]]
name = "wgpu-core" name = "wgpu-core"
version = "25.0.0" version = "25.0.0"
source = "git+https://github.com/gfx-rs/wgpu?rev=35f131ff10153e48b790e1f156c864734063ce71#35f131ff10153e48b790e1f156c864734063ce71" source = "git+https://github.com/gfx-rs/wgpu?rev=9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b#9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
dependencies = [ dependencies = [
"arrayvec", "arrayvec",
"bit-set", "bit-set",
@@ -7571,7 +7571,7 @@ dependencies = [
[[package]] [[package]]
name = "wgpu-core-deps-apple" name = "wgpu-core-deps-apple"
version = "25.0.0" version = "25.0.0"
source = "git+https://github.com/gfx-rs/wgpu?rev=35f131ff10153e48b790e1f156c864734063ce71#35f131ff10153e48b790e1f156c864734063ce71" source = "git+https://github.com/gfx-rs/wgpu?rev=9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b#9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
dependencies = [ dependencies = [
"wgpu-hal", "wgpu-hal",
] ]
@@ -7579,7 +7579,7 @@ dependencies = [
[[package]] [[package]]
name = "wgpu-core-deps-windows-linux-android" name = "wgpu-core-deps-windows-linux-android"
version = "25.0.0" version = "25.0.0"
source = "git+https://github.com/gfx-rs/wgpu?rev=35f131ff10153e48b790e1f156c864734063ce71#35f131ff10153e48b790e1f156c864734063ce71" source = "git+https://github.com/gfx-rs/wgpu?rev=9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b#9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
dependencies = [ dependencies = [
"wgpu-hal", "wgpu-hal",
] ]
@@ -7587,7 +7587,7 @@ dependencies = [
[[package]] [[package]]
name = "wgpu-hal" name = "wgpu-hal"
version = "25.0.0" version = "25.0.0"
source = "git+https://github.com/gfx-rs/wgpu?rev=35f131ff10153e48b790e1f156c864734063ce71#35f131ff10153e48b790e1f156c864734063ce71" source = "git+https://github.com/gfx-rs/wgpu?rev=9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b#9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
dependencies = [ dependencies = [
"android_system_properties", "android_system_properties",
"arrayvec", "arrayvec",
@@ -7597,7 +7597,7 @@ dependencies = [
"block", "block",
"bytemuck", "bytemuck",
"cfg_aliases", "cfg_aliases",
"core-graphics-types 0.1.999", "core-graphics-types 0.2.0",
"gpu-alloc", "gpu-alloc",
"gpu-allocator", "gpu-allocator",
"gpu-descriptor", "gpu-descriptor",
@@ -7623,7 +7623,7 @@ dependencies = [
[[package]] [[package]]
name = "wgpu-types" name = "wgpu-types"
version = "25.0.0" version = "25.0.0"
source = "git+https://github.com/gfx-rs/wgpu?rev=35f131ff10153e48b790e1f156c864734063ce71#35f131ff10153e48b790e1f156c864734063ce71" source = "git+https://github.com/gfx-rs/wgpu?rev=9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b#9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
dependencies = [ dependencies = [
"bitflags 2.9.0", "bitflags 2.9.0",
"bytemuck", "bytemuck",

View File

@@ -168,17 +168,23 @@ ffi::WGPURecordedRenderPass* BeginRenderPass(
return nullptr; return nullptr;
} }
std::array<ffi::WGPURenderPassColorAttachment, WGPUMAX_COLOR_ATTACHMENTS> std::array<ffi::WGPUFfiRenderPassColorAttachment, WGPUMAX_COLOR_ATTACHMENTS>
colorDescs = {}; colorDescs = {};
desc.color_attachments = colorDescs.data(); desc.color_attachments = colorDescs.data();
desc.color_attachments_length = aDesc.mColorAttachments.Length(); desc.color_attachments_length = aDesc.mColorAttachments.Length();
for (size_t i = 0; i < aDesc.mColorAttachments.Length(); ++i) { for (size_t i = 0; i < aDesc.mColorAttachments.Length(); ++i) {
const auto& ca = aDesc.mColorAttachments[i]; const auto& ca = aDesc.mColorAttachments[i];
ffi::WGPURenderPassColorAttachment& cd = colorDescs[i]; ffi::WGPUFfiRenderPassColorAttachment& cd = colorDescs[i];
cd.view = ca.mView->mId; cd.view = ca.mView->mId;
cd.store_op = ConvertStoreOp(ca.mStoreOp); cd.store_op = ConvertStoreOp(ca.mStoreOp);
if (ca.mDepthSlice.WasPassed()) {
cd.depth_slice.tag = ffi::WGPUFfiOption_u32_Some_u32;
cd.depth_slice.some = ca.mDepthSlice.Value();
} else {
cd.depth_slice.tag = ffi::WGPUFfiOption_u32_None_u32;
}
if (ca.mResolveTarget.WasPassed()) { if (ca.mResolveTarget.WasPassed()) {
cd.resolve_target = ca.mResolveTarget.Value().mId; cd.resolve_target = ca.mResolveTarget.Value().mId;
} }

View File

@@ -1110,6 +1110,7 @@ dictionary GPURenderPassDescriptor
dictionary GPURenderPassColorAttachment { dictionary GPURenderPassColorAttachment {
required GPUTextureView view; required GPUTextureView view;
GPUIntegerCoordinate depthSlice;
GPUTextureView resolveTarget; GPUTextureView resolveTarget;
GPUColor clearValue; GPUColor clearValue;

View File

@@ -17,7 +17,7 @@ default = []
[dependencies.wgc] [dependencies.wgc]
package = "wgpu-core" package = "wgpu-core"
git = "https://github.com/gfx-rs/wgpu" git = "https://github.com/gfx-rs/wgpu"
rev = "35f131ff10153e48b790e1f156c864734063ce71" rev = "9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
# TODO: remove the replay feature on the next update containing https://github.com/gfx-rs/wgpu/pull/5182 # TODO: remove the replay feature on the next update containing https://github.com/gfx-rs/wgpu/pull/5182
features = [ features = [
"serde", "serde",
@@ -33,32 +33,32 @@ features = [
[target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies.wgc] [target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies.wgc]
package = "wgpu-core" package = "wgpu-core"
git = "https://github.com/gfx-rs/wgpu" git = "https://github.com/gfx-rs/wgpu"
rev = "35f131ff10153e48b790e1f156c864734063ce71" rev = "9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
features = ["metal"] features = ["metal"]
# We want the wgpu-core Direct3D backends on Windows. # We want the wgpu-core Direct3D backends on Windows.
[target.'cfg(windows)'.dependencies.wgc] [target.'cfg(windows)'.dependencies.wgc]
package = "wgpu-core" package = "wgpu-core"
git = "https://github.com/gfx-rs/wgpu" git = "https://github.com/gfx-rs/wgpu"
rev = "35f131ff10153e48b790e1f156c864734063ce71" rev = "9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
features = ["dx12"] features = ["dx12"]
# We want the wgpu-core Vulkan backend on Linux and Windows. # We want the wgpu-core Vulkan backend on Linux and Windows.
[target.'cfg(any(windows, all(unix, not(any(target_os = "macos", target_os = "ios")))))'.dependencies.wgc] [target.'cfg(any(windows, all(unix, not(any(target_os = "macos", target_os = "ios")))))'.dependencies.wgc]
package = "wgpu-core" package = "wgpu-core"
git = "https://github.com/gfx-rs/wgpu" git = "https://github.com/gfx-rs/wgpu"
rev = "35f131ff10153e48b790e1f156c864734063ce71" rev = "9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
features = ["vulkan"] features = ["vulkan"]
[dependencies.wgt] [dependencies.wgt]
package = "wgpu-types" package = "wgpu-types"
git = "https://github.com/gfx-rs/wgpu" git = "https://github.com/gfx-rs/wgpu"
rev = "35f131ff10153e48b790e1f156c864734063ce71" rev = "9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
[dependencies.wgh] [dependencies.wgh]
package = "wgpu-hal" package = "wgpu-hal"
git = "https://github.com/gfx-rs/wgpu" git = "https://github.com/gfx-rs/wgpu"
rev = "35f131ff10153e48b790e1f156c864734063ce71" rev = "9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
features = ["device_lost_panic", "internal_error_panic"] features = ["device_lost_panic", "internal_error_panic"]
[target.'cfg(windows)'.dependencies] [target.'cfg(windows)'.dependencies]
@@ -68,7 +68,7 @@ windows = { version = "0.58", default-features = false, features = [
[target.'cfg(target_os = "macos")'.dependencies] [target.'cfg(target_os = "macos")'.dependencies]
objc = "0.2" objc = "0.2"
metal = "0.31" metal = "0.32"
io-surface = "0.15" io-surface = "0.15"
[dependencies] [dependencies]

View File

@@ -85,7 +85,6 @@ include = ["BufferUsages"]
"SamplerDescriptor______nsACString" = "WGPUSamplerDescriptor" "SamplerDescriptor______nsACString" = "WGPUSamplerDescriptor"
"AdapterInformation_nsString" = "WGPUAdapterInformation" "AdapterInformation_nsString" = "WGPUAdapterInformation"
"QuerySetDescriptor______nsACString" = "WGPUQuerySetDescriptor" "QuerySetDescriptor______nsACString" = "WGPUQuerySetDescriptor"
"RenderPassColorAttachment_TextureViewId" = "WGPURenderPassColorAttachment"
[parse] [parse]
parse_deps = true parse_deps = true

View File

@@ -8,8 +8,8 @@ origin:
name: wgpu name: wgpu
description: A cross-platform pure-Rust graphics API, modeled on the WebGPU standard description: A cross-platform pure-Rust graphics API, modeled on the WebGPU standard
url: https://github.com/gfx-rs/wgpu url: https://github.com/gfx-rs/wgpu
release: 35f131ff10153e48b790e1f156c864734063ce71 (Wed Apr 23 03:30:36 2025 +0000). release: commit 9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b
revision: 35f131ff10153e48b790e1f156c864734063ce71 revision: 9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b
license: ['MIT', 'Apache-2.0'] license: ['MIT', 'Apache-2.0']
updatebot: updatebot:

View File

@@ -23,7 +23,7 @@ use nsstring::{nsACString, nsString};
use std::fmt::Write; use std::fmt::Write;
use std::{borrow::Cow, ptr}; use std::{borrow::Cow, ptr};
use self::render_pass::RenderPassDepthStencilAttachment; use self::render_pass::{FfiRenderPassColorAttachment, RenderPassDepthStencilAttachment};
pub mod render_pass; pub mod render_pass;
@@ -864,7 +864,7 @@ pub unsafe extern "C" fn wgpu_compute_pass_destroy(pass: *mut crate::command::Re
#[repr(C)] #[repr(C)]
pub struct RenderPassDescriptor<'a> { pub struct RenderPassDescriptor<'a> {
pub label: Option<&'a nsACString>, pub label: Option<&'a nsACString>,
pub color_attachments: *const wgc::command::RenderPassColorAttachment<id::TextureViewId>, pub color_attachments: *const FfiRenderPassColorAttachment,
pub color_attachments_length: usize, pub color_attachments_length: usize,
pub depth_stencil_attachment: Option<&'a RenderPassDepthStencilAttachment>, pub depth_stencil_attachment: Option<&'a RenderPassDepthStencilAttachment>,
pub timestamp_writes: Option<&'a PassTimestampWrites<'a>>, pub timestamp_writes: Option<&'a PassTimestampWrites<'a>>,
@@ -905,7 +905,7 @@ pub unsafe extern "C" fn wgpu_command_encoder_begin_render_pass(
let color_attachments: Vec<_> = make_slice(color_attachments, color_attachments_length) let color_attachments: Vec<_> = make_slice(color_attachments, color_attachments_length)
.iter() .iter()
.map(|format| Some(format.clone())) .map(|format| Some(format.clone().to_wgpu()))
.collect(); .collect();
let depth_stencil_attachment = depth_stencil_attachment.cloned().map(|dsa| dsa.to_wgpu()); let depth_stencil_attachment = depth_stencil_attachment.cloned().map(|dsa| dsa.to_wgpu());
let pass = crate::command::RecordedRenderPass::new(&wgc::command::RenderPassDescriptor { let pass = crate::command::RecordedRenderPass::new(&wgc::command::RenderPassDescriptor {

View File

@@ -32,6 +32,37 @@ impl<T> FfiOption<T> {
} }
} }
/// FFI-safe analogue of [`wgc::command::RenderPassColorAttachment`].
#[repr(C)]
#[derive(Clone, Debug, PartialEq)]
pub struct FfiRenderPassColorAttachment {
pub view: id::TextureViewId,
pub depth_slice: FfiOption<u32>,
pub resolve_target: Option<id::TextureViewId>,
pub load_op: wgc::command::LoadOp<wgt::Color>,
pub store_op: wgc::command::StoreOp,
}
impl FfiRenderPassColorAttachment {
pub(crate) fn to_wgpu(self) -> wgc::command::RenderPassColorAttachment {
let Self {
view,
depth_slice,
resolve_target,
load_op,
store_op,
} = self;
wgc::command::RenderPassColorAttachment {
view,
depth_slice: depth_slice.to_std(),
resolve_target,
load_op,
store_op,
}
}
}
/// FFI-safe analogue of [`wgc::command::RenderPassDepthStencilAttachment`]. /// FFI-safe analogue of [`wgc::command::RenderPassDepthStencilAttachment`].
#[repr(C)] #[repr(C)]
#[derive(Clone, Debug, PartialEq)] #[derive(Clone, Debug, PartialEq)]

View File

@@ -3734,9 +3734,10 @@ delta = "24.0.0 -> 25.0.0"
who = [ who = [
"Erich Gubler <erichdongubler@gmail.com>", "Erich Gubler <erichdongubler@gmail.com>",
"Jim Blandy <jimb@red-bean.com>", "Jim Blandy <jimb@red-bean.com>",
"Teodor Tanasoaia <ttanasoaia@mozilla.com>",
] ]
criteria = "safe-to-deploy" criteria = "safe-to-deploy"
delta = "25.0.0 -> 25.0.0@git:35f131ff10153e48b790e1f156c864734063ce71" delta = "25.0.0 -> 25.0.0@git:9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
importable = false importable = false
[[audits.net2]] [[audits.net2]]
@@ -6023,9 +6024,10 @@ delta = "24.0.0 -> 25.0.0"
who = [ who = [
"Erich Gubler <erichdongubler@gmail.com>", "Erich Gubler <erichdongubler@gmail.com>",
"Jim Blandy <jimb@red-bean.com>", "Jim Blandy <jimb@red-bean.com>",
"Teodor Tanasoaia <ttanasoaia@mozilla.com>",
] ]
criteria = "safe-to-deploy" criteria = "safe-to-deploy"
delta = "25.0.0 -> 25.0.0@git:35f131ff10153e48b790e1f156c864734063ce71" delta = "25.0.0 -> 25.0.0@git:9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
importable = false importable = false
[[audits.wgpu-core-deps-apple]] [[audits.wgpu-core-deps-apple]]
@@ -6037,9 +6039,10 @@ version = "25.0.0"
who = [ who = [
"Erich Gubler <erichdongubler@gmail.com>", "Erich Gubler <erichdongubler@gmail.com>",
"Jim Blandy <jimb@red-bean.com>", "Jim Blandy <jimb@red-bean.com>",
"Teodor Tanasoaia <ttanasoaia@mozilla.com>",
] ]
criteria = "safe-to-deploy" criteria = "safe-to-deploy"
delta = "25.0.0 -> 25.0.0@git:35f131ff10153e48b790e1f156c864734063ce71" delta = "25.0.0 -> 25.0.0@git:9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
importable = false importable = false
[[audits.wgpu-core-deps-windows-linux-android]] [[audits.wgpu-core-deps-windows-linux-android]]
@@ -6051,9 +6054,10 @@ version = "25.0.0"
who = [ who = [
"Erich Gubler <erichdongubler@gmail.com>", "Erich Gubler <erichdongubler@gmail.com>",
"Jim Blandy <jimb@red-bean.com>", "Jim Blandy <jimb@red-bean.com>",
"Teodor Tanasoaia <ttanasoaia@mozilla.com>",
] ]
criteria = "safe-to-deploy" criteria = "safe-to-deploy"
delta = "25.0.0 -> 25.0.0@git:35f131ff10153e48b790e1f156c864734063ce71" delta = "25.0.0 -> 25.0.0@git:9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
importable = false importable = false
[[audits.wgpu-hal]] [[audits.wgpu-hal]]
@@ -6143,9 +6147,10 @@ delta = "24.0.0 -> 25.0.0"
who = [ who = [
"Erich Gubler <erichdongubler@gmail.com>", "Erich Gubler <erichdongubler@gmail.com>",
"Jim Blandy <jimb@red-bean.com>", "Jim Blandy <jimb@red-bean.com>",
"Teodor Tanasoaia <ttanasoaia@mozilla.com>",
] ]
criteria = "safe-to-deploy" criteria = "safe-to-deploy"
delta = "25.0.0 -> 25.0.0@git:35f131ff10153e48b790e1f156c864734063ce71" delta = "25.0.0 -> 25.0.0@git:9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
importable = false importable = false
[[audits.wgpu-types]] [[audits.wgpu-types]]
@@ -6230,9 +6235,10 @@ delta = "24.0.0 -> 25.0.0"
who = [ who = [
"Erich Gubler <erichdongubler@gmail.com>", "Erich Gubler <erichdongubler@gmail.com>",
"Jim Blandy <jimb@red-bean.com>", "Jim Blandy <jimb@red-bean.com>",
"Teodor Tanasoaia <ttanasoaia@mozilla.com>",
] ]
criteria = "safe-to-deploy" criteria = "safe-to-deploy"
delta = "25.0.0 -> 25.0.0@git:35f131ff10153e48b790e1f156c864734063ce71" delta = "25.0.0 -> 25.0.0@git:9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
importable = false importable = false
[[audits.whatsys]] [[audits.whatsys]]
@@ -6670,7 +6676,7 @@ end = "2024-05-06"
criteria = "safe-to-deploy" criteria = "safe-to-deploy"
user-id = 2915 # Amanieu d'Antras (Amanieu) user-id = 2915 # Amanieu d'Antras (Amanieu)
start = "2019-05-04" start = "2019-05-04"
end = "2024-05-05" end = "2026-04-29"
[[trusted.parking_lot_core]] [[trusted.parking_lot_core]]
criteria = "safe-to-deploy" criteria = "safe-to-deploy"

View File

@@ -433,8 +433,8 @@ user-login = "mbrubeck"
user-name = "Matt Brubeck" user-name = "Matt Brubeck"
[[publisher.parking_lot]] [[publisher.parking_lot]]
version = "0.12.1" version = "0.12.3"
when = "2022-05-31" when = "2024-05-24"
user-id = 2915 user-id = 2915
user-login = "Amanieu" user-login = "Amanieu"
user-name = "Amanieu d'Antras" user-name = "Amanieu d'Antras"
@@ -1255,6 +1255,15 @@ who = "Dan Gohman <dev@sunfishcode.online>"
criteria = "safe-to-deploy" criteria = "safe-to-deploy"
delta = "0.2.158 -> 0.2.161" delta = "0.2.158 -> 0.2.161"
[[audits.bytecode-alliance.audits.libc]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
delta = "0.2.161 -> 0.2.171"
notes = """
Lots of unsafe, but that's par for the course with libc, it's all FFI type
definitions updates/adjustments/etc.
"""
[[audits.bytecode-alliance.audits.memoffset]] [[audits.bytecode-alliance.audits.memoffset]]
who = "Alex Crichton <alex@alexcrichton.com>" who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy" criteria = "safe-to-deploy"
@@ -1753,6 +1762,32 @@ delta = "1.0.14 -> 1.0.15"
notes = "Only minor rustdoc changes." notes = "Only minor rustdoc changes."
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
[[audits.google.audits.log]]
who = "danakj <danakj@chromium.org>"
criteria = "safe-to-deploy"
version = "0.4.22"
notes = """
Unsafe review in https://docs.google.com/document/d/1IXQbD1GhTRqNHIGxq6yy7qHqxeO4CwN5noMFXnqyDIM/edit?usp=sharing
Unsafety is generally very well-documented, with one exception, which we
describe in the review doc.
"""
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
[[audits.google.audits.log]]
who = "Lukasz Anforowicz <lukasza@chromium.org>"
criteria = "safe-to-deploy"
delta = "0.4.22 -> 0.4.25"
notes = "No impact on `unsafe` usage in `lib.rs`."
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
[[audits.google.audits.log]]
who = "Daniel Cheng <dcheng@chromium.org>"
criteria = "safe-to-deploy"
delta = "0.4.25 -> 0.4.26"
notes = "Only trivial code and documentation changes."
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
[[audits.google.audits.nom]] [[audits.google.audits.nom]]
who = "danakj@chromium.org" who = "danakj@chromium.org"
criteria = "safe-to-deploy" criteria = "safe-to-deploy"
@@ -2299,20 +2334,6 @@ version = "1.4.0"
notes = "I have read over the macros, and audited the unsafe code." notes = "I have read over the macros, and audited the unsafe code."
aggregated-from = "https://raw.githubusercontent.com/mozilla/cargo-vet/main/supply-chain/audits.toml" aggregated-from = "https://raw.githubusercontent.com/mozilla/cargo-vet/main/supply-chain/audits.toml"
[[audits.mozilla.audits.log]]
who = "Jan-Erik Rediger <jrediger@mozilla.com>"
criteria = "safe-to-deploy"
delta = "0.4.17 -> 0.4.18"
notes = "One dependency removed, others updated (which we don't rely on), some APIs (which we don't use) changed."
aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml"
[[audits.mozilla.audits.log]]
who = "Kagami Sascha Rosylight <krosylight@mozilla.com>"
criteria = "safe-to-deploy"
delta = "0.4.18 -> 0.4.20"
notes = "Only cfg attribute and internal macro changes and module refactorings"
aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml"
[[audits.mozilla.audits.rkv]] [[audits.mozilla.audits.rkv]]
who = "Kagami Sascha Rosylight <krosylight@mozilla.com>" who = "Kagami Sascha Rosylight <krosylight@mozilla.com>"
criteria = "safe-to-deploy" criteria = "safe-to-deploy"

View File

@@ -1521,16 +1521,22 @@
expected: expected:
if os == "win": [OK, ERROR] if os == "win": [OK, ERROR]
[:format="depth16unorm"] [:format="depth16unorm"]
expected: FAIL expected:
if os == "linux": FAIL
if os == "mac": FAIL
[:format="depth24plus"] [:format="depth24plus"]
expected: FAIL expected:
if os == "linux": FAIL
if os == "mac": FAIL
[:format="depth24plus-stencil8"] [:format="depth24plus-stencil8"]
expected: FAIL expected: FAIL
[:format="depth32float"] [:format="depth32float"]
expected: FAIL expected:
if os == "linux": FAIL
if os == "mac": FAIL
[:format="depth32float-stencil8"] [:format="depth32float-stencil8"]
expected: FAIL expected: FAIL

View File

@@ -1,13 +1,18 @@
[cts.https.html?q=webgpu:api,operation,render_pass,resolve:render_pass_resolve:*] [cts.https.html?q=webgpu:api,operation,render_pass,resolve:render_pass_resolve:*]
implementation-status: backlog implementation-status:
if os == "mac": backlog
[:separateResolvePass=false;storeOperation="discard"] [:separateResolvePass=false;storeOperation="discard"]
expected: FAIL expected:
if os == "mac": FAIL
[:separateResolvePass=false;storeOperation="store"] [:separateResolvePass=false;storeOperation="store"]
expected: FAIL expected:
if os == "mac": FAIL
[:separateResolvePass=true;storeOperation="discard"] [:separateResolvePass=true;storeOperation="discard"]
expected: FAIL expected:
if os == "mac": FAIL
[:separateResolvePass=true;storeOperation="store"] [:separateResolvePass=true;storeOperation="store"]
expected: FAIL expected:
if os == "mac": FAIL

View File

@@ -1,202 +1,135 @@
[cts.https.html?q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,color_attachment_only:*] [cts.https.html?q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,color_attachment_only:*]
implementation-status: backlog
[:colorFormat="bgra8unorm";storeOperation="discard"] [:colorFormat="bgra8unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="bgra8unorm";storeOperation="store"] [:colorFormat="bgra8unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="bgra8unorm-srgb";storeOperation="discard"] [:colorFormat="bgra8unorm-srgb";storeOperation="discard"]
expected: FAIL
[:colorFormat="bgra8unorm-srgb";storeOperation="store"] [:colorFormat="bgra8unorm-srgb";storeOperation="store"]
expected: FAIL
[:colorFormat="r16float";storeOperation="discard"] [:colorFormat="r16float";storeOperation="discard"]
expected: FAIL
[:colorFormat="r16float";storeOperation="store"] [:colorFormat="r16float";storeOperation="store"]
expected: FAIL
[:colorFormat="r16sint";storeOperation="discard"] [:colorFormat="r16sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r16sint";storeOperation="store"] [:colorFormat="r16sint";storeOperation="store"]
expected: FAIL
[:colorFormat="r16uint";storeOperation="discard"] [:colorFormat="r16uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r16uint";storeOperation="store"] [:colorFormat="r16uint";storeOperation="store"]
expected: FAIL
[:colorFormat="r32float";storeOperation="discard"] [:colorFormat="r32float";storeOperation="discard"]
expected: FAIL
[:colorFormat="r32float";storeOperation="store"] [:colorFormat="r32float";storeOperation="store"]
expected: FAIL
[:colorFormat="r32sint";storeOperation="discard"] [:colorFormat="r32sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r32sint";storeOperation="store"] [:colorFormat="r32sint";storeOperation="store"]
expected: FAIL
[:colorFormat="r32uint";storeOperation="discard"] [:colorFormat="r32uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r32uint";storeOperation="store"] [:colorFormat="r32uint";storeOperation="store"]
expected: FAIL
[:colorFormat="r8sint";storeOperation="discard"] [:colorFormat="r8sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r8sint";storeOperation="store"] [:colorFormat="r8sint";storeOperation="store"]
expected: FAIL
[:colorFormat="r8uint";storeOperation="discard"] [:colorFormat="r8uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r8uint";storeOperation="store"] [:colorFormat="r8uint";storeOperation="store"]
expected: FAIL
[:colorFormat="r8unorm";storeOperation="discard"] [:colorFormat="r8unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="r8unorm";storeOperation="store"] [:colorFormat="r8unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="rg11b10ufloat";storeOperation="discard"] [:colorFormat="rg11b10ufloat";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg11b10ufloat";storeOperation="store"] [:colorFormat="rg11b10ufloat";storeOperation="store"]
expected: FAIL
[:colorFormat="rg16float";storeOperation="discard"] [:colorFormat="rg16float";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg16float";storeOperation="store"] [:colorFormat="rg16float";storeOperation="store"]
expected: FAIL
[:colorFormat="rg16sint";storeOperation="discard"] [:colorFormat="rg16sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg16sint";storeOperation="store"] [:colorFormat="rg16sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg16uint";storeOperation="discard"] [:colorFormat="rg16uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg16uint";storeOperation="store"] [:colorFormat="rg16uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg32float";storeOperation="discard"] [:colorFormat="rg32float";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg32float";storeOperation="store"] [:colorFormat="rg32float";storeOperation="store"]
expected: FAIL
[:colorFormat="rg32sint";storeOperation="discard"] [:colorFormat="rg32sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg32sint";storeOperation="store"] [:colorFormat="rg32sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg32uint";storeOperation="discard"] [:colorFormat="rg32uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg32uint";storeOperation="store"] [:colorFormat="rg32uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg8sint";storeOperation="discard"] [:colorFormat="rg8sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg8sint";storeOperation="store"] [:colorFormat="rg8sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg8uint";storeOperation="discard"] [:colorFormat="rg8uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg8uint";storeOperation="store"] [:colorFormat="rg8uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg8unorm";storeOperation="discard"] [:colorFormat="rg8unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg8unorm";storeOperation="store"] [:colorFormat="rg8unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="rgb10a2uint";storeOperation="discard"] [:colorFormat="rgb10a2uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgb10a2uint";storeOperation="store"] [:colorFormat="rgb10a2uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgb10a2unorm";storeOperation="discard"] [:colorFormat="rgb10a2unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgb10a2unorm";storeOperation="store"] [:colorFormat="rgb10a2unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba16float";storeOperation="discard"] [:colorFormat="rgba16float";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba16float";storeOperation="store"] [:colorFormat="rgba16float";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba16sint";storeOperation="discard"] [:colorFormat="rgba16sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba16sint";storeOperation="store"] [:colorFormat="rgba16sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba16uint";storeOperation="discard"] [:colorFormat="rgba16uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba16uint";storeOperation="store"] [:colorFormat="rgba16uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba32float";storeOperation="discard"] [:colorFormat="rgba32float";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba32float";storeOperation="store"] [:colorFormat="rgba32float";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba32sint";storeOperation="discard"] [:colorFormat="rgba32sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba32sint";storeOperation="store"] [:colorFormat="rgba32sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba32uint";storeOperation="discard"] [:colorFormat="rgba32uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba32uint";storeOperation="store"] [:colorFormat="rgba32uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba8sint";storeOperation="discard"] [:colorFormat="rgba8sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba8sint";storeOperation="store"] [:colorFormat="rgba8sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba8uint";storeOperation="discard"] [:colorFormat="rgba8uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba8uint";storeOperation="store"] [:colorFormat="rgba8uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba8unorm";storeOperation="discard"] [:colorFormat="rgba8unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba8unorm";storeOperation="store"] [:colorFormat="rgba8unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba8unorm-srgb";storeOperation="discard"] [:colorFormat="rgba8unorm-srgb";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba8unorm-srgb";storeOperation="store"] [:colorFormat="rgba8unorm-srgb";storeOperation="store"]
expected: FAIL
[cts.https.html?q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,color_attachment_with_depth_stencil_attachment:*] [cts.https.html?q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,color_attachment_with_depth_stencil_attachment:*]
@@ -210,24 +143,17 @@
[cts.https.html?q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,depth_stencil_attachment_only:*] [cts.https.html?q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,depth_stencil_attachment_only:*]
implementation-status: backlog
[:depthStencilFormat="depth16unorm";storeOperation="discard"] [:depthStencilFormat="depth16unorm";storeOperation="discard"]
expected: FAIL
[:depthStencilFormat="depth16unorm";storeOperation="store"] [:depthStencilFormat="depth16unorm";storeOperation="store"]
expected: FAIL
[:depthStencilFormat="depth32float";storeOperation="discard"] [:depthStencilFormat="depth32float";storeOperation="discard"]
expected: FAIL
[:depthStencilFormat="depth32float";storeOperation="store"] [:depthStencilFormat="depth32float";storeOperation="store"]
expected: FAIL
[:depthStencilFormat="stencil8";storeOperation="discard"] [:depthStencilFormat="stencil8";storeOperation="discard"]
expected: FAIL
[:depthStencilFormat="stencil8";storeOperation="store"] [:depthStencilFormat="stencil8";storeOperation="store"]
expected: FAIL
[cts.https.html?q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,multiple_color_attachments:*] [cts.https.html?q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,multiple_color_attachments:*]

View File

@@ -1,202 +1,135 @@
[dedicated.https.html?worker=dedicated&q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,color_attachment_only:*] [dedicated.https.html?worker=dedicated&q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,color_attachment_only:*]
implementation-status: backlog
[:colorFormat="bgra8unorm";storeOperation="discard"] [:colorFormat="bgra8unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="bgra8unorm";storeOperation="store"] [:colorFormat="bgra8unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="bgra8unorm-srgb";storeOperation="discard"] [:colorFormat="bgra8unorm-srgb";storeOperation="discard"]
expected: FAIL
[:colorFormat="bgra8unorm-srgb";storeOperation="store"] [:colorFormat="bgra8unorm-srgb";storeOperation="store"]
expected: FAIL
[:colorFormat="r16float";storeOperation="discard"] [:colorFormat="r16float";storeOperation="discard"]
expected: FAIL
[:colorFormat="r16float";storeOperation="store"] [:colorFormat="r16float";storeOperation="store"]
expected: FAIL
[:colorFormat="r16sint";storeOperation="discard"] [:colorFormat="r16sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r16sint";storeOperation="store"] [:colorFormat="r16sint";storeOperation="store"]
expected: FAIL
[:colorFormat="r16uint";storeOperation="discard"] [:colorFormat="r16uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r16uint";storeOperation="store"] [:colorFormat="r16uint";storeOperation="store"]
expected: FAIL
[:colorFormat="r32float";storeOperation="discard"] [:colorFormat="r32float";storeOperation="discard"]
expected: FAIL
[:colorFormat="r32float";storeOperation="store"] [:colorFormat="r32float";storeOperation="store"]
expected: FAIL
[:colorFormat="r32sint";storeOperation="discard"] [:colorFormat="r32sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r32sint";storeOperation="store"] [:colorFormat="r32sint";storeOperation="store"]
expected: FAIL
[:colorFormat="r32uint";storeOperation="discard"] [:colorFormat="r32uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r32uint";storeOperation="store"] [:colorFormat="r32uint";storeOperation="store"]
expected: FAIL
[:colorFormat="r8sint";storeOperation="discard"] [:colorFormat="r8sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r8sint";storeOperation="store"] [:colorFormat="r8sint";storeOperation="store"]
expected: FAIL
[:colorFormat="r8uint";storeOperation="discard"] [:colorFormat="r8uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r8uint";storeOperation="store"] [:colorFormat="r8uint";storeOperation="store"]
expected: FAIL
[:colorFormat="r8unorm";storeOperation="discard"] [:colorFormat="r8unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="r8unorm";storeOperation="store"] [:colorFormat="r8unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="rg11b10ufloat";storeOperation="discard"] [:colorFormat="rg11b10ufloat";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg11b10ufloat";storeOperation="store"] [:colorFormat="rg11b10ufloat";storeOperation="store"]
expected: FAIL
[:colorFormat="rg16float";storeOperation="discard"] [:colorFormat="rg16float";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg16float";storeOperation="store"] [:colorFormat="rg16float";storeOperation="store"]
expected: FAIL
[:colorFormat="rg16sint";storeOperation="discard"] [:colorFormat="rg16sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg16sint";storeOperation="store"] [:colorFormat="rg16sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg16uint";storeOperation="discard"] [:colorFormat="rg16uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg16uint";storeOperation="store"] [:colorFormat="rg16uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg32float";storeOperation="discard"] [:colorFormat="rg32float";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg32float";storeOperation="store"] [:colorFormat="rg32float";storeOperation="store"]
expected: FAIL
[:colorFormat="rg32sint";storeOperation="discard"] [:colorFormat="rg32sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg32sint";storeOperation="store"] [:colorFormat="rg32sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg32uint";storeOperation="discard"] [:colorFormat="rg32uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg32uint";storeOperation="store"] [:colorFormat="rg32uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg8sint";storeOperation="discard"] [:colorFormat="rg8sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg8sint";storeOperation="store"] [:colorFormat="rg8sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg8uint";storeOperation="discard"] [:colorFormat="rg8uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg8uint";storeOperation="store"] [:colorFormat="rg8uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg8unorm";storeOperation="discard"] [:colorFormat="rg8unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg8unorm";storeOperation="store"] [:colorFormat="rg8unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="rgb10a2uint";storeOperation="discard"] [:colorFormat="rgb10a2uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgb10a2uint";storeOperation="store"] [:colorFormat="rgb10a2uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgb10a2unorm";storeOperation="discard"] [:colorFormat="rgb10a2unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgb10a2unorm";storeOperation="store"] [:colorFormat="rgb10a2unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba16float";storeOperation="discard"] [:colorFormat="rgba16float";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba16float";storeOperation="store"] [:colorFormat="rgba16float";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba16sint";storeOperation="discard"] [:colorFormat="rgba16sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba16sint";storeOperation="store"] [:colorFormat="rgba16sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba16uint";storeOperation="discard"] [:colorFormat="rgba16uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba16uint";storeOperation="store"] [:colorFormat="rgba16uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba32float";storeOperation="discard"] [:colorFormat="rgba32float";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba32float";storeOperation="store"] [:colorFormat="rgba32float";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba32sint";storeOperation="discard"] [:colorFormat="rgba32sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba32sint";storeOperation="store"] [:colorFormat="rgba32sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba32uint";storeOperation="discard"] [:colorFormat="rgba32uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba32uint";storeOperation="store"] [:colorFormat="rgba32uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba8sint";storeOperation="discard"] [:colorFormat="rgba8sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba8sint";storeOperation="store"] [:colorFormat="rgba8sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba8uint";storeOperation="discard"] [:colorFormat="rgba8uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba8uint";storeOperation="store"] [:colorFormat="rgba8uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba8unorm";storeOperation="discard"] [:colorFormat="rgba8unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba8unorm";storeOperation="store"] [:colorFormat="rgba8unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba8unorm-srgb";storeOperation="discard"] [:colorFormat="rgba8unorm-srgb";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba8unorm-srgb";storeOperation="store"] [:colorFormat="rgba8unorm-srgb";storeOperation="store"]
expected: FAIL
[dedicated.https.html?worker=dedicated&q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,color_attachment_with_depth_stencil_attachment:*] [dedicated.https.html?worker=dedicated&q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,color_attachment_with_depth_stencil_attachment:*]
@@ -210,24 +143,17 @@
[dedicated.https.html?worker=dedicated&q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,depth_stencil_attachment_only:*] [dedicated.https.html?worker=dedicated&q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,depth_stencil_attachment_only:*]
implementation-status: backlog
[:depthStencilFormat="depth16unorm";storeOperation="discard"] [:depthStencilFormat="depth16unorm";storeOperation="discard"]
expected: FAIL
[:depthStencilFormat="depth16unorm";storeOperation="store"] [:depthStencilFormat="depth16unorm";storeOperation="store"]
expected: FAIL
[:depthStencilFormat="depth32float";storeOperation="discard"] [:depthStencilFormat="depth32float";storeOperation="discard"]
expected: FAIL
[:depthStencilFormat="depth32float";storeOperation="store"] [:depthStencilFormat="depth32float";storeOperation="store"]
expected: FAIL
[:depthStencilFormat="stencil8";storeOperation="discard"] [:depthStencilFormat="stencil8";storeOperation="discard"]
expected: FAIL
[:depthStencilFormat="stencil8";storeOperation="store"] [:depthStencilFormat="stencil8";storeOperation="store"]
expected: FAIL
[dedicated.https.html?worker=dedicated&q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,multiple_color_attachments:*] [dedicated.https.html?worker=dedicated&q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,multiple_color_attachments:*]

View File

@@ -1,202 +1,135 @@
[shared.https.html?worker=shared&q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,color_attachment_only:*] [shared.https.html?worker=shared&q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,color_attachment_only:*]
implementation-status: backlog
[:colorFormat="bgra8unorm";storeOperation="discard"] [:colorFormat="bgra8unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="bgra8unorm";storeOperation="store"] [:colorFormat="bgra8unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="bgra8unorm-srgb";storeOperation="discard"] [:colorFormat="bgra8unorm-srgb";storeOperation="discard"]
expected: FAIL
[:colorFormat="bgra8unorm-srgb";storeOperation="store"] [:colorFormat="bgra8unorm-srgb";storeOperation="store"]
expected: FAIL
[:colorFormat="r16float";storeOperation="discard"] [:colorFormat="r16float";storeOperation="discard"]
expected: FAIL
[:colorFormat="r16float";storeOperation="store"] [:colorFormat="r16float";storeOperation="store"]
expected: FAIL
[:colorFormat="r16sint";storeOperation="discard"] [:colorFormat="r16sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r16sint";storeOperation="store"] [:colorFormat="r16sint";storeOperation="store"]
expected: FAIL
[:colorFormat="r16uint";storeOperation="discard"] [:colorFormat="r16uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r16uint";storeOperation="store"] [:colorFormat="r16uint";storeOperation="store"]
expected: FAIL
[:colorFormat="r32float";storeOperation="discard"] [:colorFormat="r32float";storeOperation="discard"]
expected: FAIL
[:colorFormat="r32float";storeOperation="store"] [:colorFormat="r32float";storeOperation="store"]
expected: FAIL
[:colorFormat="r32sint";storeOperation="discard"] [:colorFormat="r32sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r32sint";storeOperation="store"] [:colorFormat="r32sint";storeOperation="store"]
expected: FAIL
[:colorFormat="r32uint";storeOperation="discard"] [:colorFormat="r32uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r32uint";storeOperation="store"] [:colorFormat="r32uint";storeOperation="store"]
expected: FAIL
[:colorFormat="r8sint";storeOperation="discard"] [:colorFormat="r8sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r8sint";storeOperation="store"] [:colorFormat="r8sint";storeOperation="store"]
expected: FAIL
[:colorFormat="r8uint";storeOperation="discard"] [:colorFormat="r8uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r8uint";storeOperation="store"] [:colorFormat="r8uint";storeOperation="store"]
expected: FAIL
[:colorFormat="r8unorm";storeOperation="discard"] [:colorFormat="r8unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="r8unorm";storeOperation="store"] [:colorFormat="r8unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="rg11b10ufloat";storeOperation="discard"] [:colorFormat="rg11b10ufloat";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg11b10ufloat";storeOperation="store"] [:colorFormat="rg11b10ufloat";storeOperation="store"]
expected: FAIL
[:colorFormat="rg16float";storeOperation="discard"] [:colorFormat="rg16float";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg16float";storeOperation="store"] [:colorFormat="rg16float";storeOperation="store"]
expected: FAIL
[:colorFormat="rg16sint";storeOperation="discard"] [:colorFormat="rg16sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg16sint";storeOperation="store"] [:colorFormat="rg16sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg16uint";storeOperation="discard"] [:colorFormat="rg16uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg16uint";storeOperation="store"] [:colorFormat="rg16uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg32float";storeOperation="discard"] [:colorFormat="rg32float";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg32float";storeOperation="store"] [:colorFormat="rg32float";storeOperation="store"]
expected: FAIL
[:colorFormat="rg32sint";storeOperation="discard"] [:colorFormat="rg32sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg32sint";storeOperation="store"] [:colorFormat="rg32sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg32uint";storeOperation="discard"] [:colorFormat="rg32uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg32uint";storeOperation="store"] [:colorFormat="rg32uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg8sint";storeOperation="discard"] [:colorFormat="rg8sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg8sint";storeOperation="store"] [:colorFormat="rg8sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg8uint";storeOperation="discard"] [:colorFormat="rg8uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg8uint";storeOperation="store"] [:colorFormat="rg8uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg8unorm";storeOperation="discard"] [:colorFormat="rg8unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg8unorm";storeOperation="store"] [:colorFormat="rg8unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="rgb10a2uint";storeOperation="discard"] [:colorFormat="rgb10a2uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgb10a2uint";storeOperation="store"] [:colorFormat="rgb10a2uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgb10a2unorm";storeOperation="discard"] [:colorFormat="rgb10a2unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgb10a2unorm";storeOperation="store"] [:colorFormat="rgb10a2unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba16float";storeOperation="discard"] [:colorFormat="rgba16float";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba16float";storeOperation="store"] [:colorFormat="rgba16float";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba16sint";storeOperation="discard"] [:colorFormat="rgba16sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba16sint";storeOperation="store"] [:colorFormat="rgba16sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba16uint";storeOperation="discard"] [:colorFormat="rgba16uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba16uint";storeOperation="store"] [:colorFormat="rgba16uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba32float";storeOperation="discard"] [:colorFormat="rgba32float";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba32float";storeOperation="store"] [:colorFormat="rgba32float";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba32sint";storeOperation="discard"] [:colorFormat="rgba32sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba32sint";storeOperation="store"] [:colorFormat="rgba32sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba32uint";storeOperation="discard"] [:colorFormat="rgba32uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba32uint";storeOperation="store"] [:colorFormat="rgba32uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba8sint";storeOperation="discard"] [:colorFormat="rgba8sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba8sint";storeOperation="store"] [:colorFormat="rgba8sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba8uint";storeOperation="discard"] [:colorFormat="rgba8uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba8uint";storeOperation="store"] [:colorFormat="rgba8uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba8unorm";storeOperation="discard"] [:colorFormat="rgba8unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba8unorm";storeOperation="store"] [:colorFormat="rgba8unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba8unorm-srgb";storeOperation="discard"] [:colorFormat="rgba8unorm-srgb";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba8unorm-srgb";storeOperation="store"] [:colorFormat="rgba8unorm-srgb";storeOperation="store"]
expected: FAIL
[shared.https.html?worker=shared&q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,color_attachment_with_depth_stencil_attachment:*] [shared.https.html?worker=shared&q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,color_attachment_with_depth_stencil_attachment:*]
@@ -210,24 +143,17 @@
[shared.https.html?worker=shared&q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,depth_stencil_attachment_only:*] [shared.https.html?worker=shared&q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,depth_stencil_attachment_only:*]
implementation-status: backlog
[:depthStencilFormat="depth16unorm";storeOperation="discard"] [:depthStencilFormat="depth16unorm";storeOperation="discard"]
expected: FAIL
[:depthStencilFormat="depth16unorm";storeOperation="store"] [:depthStencilFormat="depth16unorm";storeOperation="store"]
expected: FAIL
[:depthStencilFormat="depth32float";storeOperation="discard"] [:depthStencilFormat="depth32float";storeOperation="discard"]
expected: FAIL
[:depthStencilFormat="depth32float";storeOperation="store"] [:depthStencilFormat="depth32float";storeOperation="store"]
expected: FAIL
[:depthStencilFormat="stencil8";storeOperation="discard"] [:depthStencilFormat="stencil8";storeOperation="discard"]
expected: FAIL
[:depthStencilFormat="stencil8";storeOperation="store"] [:depthStencilFormat="stencil8";storeOperation="store"]
expected: FAIL
[shared.https.html?worker=shared&q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,multiple_color_attachments:*] [shared.https.html?worker=shared&q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,multiple_color_attachments:*]

View File

@@ -1,104 +1,112 @@
[cts.https.html?q=webgpu:api,operation,render_pipeline,sample_mask:alpha_to_coverage_mask:*] [cts.https.html?q=webgpu:api,operation,render_pipeline,sample_mask:alpha_to_coverage_mask:*]
implementation-status: backlog implementation-status:
if os == "win": backlog
[:interpolated=false;sampleCount=4;rasterizationMask=0] [:interpolated=false;sampleCount=4;rasterizationMask=0]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=1] [:interpolated=false;sampleCount=4;rasterizationMask=1]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=10] [:interpolated=false;sampleCount=4;rasterizationMask=10]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=11] [:interpolated=false;sampleCount=4;rasterizationMask=11]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=12] [:interpolated=false;sampleCount=4;rasterizationMask=12]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=13] [:interpolated=false;sampleCount=4;rasterizationMask=13]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=14] [:interpolated=false;sampleCount=4;rasterizationMask=14]
expected: FAIL expected:
if os == "win" and debug: [PASS, FAIL]
[:interpolated=false;sampleCount=4;rasterizationMask=15] [:interpolated=false;sampleCount=4;rasterizationMask=15]
expected: FAIL expected:
if os == "win" and debug: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=2] [:interpolated=false;sampleCount=4;rasterizationMask=2]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=3] [:interpolated=false;sampleCount=4;rasterizationMask=3]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=4] [:interpolated=false;sampleCount=4;rasterizationMask=4]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=5] [:interpolated=false;sampleCount=4;rasterizationMask=5]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=6] [:interpolated=false;sampleCount=4;rasterizationMask=6]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=7] [:interpolated=false;sampleCount=4;rasterizationMask=7]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=8] [:interpolated=false;sampleCount=4;rasterizationMask=8]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=9] [:interpolated=false;sampleCount=4;rasterizationMask=9]
expected: FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=0] [:interpolated=true;sampleCount=4;rasterizationMask=0]
expected: FAIL expected:
if os == "win" and debug: FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=1] [:interpolated=true;sampleCount=4;rasterizationMask=1]
expected: FAIL expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [PASS, FAIL]
[:interpolated=true;sampleCount=4;rasterizationMask=10] [:interpolated=true;sampleCount=4;rasterizationMask=10]
expected: FAIL expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=11] [:interpolated=true;sampleCount=4;rasterizationMask=11]
expected: FAIL expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=12] [:interpolated=true;sampleCount=4;rasterizationMask=12]
expected: FAIL expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=13] [:interpolated=true;sampleCount=4;rasterizationMask=13]
expected: FAIL expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=14] [:interpolated=true;sampleCount=4;rasterizationMask=14]
expected: FAIL expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=15] [:interpolated=true;sampleCount=4;rasterizationMask=15]
expected: FAIL expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=2] [:interpolated=true;sampleCount=4;rasterizationMask=2]
expected: FAIL expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=3] [:interpolated=true;sampleCount=4;rasterizationMask=3]
expected: FAIL expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=4] [:interpolated=true;sampleCount=4;rasterizationMask=4]
expected: FAIL expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=5] [:interpolated=true;sampleCount=4;rasterizationMask=5]
expected: FAIL expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=6] [:interpolated=true;sampleCount=4;rasterizationMask=6]
expected: FAIL expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=7] [:interpolated=true;sampleCount=4;rasterizationMask=7]
expected: FAIL expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=8] [:interpolated=true;sampleCount=4;rasterizationMask=8]
expected: FAIL expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=9] [:interpolated=true;sampleCount=4;rasterizationMask=9]
expected: FAIL expected:
if os == "win": FAIL
[cts.https.html?q=webgpu:api,operation,render_pipeline,sample_mask:fragment_output_mask:*] [cts.https.html?q=webgpu:api,operation,render_pipeline,sample_mask:fragment_output_mask:*]
implementation-status: backlog implementation-status:
if os == "win": backlog
if os == "mac": backlog
expected: expected:
if os == "win": [OK, ERROR] if os == "win": [OK, ERROR]
[:interpolated=false;sampleCount=1;rasterizationMask=0] [:interpolated=false;sampleCount=1;rasterizationMask=0]
@@ -108,52 +116,72 @@
if os == "mac": FAIL if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=0] [:interpolated=false;sampleCount=4;rasterizationMask=0]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=1] [:interpolated=false;sampleCount=4;rasterizationMask=1]
expected: FAIL expected:
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=10] [:interpolated=false;sampleCount=4;rasterizationMask=10]
expected: FAIL expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=11] [:interpolated=false;sampleCount=4;rasterizationMask=11]
expected: FAIL expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=12] [:interpolated=false;sampleCount=4;rasterizationMask=12]
expected: FAIL expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=13] [:interpolated=false;sampleCount=4;rasterizationMask=13]
expected: FAIL expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=14] [:interpolated=false;sampleCount=4;rasterizationMask=14]
expected: FAIL expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=15] [:interpolated=false;sampleCount=4;rasterizationMask=15]
expected: FAIL expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=2] [:interpolated=false;sampleCount=4;rasterizationMask=2]
expected: FAIL expected:
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=3] [:interpolated=false;sampleCount=4;rasterizationMask=3]
expected: FAIL expected:
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=4] [:interpolated=false;sampleCount=4;rasterizationMask=4]
expected: FAIL expected:
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=5] [:interpolated=false;sampleCount=4;rasterizationMask=5]
expected: FAIL expected:
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=6] [:interpolated=false;sampleCount=4;rasterizationMask=6]
expected: FAIL expected:
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=7] [:interpolated=false;sampleCount=4;rasterizationMask=7]
expected: FAIL expected:
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=8] [:interpolated=false;sampleCount=4;rasterizationMask=8]
expected: FAIL expected:
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=9] [:interpolated=false;sampleCount=4;rasterizationMask=9]
expected: FAIL expected:
if os == "mac": FAIL
[:interpolated=true;sampleCount=1;rasterizationMask=0] [:interpolated=true;sampleCount=1;rasterizationMask=0]
expected: expected:
@@ -165,49 +193,80 @@
if os == "mac": FAIL if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=0] [:interpolated=true;sampleCount=4;rasterizationMask=0]
expected: FAIL expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=1] [:interpolated=true;sampleCount=4;rasterizationMask=1]
expected: FAIL expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=10] [:interpolated=true;sampleCount=4;rasterizationMask=10]
expected: FAIL expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=11] [:interpolated=true;sampleCount=4;rasterizationMask=11]
expected: FAIL expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=12] [:interpolated=true;sampleCount=4;rasterizationMask=12]
expected: FAIL expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=13] [:interpolated=true;sampleCount=4;rasterizationMask=13]
expected: FAIL expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=14] [:interpolated=true;sampleCount=4;rasterizationMask=14]
expected: FAIL expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=15] [:interpolated=true;sampleCount=4;rasterizationMask=15]
expected: FAIL expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=2] [:interpolated=true;sampleCount=4;rasterizationMask=2]
expected: FAIL expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=3] [:interpolated=true;sampleCount=4;rasterizationMask=3]
expected: FAIL expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=4] [:interpolated=true;sampleCount=4;rasterizationMask=4]
expected: FAIL expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=5] [:interpolated=true;sampleCount=4;rasterizationMask=5]
expected: FAIL expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=6] [:interpolated=true;sampleCount=4;rasterizationMask=6]
expected: FAIL expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=7] [:interpolated=true;sampleCount=4;rasterizationMask=7]
expected: FAIL expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=8] [:interpolated=true;sampleCount=4;rasterizationMask=8]
expected: FAIL expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=9] [:interpolated=true;sampleCount=4;rasterizationMask=9]
expected: FAIL expected:
if os == "win": FAIL
if os == "mac": FAIL

View File

@@ -1,37 +1,28 @@
[cts.https.html?q=webgpu:api,operation,rendering,3d_texture_slices:multiple_color_attachments,same_mip_level:*] [cts.https.html?q=webgpu:api,operation,rendering,3d_texture_slices:multiple_color_attachments,same_mip_level:*]
implementation-status: backlog implementation-status:
if os == "linux": backlog
[:sameTexture=false] [:sameTexture=false]
expected: FAIL expected:
if os == "linux": FAIL
[:sameTexture=true] [:sameTexture=true]
expected: FAIL
[cts.https.html?q=webgpu:api,operation,rendering,3d_texture_slices:multiple_color_attachments,same_slice_with_diff_mip_levels:*] [cts.https.html?q=webgpu:api,operation,rendering,3d_texture_slices:multiple_color_attachments,same_slice_with_diff_mip_levels:*]
implementation-status: backlog
[:depthSlice=0] [:depthSlice=0]
expected: FAIL
[:depthSlice=1] [:depthSlice=1]
expected: FAIL
[cts.https.html?q=webgpu:api,operation,rendering,3d_texture_slices:one_color_attachment,mip_levels:*] [cts.https.html?q=webgpu:api,operation,rendering,3d_texture_slices:one_color_attachment,mip_levels:*]
implementation-status: backlog
[:mipLevel=0;depthSlice=0] [:mipLevel=0;depthSlice=0]
expected: FAIL
[:mipLevel=0;depthSlice=1] [:mipLevel=0;depthSlice=1]
expected: FAIL
[:mipLevel=1;depthSlice=0] [:mipLevel=1;depthSlice=0]
expected: FAIL
[:mipLevel=1;depthSlice=1] [:mipLevel=1;depthSlice=1]
expected: FAIL
[:mipLevel=2;depthSlice=0] [:mipLevel=2;depthSlice=0]
expected: FAIL
[:mipLevel=2;depthSlice=1] [:mipLevel=2;depthSlice=1]
expected: FAIL

View File

@@ -1,13 +1,13 @@
[cts.https.html?q=webgpu:api,operation,rendering,stencil:stencil_accumulation:*] [cts.https.html?q=webgpu:api,operation,rendering,stencil:stencil_accumulation:*]
implementation-status: backlog implementation-status:
if os == "mac": backlog
[:format="depth24plus-stencil8"] [:format="depth24plus-stencil8"]
expected: FAIL
[:format="depth32float-stencil8"] [:format="depth32float-stencil8"]
expected: FAIL
[:format="stencil8"] [:format="stencil8"]
expected: FAIL expected:
if os == "mac": FAIL
[cts.https.html?q=webgpu:api,operation,rendering,stencil:stencil_compare_func:*] [cts.https.html?q=webgpu:api,operation,rendering,stencil:stencil_compare_func:*]

View File

@@ -7,9 +7,7 @@
[cts.https.html?q=webgpu:api,operation,resource_init,buffer:copy_texture_to_partial_buffer:*] [cts.https.html?q=webgpu:api,operation,resource_init,buffer:copy_texture_to_partial_buffer:*]
implementation-status: backlog
[:] [:]
expected: FAIL
[cts.https.html?q=webgpu:api,operation,resource_init,buffer:index_buffer:*] [cts.https.html?q=webgpu:api,operation,resource_init,buffer:index_buffer:*]

View File

@@ -46,721 +46,541 @@
expected: FAIL expected: FAIL
[:format="r32float";shaderStage="compute";dimension="1d";depthOrArrayLayers=1] [:format="r32float";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="compute";dimension="2d";depthOrArrayLayers=1] [:format="r32float";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="compute";dimension="2d";depthOrArrayLayers=2] [:format="r32float";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32float";shaderStage="compute";dimension="3d";depthOrArrayLayers=1] [:format="r32float";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="compute";dimension="3d";depthOrArrayLayers=2] [:format="r32float";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32float";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1] [:format="r32float";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1] [:format="r32float";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2] [:format="r32float";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32float";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1] [:format="r32float";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2] [:format="r32float";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32float";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1] [:format="r32float";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1] [:format="r32float";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2] [:format="r32float";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32float";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1] [:format="r32float";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2] [:format="r32float";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32sint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1] [:format="r32sint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1] [:format="r32sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2] [:format="r32sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1] [:format="r32sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2] [:format="r32sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32sint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1] [:format="r32sint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1] [:format="r32sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2] [:format="r32sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1] [:format="r32sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2] [:format="r32sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32sint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1] [:format="r32sint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1] [:format="r32sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2] [:format="r32sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1] [:format="r32sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2] [:format="r32sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32uint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1] [:format="r32uint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1] [:format="r32uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2] [:format="r32uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1] [:format="r32uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2] [:format="r32uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32uint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1] [:format="r32uint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1] [:format="r32uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2] [:format="r32uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1] [:format="r32uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2] [:format="r32uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32uint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1] [:format="r32uint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1] [:format="r32uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2] [:format="r32uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1] [:format="r32uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2] [:format="r32uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32float";shaderStage="compute";dimension="1d";depthOrArrayLayers=1] [:format="rg32float";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32float";shaderStage="compute";dimension="2d";depthOrArrayLayers=1] [:format="rg32float";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32float";shaderStage="compute";dimension="2d";depthOrArrayLayers=2] [:format="rg32float";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32float";shaderStage="compute";dimension="3d";depthOrArrayLayers=1] [:format="rg32float";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32float";shaderStage="compute";dimension="3d";depthOrArrayLayers=2] [:format="rg32float";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32float";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1] [:format="rg32float";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32float";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1] [:format="rg32float";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32float";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2] [:format="rg32float";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32float";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1] [:format="rg32float";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32float";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2] [:format="rg32float";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32float";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1] [:format="rg32float";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32float";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1] [:format="rg32float";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32float";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2] [:format="rg32float";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32float";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1] [:format="rg32float";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32float";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2] [:format="rg32float";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32sint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1] [:format="rg32sint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1] [:format="rg32sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2] [:format="rg32sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1] [:format="rg32sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2] [:format="rg32sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32sint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1] [:format="rg32sint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1] [:format="rg32sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2] [:format="rg32sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1] [:format="rg32sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2] [:format="rg32sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32sint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1] [:format="rg32sint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1] [:format="rg32sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2] [:format="rg32sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1] [:format="rg32sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2] [:format="rg32sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32uint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1] [:format="rg32uint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1] [:format="rg32uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2] [:format="rg32uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1] [:format="rg32uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2] [:format="rg32uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32uint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1] [:format="rg32uint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1] [:format="rg32uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2] [:format="rg32uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1] [:format="rg32uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2] [:format="rg32uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32uint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1] [:format="rg32uint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1] [:format="rg32uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2] [:format="rg32uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1] [:format="rg32uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2] [:format="rg32uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16float";shaderStage="compute";dimension="1d";depthOrArrayLayers=1] [:format="rgba16float";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16float";shaderStage="compute";dimension="2d";depthOrArrayLayers=1] [:format="rgba16float";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16float";shaderStage="compute";dimension="2d";depthOrArrayLayers=2] [:format="rgba16float";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16float";shaderStage="compute";dimension="3d";depthOrArrayLayers=1] [:format="rgba16float";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16float";shaderStage="compute";dimension="3d";depthOrArrayLayers=2] [:format="rgba16float";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16float";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1] [:format="rgba16float";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16float";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1] [:format="rgba16float";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16float";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2] [:format="rgba16float";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16float";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1] [:format="rgba16float";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16float";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2] [:format="rgba16float";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16float";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1] [:format="rgba16float";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16float";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1] [:format="rgba16float";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16float";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2] [:format="rgba16float";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16float";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1] [:format="rgba16float";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16float";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2] [:format="rgba16float";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16sint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1] [:format="rgba16sint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1] [:format="rgba16sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2] [:format="rgba16sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1] [:format="rgba16sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2] [:format="rgba16sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16sint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1] [:format="rgba16sint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1] [:format="rgba16sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2] [:format="rgba16sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1] [:format="rgba16sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2] [:format="rgba16sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16sint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1] [:format="rgba16sint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1] [:format="rgba16sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2] [:format="rgba16sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1] [:format="rgba16sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2] [:format="rgba16sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16uint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1] [:format="rgba16uint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1] [:format="rgba16uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2] [:format="rgba16uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1] [:format="rgba16uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2] [:format="rgba16uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16uint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1] [:format="rgba16uint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1] [:format="rgba16uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2] [:format="rgba16uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1] [:format="rgba16uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2] [:format="rgba16uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16uint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1] [:format="rgba16uint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1] [:format="rgba16uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2] [:format="rgba16uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1] [:format="rgba16uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2] [:format="rgba16uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32float";shaderStage="compute";dimension="1d";depthOrArrayLayers=1] [:format="rgba32float";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32float";shaderStage="compute";dimension="2d";depthOrArrayLayers=1] [:format="rgba32float";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32float";shaderStage="compute";dimension="2d";depthOrArrayLayers=2] [:format="rgba32float";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32float";shaderStage="compute";dimension="3d";depthOrArrayLayers=1] [:format="rgba32float";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32float";shaderStage="compute";dimension="3d";depthOrArrayLayers=2] [:format="rgba32float";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32float";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1] [:format="rgba32float";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32float";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1] [:format="rgba32float";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32float";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2] [:format="rgba32float";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32float";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1] [:format="rgba32float";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32float";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2] [:format="rgba32float";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32float";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1] [:format="rgba32float";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32float";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1] [:format="rgba32float";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32float";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2] [:format="rgba32float";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32float";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1] [:format="rgba32float";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32float";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2] [:format="rgba32float";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32sint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1] [:format="rgba32sint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1] [:format="rgba32sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2] [:format="rgba32sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1] [:format="rgba32sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2] [:format="rgba32sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32sint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1] [:format="rgba32sint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1] [:format="rgba32sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2] [:format="rgba32sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1] [:format="rgba32sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2] [:format="rgba32sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32sint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1] [:format="rgba32sint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1] [:format="rgba32sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2] [:format="rgba32sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1] [:format="rgba32sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2] [:format="rgba32sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32uint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1] [:format="rgba32uint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1] [:format="rgba32uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2] [:format="rgba32uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1] [:format="rgba32uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2] [:format="rgba32uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32uint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1] [:format="rgba32uint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1] [:format="rgba32uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2] [:format="rgba32uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1] [:format="rgba32uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2] [:format="rgba32uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32uint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1] [:format="rgba32uint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1] [:format="rgba32uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2] [:format="rgba32uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1] [:format="rgba32uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2] [:format="rgba32uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8sint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1] [:format="rgba8sint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1] [:format="rgba8sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2] [:format="rgba8sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1] [:format="rgba8sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2] [:format="rgba8sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8sint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1] [:format="rgba8sint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1] [:format="rgba8sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2] [:format="rgba8sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1] [:format="rgba8sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2] [:format="rgba8sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8sint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1] [:format="rgba8sint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1] [:format="rgba8sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2] [:format="rgba8sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1] [:format="rgba8sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2] [:format="rgba8sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8snorm";shaderStage="compute";dimension="1d";depthOrArrayLayers=1] [:format="rgba8snorm";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="compute";dimension="2d";depthOrArrayLayers=1] [:format="rgba8snorm";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="compute";dimension="2d";depthOrArrayLayers=2] [:format="rgba8snorm";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="compute";dimension="3d";depthOrArrayLayers=1] [:format="rgba8snorm";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="compute";dimension="3d";depthOrArrayLayers=2] [:format="rgba8snorm";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1] [:format="rgba8snorm";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1] [:format="rgba8snorm";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2] [:format="rgba8snorm";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1] [:format="rgba8snorm";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2] [:format="rgba8snorm";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1] [:format="rgba8snorm";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1] [:format="rgba8snorm";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2] [:format="rgba8snorm";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1] [:format="rgba8snorm";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2] [:format="rgba8snorm";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8uint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1] [:format="rgba8uint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1] [:format="rgba8uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2] [:format="rgba8uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1] [:format="rgba8uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2] [:format="rgba8uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8uint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1] [:format="rgba8uint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1] [:format="rgba8uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2] [:format="rgba8uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1] [:format="rgba8uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2] [:format="rgba8uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8uint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1] [:format="rgba8uint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1] [:format="rgba8uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2] [:format="rgba8uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1] [:format="rgba8uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2] [:format="rgba8uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8unorm";shaderStage="compute";dimension="1d";depthOrArrayLayers=1] [:format="rgba8unorm";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="compute";dimension="2d";depthOrArrayLayers=1] [:format="rgba8unorm";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="compute";dimension="2d";depthOrArrayLayers=2] [:format="rgba8unorm";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="compute";dimension="3d";depthOrArrayLayers=1] [:format="rgba8unorm";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="compute";dimension="3d";depthOrArrayLayers=2] [:format="rgba8unorm";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1] [:format="rgba8unorm";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1] [:format="rgba8unorm";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2] [:format="rgba8unorm";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1] [:format="rgba8unorm";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2] [:format="rgba8unorm";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1] [:format="rgba8unorm";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1] [:format="rgba8unorm";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2] [:format="rgba8unorm";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1] [:format="rgba8unorm";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2] [:format="rgba8unorm";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL expected:
if os == "linux": FAIL

View File

@@ -1,5 +1,6 @@
[cts.https.html?q=webgpu:api,operation,storage_texture,read_write:basic:*] [cts.https.html?q=webgpu:api,operation,storage_texture,read_write:basic:*]
implementation-status: backlog implementation-status:
if os == "win": backlog
[:format="bgra8unorm";shaderStage="compute";textureDimension="1d";depthOrArrayLayers=1] [:format="bgra8unorm";shaderStage="compute";textureDimension="1d";depthOrArrayLayers=1]
[:format="bgra8unorm";shaderStage="compute";textureDimension="2d";depthOrArrayLayers=1] [:format="bgra8unorm";shaderStage="compute";textureDimension="2d";depthOrArrayLayers=1]
@@ -21,94 +22,70 @@
[:format="bgra8unorm";shaderStage="fragment";textureDimension="3d";depthOrArrayLayers=2] [:format="bgra8unorm";shaderStage="fragment";textureDimension="3d";depthOrArrayLayers=2]
[:format="r32float";shaderStage="compute";textureDimension="1d";depthOrArrayLayers=1] [:format="r32float";shaderStage="compute";textureDimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="compute";textureDimension="2d";depthOrArrayLayers=1] [:format="r32float";shaderStage="compute";textureDimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="compute";textureDimension="2d";depthOrArrayLayers=2] [:format="r32float";shaderStage="compute";textureDimension="2d";depthOrArrayLayers=2]
expected: FAIL expected:
if os == "win": FAIL
[:format="r32float";shaderStage="compute";textureDimension="3d";depthOrArrayLayers=1] [:format="r32float";shaderStage="compute";textureDimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="compute";textureDimension="3d";depthOrArrayLayers=2] [:format="r32float";shaderStage="compute";textureDimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32float";shaderStage="fragment";textureDimension="1d";depthOrArrayLayers=1] [:format="r32float";shaderStage="fragment";textureDimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="fragment";textureDimension="2d";depthOrArrayLayers=1] [:format="r32float";shaderStage="fragment";textureDimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="fragment";textureDimension="2d";depthOrArrayLayers=2] [:format="r32float";shaderStage="fragment";textureDimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32float";shaderStage="fragment";textureDimension="3d";depthOrArrayLayers=1] [:format="r32float";shaderStage="fragment";textureDimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="fragment";textureDimension="3d";depthOrArrayLayers=2] [:format="r32float";shaderStage="fragment";textureDimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32sint";shaderStage="compute";textureDimension="1d";depthOrArrayLayers=1] [:format="r32sint";shaderStage="compute";textureDimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="compute";textureDimension="2d";depthOrArrayLayers=1] [:format="r32sint";shaderStage="compute";textureDimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="compute";textureDimension="2d";depthOrArrayLayers=2] [:format="r32sint";shaderStage="compute";textureDimension="2d";depthOrArrayLayers=2]
expected: FAIL expected:
if os == "win": FAIL
[:format="r32sint";shaderStage="compute";textureDimension="3d";depthOrArrayLayers=1] [:format="r32sint";shaderStage="compute";textureDimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="compute";textureDimension="3d";depthOrArrayLayers=2] [:format="r32sint";shaderStage="compute";textureDimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32sint";shaderStage="fragment";textureDimension="1d";depthOrArrayLayers=1] [:format="r32sint";shaderStage="fragment";textureDimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="fragment";textureDimension="2d";depthOrArrayLayers=1] [:format="r32sint";shaderStage="fragment";textureDimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="fragment";textureDimension="2d";depthOrArrayLayers=2] [:format="r32sint";shaderStage="fragment";textureDimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32sint";shaderStage="fragment";textureDimension="3d";depthOrArrayLayers=1] [:format="r32sint";shaderStage="fragment";textureDimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="fragment";textureDimension="3d";depthOrArrayLayers=2] [:format="r32sint";shaderStage="fragment";textureDimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32uint";shaderStage="compute";textureDimension="1d";depthOrArrayLayers=1] [:format="r32uint";shaderStage="compute";textureDimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="compute";textureDimension="2d";depthOrArrayLayers=1] [:format="r32uint";shaderStage="compute";textureDimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="compute";textureDimension="2d";depthOrArrayLayers=2] [:format="r32uint";shaderStage="compute";textureDimension="2d";depthOrArrayLayers=2]
expected: FAIL expected:
if os == "win": FAIL
[:format="r32uint";shaderStage="compute";textureDimension="3d";depthOrArrayLayers=1] [:format="r32uint";shaderStage="compute";textureDimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="compute";textureDimension="3d";depthOrArrayLayers=2] [:format="r32uint";shaderStage="compute";textureDimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32uint";shaderStage="fragment";textureDimension="1d";depthOrArrayLayers=1] [:format="r32uint";shaderStage="fragment";textureDimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="fragment";textureDimension="2d";depthOrArrayLayers=1] [:format="r32uint";shaderStage="fragment";textureDimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="fragment";textureDimension="2d";depthOrArrayLayers=2] [:format="r32uint";shaderStage="fragment";textureDimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32uint";shaderStage="fragment";textureDimension="3d";depthOrArrayLayers=1] [:format="r32uint";shaderStage="fragment";textureDimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="fragment";textureDimension="3d";depthOrArrayLayers=2] [:format="r32uint";shaderStage="fragment";textureDimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32float";shaderStage="compute";textureDimension="1d";depthOrArrayLayers=1] [:format="rg32float";shaderStage="compute";textureDimension="1d";depthOrArrayLayers=1]

View File

@@ -11,7 +11,6 @@
[cts.https.html?q=webgpu:api,validation,createBindGroup:binding_must_contain_resource_defined_in_layout:*] [cts.https.html?q=webgpu:api,validation,createBindGroup:binding_must_contain_resource_defined_in_layout:*]
implementation-status: backlog
[:resourceType="compareSamp";entry={"buffer":{"type":"read-only-storage"}}] [:resourceType="compareSamp";entry={"buffer":{"type":"read-only-storage"}}]
[:resourceType="compareSamp";entry={"buffer":{"type":"storage"}}] [:resourceType="compareSamp";entry={"buffer":{"type":"storage"}}]
@@ -25,10 +24,8 @@
[:resourceType="compareSamp";entry={"sampler":{"type":"non-filtering"}}] [:resourceType="compareSamp";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="compareSamp";entry={"storageTexture":{"access":"read-only","format":"r32float"}}] [:resourceType="compareSamp";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="compareSamp";entry={"storageTexture":{"access":"read-write","format":"r32float"}}] [:resourceType="compareSamp";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="compareSamp";entry={"storageTexture":{"access":"write-only","format":"r32float"}}] [:resourceType="compareSamp";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -49,10 +46,8 @@
[:resourceType="errorBuf";entry={"sampler":{"type":"non-filtering"}}] [:resourceType="errorBuf";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="errorBuf";entry={"storageTexture":{"access":"read-only","format":"r32float"}}] [:resourceType="errorBuf";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="errorBuf";entry={"storageTexture":{"access":"read-write","format":"r32float"}}] [:resourceType="errorBuf";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="errorBuf";entry={"storageTexture":{"access":"write-only","format":"r32float"}}] [:resourceType="errorBuf";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -73,10 +68,8 @@
[:resourceType="errorSamp";entry={"sampler":{"type":"non-filtering"}}] [:resourceType="errorSamp";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="errorSamp";entry={"storageTexture":{"access":"read-only","format":"r32float"}}] [:resourceType="errorSamp";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="errorSamp";entry={"storageTexture":{"access":"read-write","format":"r32float"}}] [:resourceType="errorSamp";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="errorSamp";entry={"storageTexture":{"access":"write-only","format":"r32float"}}] [:resourceType="errorSamp";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -97,10 +90,8 @@
[:resourceType="errorTex";entry={"sampler":{"type":"non-filtering"}}] [:resourceType="errorTex";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="errorTex";entry={"storageTexture":{"access":"read-only","format":"r32float"}}] [:resourceType="errorTex";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="errorTex";entry={"storageTexture":{"access":"read-write","format":"r32float"}}] [:resourceType="errorTex";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="errorTex";entry={"storageTexture":{"access":"write-only","format":"r32float"}}] [:resourceType="errorTex";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -121,10 +112,8 @@
[:resourceType="filtSamp";entry={"sampler":{"type":"non-filtering"}}] [:resourceType="filtSamp";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="filtSamp";entry={"storageTexture":{"access":"read-only","format":"r32float"}}] [:resourceType="filtSamp";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="filtSamp";entry={"storageTexture":{"access":"read-write","format":"r32float"}}] [:resourceType="filtSamp";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="filtSamp";entry={"storageTexture":{"access":"write-only","format":"r32float"}}] [:resourceType="filtSamp";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -145,10 +134,8 @@
[:resourceType="nonFiltSamp";entry={"sampler":{"type":"non-filtering"}}] [:resourceType="nonFiltSamp";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="nonFiltSamp";entry={"storageTexture":{"access":"read-only","format":"r32float"}}] [:resourceType="nonFiltSamp";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="nonFiltSamp";entry={"storageTexture":{"access":"read-write","format":"r32float"}}] [:resourceType="nonFiltSamp";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="nonFiltSamp";entry={"storageTexture":{"access":"write-only","format":"r32float"}}] [:resourceType="nonFiltSamp";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -169,10 +156,8 @@
[:resourceType="readonlyStorageTex";entry={"sampler":{"type":"non-filtering"}}] [:resourceType="readonlyStorageTex";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="readonlyStorageTex";entry={"storageTexture":{"access":"read-only","format":"r32float"}}] [:resourceType="readonlyStorageTex";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="readonlyStorageTex";entry={"storageTexture":{"access":"read-write","format":"r32float"}}] [:resourceType="readonlyStorageTex";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="readonlyStorageTex";entry={"storageTexture":{"access":"write-only","format":"r32float"}}] [:resourceType="readonlyStorageTex";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -193,10 +178,8 @@
[:resourceType="readwriteStorageTex";entry={"sampler":{"type":"non-filtering"}}] [:resourceType="readwriteStorageTex";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="readwriteStorageTex";entry={"storageTexture":{"access":"read-only","format":"r32float"}}] [:resourceType="readwriteStorageTex";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="readwriteStorageTex";entry={"storageTexture":{"access":"read-write","format":"r32float"}}] [:resourceType="readwriteStorageTex";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="readwriteStorageTex";entry={"storageTexture":{"access":"write-only","format":"r32float"}}] [:resourceType="readwriteStorageTex";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -217,10 +200,8 @@
[:resourceType="sampledTex";entry={"sampler":{"type":"non-filtering"}}] [:resourceType="sampledTex";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="sampledTex";entry={"storageTexture":{"access":"read-only","format":"r32float"}}] [:resourceType="sampledTex";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="sampledTex";entry={"storageTexture":{"access":"read-write","format":"r32float"}}] [:resourceType="sampledTex";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="sampledTex";entry={"storageTexture":{"access":"write-only","format":"r32float"}}] [:resourceType="sampledTex";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -241,10 +222,8 @@
[:resourceType="sampledTexMS";entry={"sampler":{"type":"non-filtering"}}] [:resourceType="sampledTexMS";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="sampledTexMS";entry={"storageTexture":{"access":"read-only","format":"r32float"}}] [:resourceType="sampledTexMS";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="sampledTexMS";entry={"storageTexture":{"access":"read-write","format":"r32float"}}] [:resourceType="sampledTexMS";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="sampledTexMS";entry={"storageTexture":{"access":"write-only","format":"r32float"}}] [:resourceType="sampledTexMS";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -265,10 +244,8 @@
[:resourceType="storageBuf";entry={"sampler":{"type":"non-filtering"}}] [:resourceType="storageBuf";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="storageBuf";entry={"storageTexture":{"access":"read-only","format":"r32float"}}] [:resourceType="storageBuf";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="storageBuf";entry={"storageTexture":{"access":"read-write","format":"r32float"}}] [:resourceType="storageBuf";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="storageBuf";entry={"storageTexture":{"access":"write-only","format":"r32float"}}] [:resourceType="storageBuf";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -289,10 +266,8 @@
[:resourceType="uniformBuf";entry={"sampler":{"type":"non-filtering"}}] [:resourceType="uniformBuf";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="uniformBuf";entry={"storageTexture":{"access":"read-only","format":"r32float"}}] [:resourceType="uniformBuf";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="uniformBuf";entry={"storageTexture":{"access":"read-write","format":"r32float"}}] [:resourceType="uniformBuf";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="uniformBuf";entry={"storageTexture":{"access":"write-only","format":"r32float"}}] [:resourceType="uniformBuf";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -313,10 +288,8 @@
[:resourceType="writeonlyStorageTex";entry={"sampler":{"type":"non-filtering"}}] [:resourceType="writeonlyStorageTex";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="writeonlyStorageTex";entry={"storageTexture":{"access":"read-only","format":"r32float"}}] [:resourceType="writeonlyStorageTex";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="writeonlyStorageTex";entry={"storageTexture":{"access":"read-write","format":"r32float"}}] [:resourceType="writeonlyStorageTex";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="writeonlyStorageTex";entry={"storageTexture":{"access":"write-only","format":"r32float"}}] [:resourceType="writeonlyStorageTex";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -326,16 +299,13 @@
[cts.https.html?q=webgpu:api,validation,createBindGroup:binding_resources,device_mismatch:*] [cts.https.html?q=webgpu:api,validation,createBindGroup:binding_resources,device_mismatch:*]
implementation-status: backlog
[:entry={"buffer":{"type":"storage"}}] [:entry={"buffer":{"type":"storage"}}]
[:entry={"sampler":{"type":"filtering"}}] [:entry={"sampler":{"type":"filtering"}}]
[:entry={"storageTexture":{"access":"read-only","format":"r32float"}}] [:entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:entry={"storageTexture":{"access":"read-write","format":"r32float"}}] [:entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:entry={"storageTexture":{"access":"write-only","format":"r32float"}}] [:entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -1239,9 +1209,7 @@
[cts.https.html?q=webgpu:api,validation,createBindGroup:texture_binding_must_have_correct_usage:*] [cts.https.html?q=webgpu:api,validation,createBindGroup:texture_binding_must_have_correct_usage:*]
implementation-status: backlog
[:] [:]
expected: FAIL
[cts.https.html?q=webgpu:api,validation,createBindGroup:texture_must_have_correct_component_type:*] [cts.https.html?q=webgpu:api,validation,createBindGroup:texture_must_have_correct_component_type:*]

View File

@@ -267,148 +267,188 @@
[:format="astc-8x8-unorm-srgb";access="write-only"] [:format="astc-8x8-unorm-srgb";access="write-only"]
[:format="bc1-rgba-unorm";access="read-only"] [:format="bc1-rgba-unorm";access="read-only"]
expected: FAIL
[:format="bc1-rgba-unorm";access="read-write"] [:format="bc1-rgba-unorm";access="read-write"]
expected: FAIL
[:format="bc1-rgba-unorm";access="write-only"] [:format="bc1-rgba-unorm";access="write-only"]
expected: FAIL expected: FAIL
[:format="bc1-rgba-unorm-srgb";access="read-only"] [:format="bc1-rgba-unorm-srgb";access="read-only"]
expected: FAIL
[:format="bc1-rgba-unorm-srgb";access="read-write"] [:format="bc1-rgba-unorm-srgb";access="read-write"]
expected: FAIL
[:format="bc1-rgba-unorm-srgb";access="write-only"] [:format="bc1-rgba-unorm-srgb";access="write-only"]
expected: FAIL expected: FAIL
[:format="bc2-rgba-unorm";access="read-only"] [:format="bc2-rgba-unorm";access="read-only"]
expected: FAIL
[:format="bc2-rgba-unorm";access="read-write"] [:format="bc2-rgba-unorm";access="read-write"]
expected: FAIL
[:format="bc2-rgba-unorm";access="write-only"] [:format="bc2-rgba-unorm";access="write-only"]
expected: FAIL expected: FAIL
[:format="bc2-rgba-unorm-srgb";access="read-only"] [:format="bc2-rgba-unorm-srgb";access="read-only"]
expected: FAIL
[:format="bc2-rgba-unorm-srgb";access="read-write"] [:format="bc2-rgba-unorm-srgb";access="read-write"]
expected: FAIL
[:format="bc2-rgba-unorm-srgb";access="write-only"] [:format="bc2-rgba-unorm-srgb";access="write-only"]
expected: FAIL expected: FAIL
[:format="bc3-rgba-unorm";access="read-only"] [:format="bc3-rgba-unorm";access="read-only"]
expected: FAIL
[:format="bc3-rgba-unorm";access="read-write"] [:format="bc3-rgba-unorm";access="read-write"]
expected: FAIL
[:format="bc3-rgba-unorm";access="write-only"] [:format="bc3-rgba-unorm";access="write-only"]
expected: FAIL expected: FAIL
[:format="bc3-rgba-unorm-srgb";access="read-only"] [:format="bc3-rgba-unorm-srgb";access="read-only"]
expected: FAIL
[:format="bc3-rgba-unorm-srgb";access="read-write"] [:format="bc3-rgba-unorm-srgb";access="read-write"]
expected: FAIL
[:format="bc3-rgba-unorm-srgb";access="write-only"] [:format="bc3-rgba-unorm-srgb";access="write-only"]
expected: FAIL expected: FAIL
[:format="bc4-r-snorm";access="read-only"] [:format="bc4-r-snorm";access="read-only"]
expected: FAIL
[:format="bc4-r-snorm";access="read-write"] [:format="bc4-r-snorm";access="read-write"]
expected: FAIL
[:format="bc4-r-snorm";access="write-only"] [:format="bc4-r-snorm";access="write-only"]
expected: FAIL expected: FAIL
[:format="bc4-r-unorm";access="read-only"] [:format="bc4-r-unorm";access="read-only"]
expected: FAIL
[:format="bc4-r-unorm";access="read-write"] [:format="bc4-r-unorm";access="read-write"]
expected: FAIL
[:format="bc4-r-unorm";access="write-only"] [:format="bc4-r-unorm";access="write-only"]
expected: FAIL expected: FAIL
[:format="bc5-rg-snorm";access="read-only"] [:format="bc5-rg-snorm";access="read-only"]
expected: FAIL
[:format="bc5-rg-snorm";access="read-write"] [:format="bc5-rg-snorm";access="read-write"]
expected: FAIL
[:format="bc5-rg-snorm";access="write-only"] [:format="bc5-rg-snorm";access="write-only"]
expected: FAIL expected: FAIL
[:format="bc5-rg-unorm";access="read-only"] [:format="bc5-rg-unorm";access="read-only"]
expected: FAIL
[:format="bc5-rg-unorm";access="read-write"] [:format="bc5-rg-unorm";access="read-write"]
expected: FAIL
[:format="bc5-rg-unorm";access="write-only"] [:format="bc5-rg-unorm";access="write-only"]
expected: FAIL expected: FAIL
[:format="bc6h-rgb-float";access="read-only"] [:format="bc6h-rgb-float";access="read-only"]
expected: FAIL
[:format="bc6h-rgb-float";access="read-write"] [:format="bc6h-rgb-float";access="read-write"]
expected: FAIL
[:format="bc6h-rgb-float";access="write-only"] [:format="bc6h-rgb-float";access="write-only"]
expected: FAIL expected: FAIL
[:format="bc6h-rgb-ufloat";access="read-only"] [:format="bc6h-rgb-ufloat";access="read-only"]
expected: FAIL
[:format="bc6h-rgb-ufloat";access="read-write"] [:format="bc6h-rgb-ufloat";access="read-write"]
expected: FAIL
[:format="bc6h-rgb-ufloat";access="write-only"] [:format="bc6h-rgb-ufloat";access="write-only"]
expected: FAIL expected: FAIL
[:format="bc7-rgba-unorm";access="read-only"] [:format="bc7-rgba-unorm";access="read-only"]
expected: FAIL
[:format="bc7-rgba-unorm";access="read-write"] [:format="bc7-rgba-unorm";access="read-write"]
expected: FAIL
[:format="bc7-rgba-unorm";access="write-only"] [:format="bc7-rgba-unorm";access="write-only"]
expected: FAIL expected: FAIL
[:format="bc7-rgba-unorm-srgb";access="read-only"] [:format="bc7-rgba-unorm-srgb";access="read-only"]
expected: FAIL
[:format="bc7-rgba-unorm-srgb";access="read-write"] [:format="bc7-rgba-unorm-srgb";access="read-write"]
expected: FAIL
[:format="bc7-rgba-unorm-srgb";access="write-only"] [:format="bc7-rgba-unorm-srgb";access="write-only"]
expected: FAIL expected: FAIL
[:format="bgra8unorm";access="read-only"] [:format="bgra8unorm";access="read-only"]
expected: FAIL
[:format="bgra8unorm";access="read-write"] [:format="bgra8unorm";access="read-write"]
expected: FAIL
[:format="bgra8unorm";access="write-only"] [:format="bgra8unorm";access="write-only"]
[:format="bgra8unorm-srgb";access="read-only"] [:format="bgra8unorm-srgb";access="read-only"]
expected: FAIL
[:format="bgra8unorm-srgb";access="read-write"] [:format="bgra8unorm-srgb";access="read-write"]
expected: FAIL
[:format="bgra8unorm-srgb";access="write-only"] [:format="bgra8unorm-srgb";access="write-only"]
expected: FAIL expected: FAIL
[:format="depth16unorm";access="read-only"] [:format="depth16unorm";access="read-only"]
expected: FAIL
[:format="depth16unorm";access="read-write"] [:format="depth16unorm";access="read-write"]
expected: FAIL
[:format="depth16unorm";access="write-only"] [:format="depth16unorm";access="write-only"]
expected: FAIL expected: FAIL
[:format="depth24plus";access="read-only"] [:format="depth24plus";access="read-only"]
expected: FAIL
[:format="depth24plus";access="read-write"] [:format="depth24plus";access="read-write"]
expected: FAIL
[:format="depth24plus";access="write-only"] [:format="depth24plus";access="write-only"]
expected: FAIL expected: FAIL
[:format="depth24plus-stencil8";access="read-only"] [:format="depth24plus-stencil8";access="read-only"]
expected: FAIL
[:format="depth24plus-stencil8";access="read-write"] [:format="depth24plus-stencil8";access="read-write"]
expected: FAIL
[:format="depth24plus-stencil8";access="write-only"] [:format="depth24plus-stencil8";access="write-only"]
expected: FAIL expected: FAIL
[:format="depth32float";access="read-only"] [:format="depth32float";access="read-only"]
expected: FAIL
[:format="depth32float";access="read-write"] [:format="depth32float";access="read-write"]
expected: FAIL
[:format="depth32float";access="write-only"] [:format="depth32float";access="write-only"]
expected: FAIL expected: FAIL
[:format="depth32float-stencil8";access="read-only"] [:format="depth32float-stencil8";access="read-only"]
expected: FAIL
[:format="depth32float-stencil8";access="read-write"] [:format="depth32float-stencil8";access="read-write"]
expected: FAIL
[:format="depth32float-stencil8";access="write-only"] [:format="depth32float-stencil8";access="write-only"]
expected: FAIL expected: FAIL
@@ -474,256 +514,290 @@
[:format="etc2-rgba8unorm-srgb";access="write-only"] [:format="etc2-rgba8unorm-srgb";access="write-only"]
[:format="r16float";access="read-only"] [:format="r16float";access="read-only"]
expected: FAIL
[:format="r16float";access="read-write"] [:format="r16float";access="read-write"]
expected: FAIL
[:format="r16float";access="write-only"] [:format="r16float";access="write-only"]
expected: FAIL expected: FAIL
[:format="r16sint";access="read-only"] [:format="r16sint";access="read-only"]
expected: FAIL
[:format="r16sint";access="read-write"] [:format="r16sint";access="read-write"]
expected: FAIL
[:format="r16sint";access="write-only"] [:format="r16sint";access="write-only"]
expected: FAIL expected: FAIL
[:format="r16uint";access="read-only"] [:format="r16uint";access="read-only"]
expected: FAIL
[:format="r16uint";access="read-write"] [:format="r16uint";access="read-write"]
expected: FAIL
[:format="r16uint";access="write-only"] [:format="r16uint";access="write-only"]
expected: FAIL expected: FAIL
[:format="r32float";access="read-only"] [:format="r32float";access="read-only"]
expected: FAIL
[:format="r32float";access="read-write"] [:format="r32float";access="read-write"]
expected: FAIL
[:format="r32float";access="write-only"] [:format="r32float";access="write-only"]
[:format="r32sint";access="read-only"] [:format="r32sint";access="read-only"]
expected: FAIL
[:format="r32sint";access="read-write"] [:format="r32sint";access="read-write"]
expected: FAIL
[:format="r32sint";access="write-only"] [:format="r32sint";access="write-only"]
[:format="r32uint";access="read-only"] [:format="r32uint";access="read-only"]
expected: FAIL
[:format="r32uint";access="read-write"] [:format="r32uint";access="read-write"]
expected: FAIL
[:format="r32uint";access="write-only"] [:format="r32uint";access="write-only"]
[:format="r8sint";access="read-only"] [:format="r8sint";access="read-only"]
expected: FAIL
[:format="r8sint";access="read-write"] [:format="r8sint";access="read-write"]
expected: FAIL
[:format="r8sint";access="write-only"] [:format="r8sint";access="write-only"]
expected: FAIL expected: FAIL
[:format="r8snorm";access="read-only"] [:format="r8snorm";access="read-only"]
expected: FAIL
[:format="r8snorm";access="read-write"] [:format="r8snorm";access="read-write"]
expected: FAIL
[:format="r8snorm";access="write-only"] [:format="r8snorm";access="write-only"]
expected: FAIL expected: FAIL
[:format="r8uint";access="read-only"] [:format="r8uint";access="read-only"]
expected: FAIL
[:format="r8uint";access="read-write"] [:format="r8uint";access="read-write"]
expected: FAIL
[:format="r8uint";access="write-only"] [:format="r8uint";access="write-only"]
expected: FAIL expected: FAIL
[:format="r8unorm";access="read-only"] [:format="r8unorm";access="read-only"]
expected: FAIL
[:format="r8unorm";access="read-write"] [:format="r8unorm";access="read-write"]
expected: FAIL
[:format="r8unorm";access="write-only"] [:format="r8unorm";access="write-only"]
expected: FAIL expected: FAIL
[:format="rg11b10ufloat";access="read-only"] [:format="rg11b10ufloat";access="read-only"]
expected: FAIL
[:format="rg11b10ufloat";access="read-write"] [:format="rg11b10ufloat";access="read-write"]
expected: FAIL
[:format="rg11b10ufloat";access="write-only"] [:format="rg11b10ufloat";access="write-only"]
expected: FAIL expected: FAIL
[:format="rg16float";access="read-only"] [:format="rg16float";access="read-only"]
expected: FAIL
[:format="rg16float";access="read-write"] [:format="rg16float";access="read-write"]
expected: FAIL
[:format="rg16float";access="write-only"] [:format="rg16float";access="write-only"]
expected: FAIL expected: FAIL
[:format="rg16sint";access="read-only"] [:format="rg16sint";access="read-only"]
expected: FAIL
[:format="rg16sint";access="read-write"] [:format="rg16sint";access="read-write"]
expected: FAIL
[:format="rg16sint";access="write-only"] [:format="rg16sint";access="write-only"]
expected: FAIL expected: FAIL
[:format="rg16uint";access="read-only"] [:format="rg16uint";access="read-only"]
expected: FAIL
[:format="rg16uint";access="read-write"] [:format="rg16uint";access="read-write"]
expected: FAIL
[:format="rg16uint";access="write-only"] [:format="rg16uint";access="write-only"]
expected: FAIL expected: FAIL
[:format="rg32float";access="read-only"] [:format="rg32float";access="read-only"]
expected: FAIL
[:format="rg32float";access="read-write"] [:format="rg32float";access="read-write"]
expected: FAIL
[:format="rg32float";access="write-only"] [:format="rg32float";access="write-only"]
[:format="rg32sint";access="read-only"] [:format="rg32sint";access="read-only"]
expected: FAIL
[:format="rg32sint";access="read-write"] [:format="rg32sint";access="read-write"]
expected: FAIL
[:format="rg32sint";access="write-only"] [:format="rg32sint";access="write-only"]
[:format="rg32uint";access="read-only"] [:format="rg32uint";access="read-only"]
expected: FAIL
[:format="rg32uint";access="read-write"] [:format="rg32uint";access="read-write"]
expected: FAIL
[:format="rg32uint";access="write-only"] [:format="rg32uint";access="write-only"]
[:format="rg8sint";access="read-only"] [:format="rg8sint";access="read-only"]
expected: FAIL
[:format="rg8sint";access="read-write"] [:format="rg8sint";access="read-write"]
expected: FAIL
[:format="rg8sint";access="write-only"] [:format="rg8sint";access="write-only"]
expected: FAIL expected: FAIL
[:format="rg8snorm";access="read-only"] [:format="rg8snorm";access="read-only"]
expected: FAIL
[:format="rg8snorm";access="read-write"] [:format="rg8snorm";access="read-write"]
expected: FAIL
[:format="rg8snorm";access="write-only"] [:format="rg8snorm";access="write-only"]
expected: FAIL expected: FAIL
[:format="rg8uint";access="read-only"] [:format="rg8uint";access="read-only"]
expected: FAIL
[:format="rg8uint";access="read-write"] [:format="rg8uint";access="read-write"]
expected: FAIL
[:format="rg8uint";access="write-only"] [:format="rg8uint";access="write-only"]
expected: FAIL expected: FAIL
[:format="rg8unorm";access="read-only"] [:format="rg8unorm";access="read-only"]
expected: FAIL
[:format="rg8unorm";access="read-write"] [:format="rg8unorm";access="read-write"]
expected: FAIL
[:format="rg8unorm";access="write-only"] [:format="rg8unorm";access="write-only"]
expected: FAIL expected: FAIL
[:format="rgb10a2uint";access="read-only"] [:format="rgb10a2uint";access="read-only"]
expected: FAIL
[:format="rgb10a2uint";access="read-write"] [:format="rgb10a2uint";access="read-write"]
expected: FAIL
[:format="rgb10a2uint";access="write-only"] [:format="rgb10a2uint";access="write-only"]
expected: FAIL expected: FAIL
[:format="rgb10a2unorm";access="read-only"] [:format="rgb10a2unorm";access="read-only"]
expected: FAIL
[:format="rgb10a2unorm";access="read-write"] [:format="rgb10a2unorm";access="read-write"]
expected: FAIL
[:format="rgb10a2unorm";access="write-only"] [:format="rgb10a2unorm";access="write-only"]
expected: FAIL expected: FAIL
[:format="rgb9e5ufloat";access="read-only"] [:format="rgb9e5ufloat";access="read-only"]
expected: FAIL
[:format="rgb9e5ufloat";access="read-write"] [:format="rgb9e5ufloat";access="read-write"]
expected: FAIL
[:format="rgb9e5ufloat";access="write-only"] [:format="rgb9e5ufloat";access="write-only"]
expected: FAIL expected: FAIL
[:format="rgba16float";access="read-only"] [:format="rgba16float";access="read-only"]
expected: FAIL
[:format="rgba16float";access="read-write"] [:format="rgba16float";access="read-write"]
expected: FAIL
[:format="rgba16float";access="write-only"] [:format="rgba16float";access="write-only"]
[:format="rgba16sint";access="read-only"] [:format="rgba16sint";access="read-only"]
expected: FAIL
[:format="rgba16sint";access="read-write"] [:format="rgba16sint";access="read-write"]
expected: FAIL
[:format="rgba16sint";access="write-only"] [:format="rgba16sint";access="write-only"]
[:format="rgba16uint";access="read-only"] [:format="rgba16uint";access="read-only"]
expected: FAIL
[:format="rgba16uint";access="read-write"] [:format="rgba16uint";access="read-write"]
expected: FAIL
[:format="rgba16uint";access="write-only"] [:format="rgba16uint";access="write-only"]
[:format="rgba32float";access="read-only"] [:format="rgba32float";access="read-only"]
expected: FAIL
[:format="rgba32float";access="read-write"] [:format="rgba32float";access="read-write"]
expected: FAIL
[:format="rgba32float";access="write-only"] [:format="rgba32float";access="write-only"]
[:format="rgba32sint";access="read-only"] [:format="rgba32sint";access="read-only"]
expected: FAIL
[:format="rgba32sint";access="read-write"] [:format="rgba32sint";access="read-write"]
expected: FAIL
[:format="rgba32sint";access="write-only"] [:format="rgba32sint";access="write-only"]
[:format="rgba32uint";access="read-only"] [:format="rgba32uint";access="read-only"]
expected: FAIL
[:format="rgba32uint";access="read-write"] [:format="rgba32uint";access="read-write"]
expected: FAIL
[:format="rgba32uint";access="write-only"] [:format="rgba32uint";access="write-only"]
[:format="rgba8sint";access="read-only"] [:format="rgba8sint";access="read-only"]
expected: FAIL
[:format="rgba8sint";access="read-write"] [:format="rgba8sint";access="read-write"]
expected: FAIL
[:format="rgba8sint";access="write-only"] [:format="rgba8sint";access="write-only"]
[:format="rgba8snorm";access="read-only"] [:format="rgba8snorm";access="read-only"]
expected: FAIL
[:format="rgba8snorm";access="read-write"] [:format="rgba8snorm";access="read-write"]
expected: FAIL
[:format="rgba8snorm";access="write-only"] [:format="rgba8snorm";access="write-only"]
[:format="rgba8uint";access="read-only"] [:format="rgba8uint";access="read-only"]
expected: FAIL
[:format="rgba8uint";access="read-write"] [:format="rgba8uint";access="read-write"]
expected: FAIL
[:format="rgba8uint";access="write-only"] [:format="rgba8uint";access="write-only"]
[:format="rgba8unorm";access="read-only"] [:format="rgba8unorm";access="read-only"]
expected: FAIL
[:format="rgba8unorm";access="read-write"] [:format="rgba8unorm";access="read-write"]
expected: FAIL
[:format="rgba8unorm";access="write-only"] [:format="rgba8unorm";access="write-only"]
[:format="rgba8unorm-srgb";access="read-only"] [:format="rgba8unorm-srgb";access="read-only"]
expected: FAIL
[:format="rgba8unorm-srgb";access="read-write"] [:format="rgba8unorm-srgb";access="read-write"]
expected: FAIL
[:format="rgba8unorm-srgb";access="write-only"] [:format="rgba8unorm-srgb";access="write-only"]
expected: FAIL expected: FAIL
[:format="stencil8";access="read-only"] [:format="stencil8";access="read-only"]
expected: FAIL
[:format="stencil8";access="read-write"] [:format="stencil8";access="read-write"]
expected: FAIL
[:format="stencil8";access="write-only"] [:format="stencil8";access="write-only"]
expected: FAIL expected: FAIL
@@ -773,30 +847,31 @@
[cts.https.html?q=webgpu:api,validation,createBindGroupLayout:visibility,VERTEX_shader_stage_storage_texture_access:*] [cts.https.html?q=webgpu:api,validation,createBindGroupLayout:visibility,VERTEX_shader_stage_storage_texture_access:*]
implementation-status: backlog implementation-status: backlog
[:shaderStage=0] [:shaderStage=0]
expected: FAIL
[:shaderStage=1] [:shaderStage=1]
expected: FAIL
[:shaderStage=2] [:shaderStage=2]
expected: FAIL expected: FAIL
[:shaderStage=3] [:shaderStage=3]
[:shaderStage=4]
expected: FAIL expected: FAIL
[:shaderStage=4]
[:shaderStage=5] [:shaderStage=5]
expected: FAIL
[:shaderStage=6] [:shaderStage=6]
expected: FAIL expected: FAIL
[:shaderStage=7] [:shaderStage=7]
expected: FAIL
[cts.https.html?q=webgpu:api,validation,createBindGroupLayout:visibility:*] [cts.https.html?q=webgpu:api,validation,createBindGroupLayout:visibility:*]
implementation-status: backlog implementation-status: backlog
[:visibility=0] [:visibility=0]
expected: FAIL
[:visibility=1] [:visibility=1]
expected: FAIL expected: FAIL
@@ -808,7 +883,6 @@
expected: FAIL expected: FAIL
[:visibility=4] [:visibility=4]
expected: FAIL
[:visibility=5] [:visibility=5]
expected: FAIL expected: FAIL

View File

@@ -4861,7 +4861,6 @@
[cts.https.html?q=webgpu:api,validation,createTexture:texture_usage:*] [cts.https.html?q=webgpu:api,validation,createTexture:texture_usage:*]
implementation-status: backlog
[:dimension="1d";format="bgra8unorm"] [:dimension="1d";format="bgra8unorm"]
[:dimension="1d";format="bgra8unorm-srgb"] [:dimension="1d";format="bgra8unorm-srgb"]
@@ -5127,111 +5126,78 @@
[:dimension="2d";format="stencil8"] [:dimension="2d";format="stencil8"]
[:dimension="3d";format="bgra8unorm"] [:dimension="3d";format="bgra8unorm"]
expected: FAIL
[:dimension="3d";format="bgra8unorm-srgb"] [:dimension="3d";format="bgra8unorm-srgb"]
expected: FAIL
[:dimension="3d";format="r16float"] [:dimension="3d";format="r16float"]
expected: FAIL
[:dimension="3d";format="r16sint"] [:dimension="3d";format="r16sint"]
expected: FAIL
[:dimension="3d";format="r16uint"] [:dimension="3d";format="r16uint"]
expected: FAIL
[:dimension="3d";format="r32float"] [:dimension="3d";format="r32float"]
expected: FAIL
[:dimension="3d";format="r32sint"] [:dimension="3d";format="r32sint"]
expected: FAIL
[:dimension="3d";format="r32uint"] [:dimension="3d";format="r32uint"]
expected: FAIL
[:dimension="3d";format="r8sint"] [:dimension="3d";format="r8sint"]
expected: FAIL
[:dimension="3d";format="r8snorm"] [:dimension="3d";format="r8snorm"]
[:dimension="3d";format="r8uint"] [:dimension="3d";format="r8uint"]
expected: FAIL
[:dimension="3d";format="r8unorm"] [:dimension="3d";format="r8unorm"]
expected: FAIL
[:dimension="3d";format="rg11b10ufloat"] [:dimension="3d";format="rg11b10ufloat"]
expected: FAIL
[:dimension="3d";format="rg16float"] [:dimension="3d";format="rg16float"]
expected: FAIL
[:dimension="3d";format="rg16sint"] [:dimension="3d";format="rg16sint"]
expected: FAIL
[:dimension="3d";format="rg16uint"] [:dimension="3d";format="rg16uint"]
expected: FAIL
[:dimension="3d";format="rg32float"] [:dimension="3d";format="rg32float"]
expected: FAIL
[:dimension="3d";format="rg32sint"] [:dimension="3d";format="rg32sint"]
expected: FAIL
[:dimension="3d";format="rg32uint"] [:dimension="3d";format="rg32uint"]
expected: FAIL
[:dimension="3d";format="rg8sint"] [:dimension="3d";format="rg8sint"]
expected: FAIL
[:dimension="3d";format="rg8snorm"] [:dimension="3d";format="rg8snorm"]
[:dimension="3d";format="rg8uint"] [:dimension="3d";format="rg8uint"]
expected: FAIL
[:dimension="3d";format="rg8unorm"] [:dimension="3d";format="rg8unorm"]
expected: FAIL
[:dimension="3d";format="rgb10a2uint"] [:dimension="3d";format="rgb10a2uint"]
expected: FAIL
[:dimension="3d";format="rgb10a2unorm"] [:dimension="3d";format="rgb10a2unorm"]
expected: FAIL
[:dimension="3d";format="rgb9e5ufloat"] [:dimension="3d";format="rgb9e5ufloat"]
[:dimension="3d";format="rgba16float"] [:dimension="3d";format="rgba16float"]
expected: FAIL
[:dimension="3d";format="rgba16sint"] [:dimension="3d";format="rgba16sint"]
expected: FAIL
[:dimension="3d";format="rgba16uint"] [:dimension="3d";format="rgba16uint"]
expected: FAIL
[:dimension="3d";format="rgba32float"] [:dimension="3d";format="rgba32float"]
expected: FAIL
[:dimension="3d";format="rgba32sint"] [:dimension="3d";format="rgba32sint"]
expected: FAIL
[:dimension="3d";format="rgba32uint"] [:dimension="3d";format="rgba32uint"]
expected: FAIL
[:dimension="3d";format="rgba8sint"] [:dimension="3d";format="rgba8sint"]
expected: FAIL
[:dimension="3d";format="rgba8snorm"] [:dimension="3d";format="rgba8snorm"]
[:dimension="3d";format="rgba8uint"] [:dimension="3d";format="rgba8uint"]
expected: FAIL
[:dimension="3d";format="rgba8unorm"] [:dimension="3d";format="rgba8unorm"]
expected: FAIL
[:dimension="3d";format="rgba8unorm-srgb"] [:dimension="3d";format="rgba8unorm-srgb"]
expected: FAIL
[:dimension="_undef_";format="astc-10x10-unorm"] [:dimension="_undef_";format="astc-10x10-unorm"]

View File

@@ -115,27 +115,19 @@
if os == "mac": [OK, TIMEOUT] if os == "mac": [OK, TIMEOUT]
[:encoderType="compute%20pass";call="dispatch";callWithZero=false] [:encoderType="compute%20pass";call="dispatch";callWithZero=false]
expected: expected:
if os == "win": FAIL if os == "mac": [PASS, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:encoderType="compute%20pass";call="dispatch";callWithZero=true] [:encoderType="compute%20pass";call="dispatch";callWithZero=true]
expected: expected:
if os == "win": FAIL if os == "mac": [PASS, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:encoderType="compute%20pass";call="dispatchIndirect";callWithZero=false] [:encoderType="compute%20pass";call="dispatchIndirect";callWithZero=false]
expected: expected:
if os == "win": FAIL if os == "mac": [PASS, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:encoderType="compute%20pass";call="dispatchIndirect";callWithZero=true] [:encoderType="compute%20pass";call="dispatchIndirect";callWithZero=true]
expected: expected:
if os == "win": FAIL if os == "mac": [PASS, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:encoderType="render%20bundle";call="draw";callWithZero=false] [:encoderType="render%20bundle";call="draw";callWithZero=false]
expected: expected:
@@ -187,51 +179,35 @@
[:encoderType="render%20pass";call="draw";callWithZero=false] [:encoderType="render%20pass";call="draw";callWithZero=false]
expected: expected:
if os == "win": FAIL if os == "mac": [PASS, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:encoderType="render%20pass";call="draw";callWithZero=true] [:encoderType="render%20pass";call="draw";callWithZero=true]
expected: expected:
if os == "win": FAIL if os == "mac": [PASS, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:encoderType="render%20pass";call="drawIndexed";callWithZero=false] [:encoderType="render%20pass";call="drawIndexed";callWithZero=false]
expected: expected:
if os == "win": FAIL if os == "mac": [PASS, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:encoderType="render%20pass";call="drawIndexed";callWithZero=true] [:encoderType="render%20pass";call="drawIndexed";callWithZero=true]
expected: expected:
if os == "win": FAIL if os == "mac": [PASS, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:encoderType="render%20pass";call="drawIndexedIndirect";callWithZero=false] [:encoderType="render%20pass";call="drawIndexedIndirect";callWithZero=false]
expected: expected:
if os == "win": FAIL if os == "mac": [PASS, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:encoderType="render%20pass";call="drawIndexedIndirect";callWithZero=true] [:encoderType="render%20pass";call="drawIndexedIndirect";callWithZero=true]
expected: expected:
if os == "win": FAIL if os == "mac": [PASS, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:encoderType="render%20pass";call="drawIndirect";callWithZero=false] [:encoderType="render%20pass";call="drawIndirect";callWithZero=false]
expected: expected:
if os == "win": FAIL if os == "mac": [PASS, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[:encoderType="render%20pass";call="drawIndirect";callWithZero=true] [:encoderType="render%20pass";call="drawIndirect";callWithZero=true]
expected: expected:
if os == "win": FAIL if os == "mac": [PASS, TIMEOUT, NOTRUN]
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
[cts.https.html?q=webgpu:api,validation,encoding,programmable,pipeline_bind_group_compat:bgl_visibility_mismatch:*] [cts.https.html?q=webgpu:api,validation,encoding,programmable,pipeline_bind_group_compat:bgl_visibility_mismatch:*]

View File

@@ -163,61 +163,80 @@
if os == "win": FAIL if os == "win": FAIL
[:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="compareSamp"] [:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="compareSamp"]
expected: FAIL expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="filtSamp"] [:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="filtSamp"]
expected: FAIL expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="readonlyStorageBuf"] [:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="readonlyStorageBuf"]
expected: FAIL expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="readonlyStorageTex"] [:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="readonlyStorageTex"]
expected: FAIL expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="readwriteStorageTex"] [:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="readwriteStorageTex"]
expected: FAIL expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="sampledTex"] [:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="sampledTex"]
expected: FAIL expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="sampledTexMS"] [:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="sampledTexMS"]
expected: FAIL expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="storageBuf"] [:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="storageBuf"]
expected: FAIL expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="uniformBuf"] [:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="uniformBuf"]
expected: FAIL expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="writeonlyStorageTex"] [:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="writeonlyStorageTex"]
expected: FAIL expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="compareSamp"] [:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="compareSamp"]
expected: FAIL expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="filtSamp"] [:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="filtSamp"]
expected: FAIL expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="readonlyStorageBuf"] [:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="readonlyStorageBuf"]
expected: FAIL expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="readonlyStorageTex"] [:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="readonlyStorageTex"]
expected: FAIL expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="readwriteStorageTex"] [:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="readwriteStorageTex"]
expected: FAIL expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="sampledTex"] [:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="sampledTex"]
expected: FAIL expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="sampledTexMS"] [:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="sampledTexMS"]
expected: FAIL expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="storageBuf"] [:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="storageBuf"]
expected: FAIL expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="uniformBuf"] [:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="uniformBuf"]
expected: FAIL expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="writeonlyStorageTex"] [:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="writeonlyStorageTex"]
expected: FAIL expected: FAIL

View File

@@ -1296,28 +1296,21 @@
[cts.https.html?q=webgpu:api,validation,render_pipeline,vertex_state:vertex_shader_input_location_in_vertex_state:*] [cts.https.html?q=webgpu:api,validation,render_pipeline,vertex_state:vertex_shader_input_location_in_vertex_state:*]
implementation-status: backlog
[:] [:]
expected: FAIL
[cts.https.html?q=webgpu:api,validation,render_pipeline,vertex_state:vertex_shader_input_location_limit:*] [cts.https.html?q=webgpu:api,validation,render_pipeline,vertex_state:vertex_shader_input_location_limit:*]
implementation-status: backlog
[:] [:]
expected: FAIL
[cts.https.html?q=webgpu:api,validation,render_pipeline,vertex_state:vertex_shader_type_matches_attribute_format:*] [cts.https.html?q=webgpu:api,validation,render_pipeline,vertex_state:vertex_shader_type_matches_attribute_format:*]
implementation-status: backlog
[:format="float16"] [:format="float16"]
expected: FAIL
[:format="float16x2"] [:format="float16x2"]
[:format="float16x4"] [:format="float16x4"]
[:format="float32"] [:format="float32"]
expected: FAIL
[:format="float32x2"] [:format="float32x2"]
@@ -1326,14 +1319,12 @@
[:format="float32x4"] [:format="float32x4"]
[:format="sint16"] [:format="sint16"]
expected: FAIL
[:format="sint16x2"] [:format="sint16x2"]
[:format="sint16x4"] [:format="sint16x4"]
[:format="sint32"] [:format="sint32"]
expected: FAIL
[:format="sint32x2"] [:format="sint32x2"]
@@ -1342,35 +1333,30 @@
[:format="sint32x4"] [:format="sint32x4"]
[:format="sint8"] [:format="sint8"]
expected: FAIL
[:format="sint8x2"] [:format="sint8x2"]
[:format="sint8x4"] [:format="sint8x4"]
[:format="snorm16"] [:format="snorm16"]
expected: FAIL
[:format="snorm16x2"] [:format="snorm16x2"]
[:format="snorm16x4"] [:format="snorm16x4"]
[:format="snorm8"] [:format="snorm8"]
expected: FAIL
[:format="snorm8x2"] [:format="snorm8x2"]
[:format="snorm8x4"] [:format="snorm8x4"]
[:format="uint16"] [:format="uint16"]
expected: FAIL
[:format="uint16x2"] [:format="uint16x2"]
[:format="uint16x4"] [:format="uint16x4"]
[:format="uint32"] [:format="uint32"]
expected: FAIL
[:format="uint32x2"] [:format="uint32x2"]
@@ -1379,7 +1365,6 @@
[:format="uint32x4"] [:format="uint32x4"]
[:format="uint8"] [:format="uint8"]
expected: FAIL
[:format="uint8x2"] [:format="uint8x2"]
@@ -1388,14 +1373,12 @@
[:format="unorm10-10-10-2"] [:format="unorm10-10-10-2"]
[:format="unorm16"] [:format="unorm16"]
expected: FAIL
[:format="unorm16x2"] [:format="unorm16x2"]
[:format="unorm16x4"] [:format="unorm16x4"]
[:format="unorm8"] [:format="unorm8"]
expected: FAIL
[:format="unorm8x2"] [:format="unorm8x2"]

View File

@@ -6,7 +6,6 @@
expected: FAIL expected: FAIL
[:type0="readonly-storage-texture";type1="readonly-storage-texture"] [:type0="readonly-storage-texture";type1="readonly-storage-texture"]
expected: FAIL
[:type0="readonly-storage-texture";type1="readwrite-storage-texture"] [:type0="readonly-storage-texture";type1="readwrite-storage-texture"]
expected: FAIL expected: FAIL
@@ -24,7 +23,6 @@
expected: FAIL expected: FAIL
[:type0="readwrite-storage-texture";type1="readwrite-storage-texture"] [:type0="readwrite-storage-texture";type1="readwrite-storage-texture"]
expected: FAIL
[:type0="readwrite-storage-texture";type1="render-target"] [:type0="readwrite-storage-texture";type1="render-target"]
expected: FAIL expected: FAIL
@@ -104,20 +102,16 @@
[:compute=false;callDrawOrDispatch=true;entry={"texture":{"sampleType":"unfilterable-float"}}] [:compute=false;callDrawOrDispatch=true;entry={"texture":{"sampleType":"unfilterable-float"}}]
[:compute=true;callDrawOrDispatch=false;entry={"storageTexture":{"access":"read-only","format":"r32float"}}] [:compute=true;callDrawOrDispatch=false;entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:compute=true;callDrawOrDispatch=false;entry={"storageTexture":{"access":"read-write","format":"r32float"}}] [:compute=true;callDrawOrDispatch=false;entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:compute=true;callDrawOrDispatch=false;entry={"storageTexture":{"access":"write-only","format":"r32float"}}] [:compute=true;callDrawOrDispatch=false;entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
[:compute=true;callDrawOrDispatch=false;entry={"texture":{"sampleType":"unfilterable-float"}}] [:compute=true;callDrawOrDispatch=false;entry={"texture":{"sampleType":"unfilterable-float"}}]
[:compute=true;callDrawOrDispatch=true;entry={"storageTexture":{"access":"read-only","format":"r32float"}}] [:compute=true;callDrawOrDispatch=true;entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:compute=true;callDrawOrDispatch=true;entry={"storageTexture":{"access":"read-write","format":"r32float"}}] [:compute=true;callDrawOrDispatch=true;entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:compute=true;callDrawOrDispatch=true;entry={"storageTexture":{"access":"write-only","format":"r32float"}}] [:compute=true;callDrawOrDispatch=true;entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -163,24 +157,18 @@
expected: FAIL expected: FAIL
[:dispatch="none";usage1="readonly-storage-texture";usage2="readwrite-storage-texture"] [:dispatch="none";usage1="readonly-storage-texture";usage2="readwrite-storage-texture"]
expected: FAIL
[:dispatch="none";usage1="readonly-storage-texture";usage2="writeonly-storage-texture"] [:dispatch="none";usage1="readonly-storage-texture";usage2="writeonly-storage-texture"]
expected: FAIL
[:dispatch="none";usage1="sampled-texture";usage2="readwrite-storage-texture"] [:dispatch="none";usage1="sampled-texture";usage2="readwrite-storage-texture"]
expected: FAIL
[:dispatch="none";usage1="sampled-texture";usage2="writeonly-storage-texture"] [:dispatch="none";usage1="sampled-texture";usage2="writeonly-storage-texture"]
[:dispatch="none";usage1="writeonly-storage-texture";usage2="readwrite-storage-texture"] [:dispatch="none";usage1="writeonly-storage-texture";usage2="readwrite-storage-texture"]
expected: FAIL
[cts.https.html?q=webgpu:api,validation,resource_usages,texture,in_pass_encoder:scope,pass_boundary,compute:*] [cts.https.html?q=webgpu:api,validation,resource_usages,texture,in_pass_encoder:scope,pass_boundary,compute:*]
implementation-status: backlog
[:] [:]
expected: FAIL
[cts.https.html?q=webgpu:api,validation,resource_usages,texture,in_pass_encoder:scope,pass_boundary,render:*] [cts.https.html?q=webgpu:api,validation,resource_usages,texture,in_pass_encoder:scope,pass_boundary,render:*]
@@ -282,7 +270,6 @@
[cts.https.html?q=webgpu:api,validation,resource_usages,texture,in_pass_encoder:subresources_and_binding_types_combination_for_color:*] [cts.https.html?q=webgpu:api,validation,resource_usages,texture,in_pass_encoder:subresources_and_binding_types_combination_for_color:*]
implementation-status: backlog implementation-status: backlog
[:compute=false;type0="readonly-storage-texture";type1="readonly-storage-texture"] [:compute=false;type0="readonly-storage-texture";type1="readonly-storage-texture"]
expected: FAIL
[:compute=false;type0="readonly-storage-texture";type1="readwrite-storage-texture"] [:compute=false;type0="readonly-storage-texture";type1="readwrite-storage-texture"]
expected: FAIL expected: FAIL
@@ -294,7 +281,6 @@
expected: FAIL expected: FAIL
[:compute=false;type0="readwrite-storage-texture";type1="readwrite-storage-texture"] [:compute=false;type0="readwrite-storage-texture";type1="readwrite-storage-texture"]
expected: FAIL
[:compute=false;type0="readwrite-storage-texture";type1="render-target"] [:compute=false;type0="readwrite-storage-texture";type1="render-target"]
expected: FAIL expected: FAIL
@@ -325,7 +311,6 @@
[:compute=false;type0="writeonly-storage-texture";type1="writeonly-storage-texture"] [:compute=false;type0="writeonly-storage-texture";type1="writeonly-storage-texture"]
[:compute=true;type0="readonly-storage-texture";type1="readonly-storage-texture"] [:compute=true;type0="readonly-storage-texture";type1="readonly-storage-texture"]
expected: FAIL
[:compute=true;type0="readonly-storage-texture";type1="readwrite-storage-texture"] [:compute=true;type0="readonly-storage-texture";type1="readwrite-storage-texture"]
expected: FAIL expected: FAIL
@@ -1125,577 +1110,409 @@
expected: FAIL expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true] [:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL expected: FAIL

View File

@@ -1,7 +1,6 @@
[cts.https.html?q=webgpu:api,validation,resource_usages,texture,in_render_misc:subresources,set_bind_group_on_same_index_color_texture:*] [cts.https.html?q=webgpu:api,validation,resource_usages,texture,in_render_misc:subresources,set_bind_group_on_same_index_color_texture:*]
implementation-status: backlog implementation-status: backlog
[:useDifferentTextureAsTexture2=false;baseLayer2=0;view1Binding="readonly-storage-texture";view2Binding="readonly-storage-texture"] [:useDifferentTextureAsTexture2=false;baseLayer2=0;view1Binding="readonly-storage-texture";view2Binding="readonly-storage-texture"]
expected: FAIL
[:useDifferentTextureAsTexture2=false;baseLayer2=0;view1Binding="readonly-storage-texture";view2Binding="readwrite-storage-texture"] [:useDifferentTextureAsTexture2=false;baseLayer2=0;view1Binding="readonly-storage-texture";view2Binding="readwrite-storage-texture"]
expected: FAIL expected: FAIL
@@ -16,7 +15,6 @@
expected: FAIL expected: FAIL
[:useDifferentTextureAsTexture2=false;baseLayer2=0;view1Binding="readwrite-storage-texture";view2Binding="readwrite-storage-texture"] [:useDifferentTextureAsTexture2=false;baseLayer2=0;view1Binding="readwrite-storage-texture";view2Binding="readwrite-storage-texture"]
expected: FAIL
[:useDifferentTextureAsTexture2=false;baseLayer2=0;view1Binding="readwrite-storage-texture";view2Binding="sampled-texture"] [:useDifferentTextureAsTexture2=false;baseLayer2=0;view1Binding="readwrite-storage-texture";view2Binding="sampled-texture"]
expected: FAIL expected: FAIL
@@ -47,7 +45,6 @@
[:useDifferentTextureAsTexture2=false;baseLayer2=0;view1Binding="writeonly-storage-texture";view2Binding="writeonly-storage-texture"] [:useDifferentTextureAsTexture2=false;baseLayer2=0;view1Binding="writeonly-storage-texture";view2Binding="writeonly-storage-texture"]
[:useDifferentTextureAsTexture2=false;baseLayer2=1;view1Binding="readonly-storage-texture";view2Binding="readonly-storage-texture"] [:useDifferentTextureAsTexture2=false;baseLayer2=1;view1Binding="readonly-storage-texture";view2Binding="readonly-storage-texture"]
expected: FAIL
[:useDifferentTextureAsTexture2=false;baseLayer2=1;view1Binding="readonly-storage-texture";view2Binding="readwrite-storage-texture"] [:useDifferentTextureAsTexture2=false;baseLayer2=1;view1Binding="readonly-storage-texture";view2Binding="readwrite-storage-texture"]
expected: FAIL expected: FAIL
@@ -62,7 +59,6 @@
expected: FAIL expected: FAIL
[:useDifferentTextureAsTexture2=false;baseLayer2=1;view1Binding="readwrite-storage-texture";view2Binding="readwrite-storage-texture"] [:useDifferentTextureAsTexture2=false;baseLayer2=1;view1Binding="readwrite-storage-texture";view2Binding="readwrite-storage-texture"]
expected: FAIL
[:useDifferentTextureAsTexture2=false;baseLayer2=1;view1Binding="readwrite-storage-texture";view2Binding="sampled-texture"] [:useDifferentTextureAsTexture2=false;baseLayer2=1;view1Binding="readwrite-storage-texture";view2Binding="sampled-texture"]
expected: FAIL expected: FAIL
@@ -93,7 +89,6 @@
[:useDifferentTextureAsTexture2=false;baseLayer2=1;view1Binding="writeonly-storage-texture";view2Binding="writeonly-storage-texture"] [:useDifferentTextureAsTexture2=false;baseLayer2=1;view1Binding="writeonly-storage-texture";view2Binding="writeonly-storage-texture"]
[:useDifferentTextureAsTexture2=true;baseLayer2=0;view1Binding="readonly-storage-texture";view2Binding="readonly-storage-texture"] [:useDifferentTextureAsTexture2=true;baseLayer2=0;view1Binding="readonly-storage-texture";view2Binding="readonly-storage-texture"]
expected: FAIL
[:useDifferentTextureAsTexture2=true;baseLayer2=0;view1Binding="readonly-storage-texture";view2Binding="readwrite-storage-texture"] [:useDifferentTextureAsTexture2=true;baseLayer2=0;view1Binding="readonly-storage-texture";view2Binding="readwrite-storage-texture"]
expected: FAIL expected: FAIL
@@ -108,7 +103,6 @@
expected: FAIL expected: FAIL
[:useDifferentTextureAsTexture2=true;baseLayer2=0;view1Binding="readwrite-storage-texture";view2Binding="readwrite-storage-texture"] [:useDifferentTextureAsTexture2=true;baseLayer2=0;view1Binding="readwrite-storage-texture";view2Binding="readwrite-storage-texture"]
expected: FAIL
[:useDifferentTextureAsTexture2=true;baseLayer2=0;view1Binding="readwrite-storage-texture";view2Binding="sampled-texture"] [:useDifferentTextureAsTexture2=true;baseLayer2=0;view1Binding="readwrite-storage-texture";view2Binding="sampled-texture"]
expected: FAIL expected: FAIL
@@ -139,7 +133,6 @@
[:useDifferentTextureAsTexture2=true;baseLayer2=0;view1Binding="writeonly-storage-texture";view2Binding="writeonly-storage-texture"] [:useDifferentTextureAsTexture2=true;baseLayer2=0;view1Binding="writeonly-storage-texture";view2Binding="writeonly-storage-texture"]
[:useDifferentTextureAsTexture2=true;baseLayer2=1;view1Binding="readonly-storage-texture";view2Binding="readonly-storage-texture"] [:useDifferentTextureAsTexture2=true;baseLayer2=1;view1Binding="readonly-storage-texture";view2Binding="readonly-storage-texture"]
expected: FAIL
[:useDifferentTextureAsTexture2=true;baseLayer2=1;view1Binding="readonly-storage-texture";view2Binding="readwrite-storage-texture"] [:useDifferentTextureAsTexture2=true;baseLayer2=1;view1Binding="readonly-storage-texture";view2Binding="readwrite-storage-texture"]
expected: FAIL expected: FAIL
@@ -154,7 +147,6 @@
expected: FAIL expected: FAIL
[:useDifferentTextureAsTexture2=true;baseLayer2=1;view1Binding="readwrite-storage-texture";view2Binding="readwrite-storage-texture"] [:useDifferentTextureAsTexture2=true;baseLayer2=1;view1Binding="readwrite-storage-texture";view2Binding="readwrite-storage-texture"]
expected: FAIL
[:useDifferentTextureAsTexture2=true;baseLayer2=1;view1Binding="readwrite-storage-texture";view2Binding="sampled-texture"] [:useDifferentTextureAsTexture2=true;baseLayer2=1;view1Binding="readwrite-storage-texture";view2Binding="sampled-texture"]
expected: FAIL expected: FAIL
@@ -201,51 +193,38 @@
[cts.https.html?q=webgpu:api,validation,resource_usages,texture,in_render_misc:subresources,set_unused_bind_group:*] [cts.https.html?q=webgpu:api,validation,resource_usages,texture,in_render_misc:subresources,set_unused_bind_group:*]
implementation-status: backlog implementation-status: backlog
[:inRenderPass=false;textureUsage0="readonly-storage-texture";textureUsage1="readonly-storage-texture"] [:inRenderPass=false;textureUsage0="readonly-storage-texture";textureUsage1="readonly-storage-texture"]
expected: FAIL
[:inRenderPass=false;textureUsage0="readonly-storage-texture";textureUsage1="readwrite-storage-texture"] [:inRenderPass=false;textureUsage0="readonly-storage-texture";textureUsage1="readwrite-storage-texture"]
expected: FAIL
[:inRenderPass=false;textureUsage0="readonly-storage-texture";textureUsage1="sampled-texture"] [:inRenderPass=false;textureUsage0="readonly-storage-texture";textureUsage1="sampled-texture"]
expected: FAIL
[:inRenderPass=false;textureUsage0="readonly-storage-texture";textureUsage1="writeonly-storage-texture"] [:inRenderPass=false;textureUsage0="readonly-storage-texture";textureUsage1="writeonly-storage-texture"]
expected: FAIL
[:inRenderPass=false;textureUsage0="readwrite-storage-texture";textureUsage1="readonly-storage-texture"] [:inRenderPass=false;textureUsage0="readwrite-storage-texture";textureUsage1="readonly-storage-texture"]
expected: FAIL
[:inRenderPass=false;textureUsage0="readwrite-storage-texture";textureUsage1="readwrite-storage-texture"] [:inRenderPass=false;textureUsage0="readwrite-storage-texture";textureUsage1="readwrite-storage-texture"]
expected: FAIL
[:inRenderPass=false;textureUsage0="readwrite-storage-texture";textureUsage1="sampled-texture"] [:inRenderPass=false;textureUsage0="readwrite-storage-texture";textureUsage1="sampled-texture"]
expected: FAIL
[:inRenderPass=false;textureUsage0="readwrite-storage-texture";textureUsage1="writeonly-storage-texture"] [:inRenderPass=false;textureUsage0="readwrite-storage-texture";textureUsage1="writeonly-storage-texture"]
expected: FAIL
[:inRenderPass=false;textureUsage0="sampled-texture";textureUsage1="readonly-storage-texture"] [:inRenderPass=false;textureUsage0="sampled-texture";textureUsage1="readonly-storage-texture"]
expected: FAIL
[:inRenderPass=false;textureUsage0="sampled-texture";textureUsage1="readwrite-storage-texture"] [:inRenderPass=false;textureUsage0="sampled-texture";textureUsage1="readwrite-storage-texture"]
expected: FAIL
[:inRenderPass=false;textureUsage0="sampled-texture";textureUsage1="sampled-texture"] [:inRenderPass=false;textureUsage0="sampled-texture";textureUsage1="sampled-texture"]
[:inRenderPass=false;textureUsage0="sampled-texture";textureUsage1="writeonly-storage-texture"] [:inRenderPass=false;textureUsage0="sampled-texture";textureUsage1="writeonly-storage-texture"]
[:inRenderPass=false;textureUsage0="writeonly-storage-texture";textureUsage1="readonly-storage-texture"] [:inRenderPass=false;textureUsage0="writeonly-storage-texture";textureUsage1="readonly-storage-texture"]
expected: FAIL
[:inRenderPass=false;textureUsage0="writeonly-storage-texture";textureUsage1="readwrite-storage-texture"] [:inRenderPass=false;textureUsage0="writeonly-storage-texture";textureUsage1="readwrite-storage-texture"]
expected: FAIL
[:inRenderPass=false;textureUsage0="writeonly-storage-texture";textureUsage1="sampled-texture"] [:inRenderPass=false;textureUsage0="writeonly-storage-texture";textureUsage1="sampled-texture"]
[:inRenderPass=false;textureUsage0="writeonly-storage-texture";textureUsage1="writeonly-storage-texture"] [:inRenderPass=false;textureUsage0="writeonly-storage-texture";textureUsage1="writeonly-storage-texture"]
[:inRenderPass=true;textureUsage0="readonly-storage-texture";textureUsage1="readonly-storage-texture"] [:inRenderPass=true;textureUsage0="readonly-storage-texture";textureUsage1="readonly-storage-texture"]
expected: FAIL
[:inRenderPass=true;textureUsage0="readonly-storage-texture";textureUsage1="readwrite-storage-texture"] [:inRenderPass=true;textureUsage0="readonly-storage-texture";textureUsage1="readwrite-storage-texture"]
expected: FAIL expected: FAIL
@@ -260,7 +239,6 @@
expected: FAIL expected: FAIL
[:inRenderPass=true;textureUsage0="readwrite-storage-texture";textureUsage1="readwrite-storage-texture"] [:inRenderPass=true;textureUsage0="readwrite-storage-texture";textureUsage1="readwrite-storage-texture"]
expected: FAIL
[:inRenderPass=true;textureUsage0="readwrite-storage-texture";textureUsage1="sampled-texture"] [:inRenderPass=true;textureUsage0="readwrite-storage-texture";textureUsage1="sampled-texture"]
expected: FAIL expected: FAIL
@@ -292,7 +270,6 @@
[cts.https.html?q=webgpu:api,validation,resource_usages,texture,in_render_misc:subresources,texture_usages_in_copy_and_render_pass:*] [cts.https.html?q=webgpu:api,validation,resource_usages,texture,in_render_misc:subresources,texture_usages_in_copy_and_render_pass:*]
implementation-status: backlog
[:usage0="color-attachment";usage1="copy-dst"] [:usage0="color-attachment";usage1="copy-dst"]
[:usage0="color-attachment";usage1="copy-src"] [:usage0="color-attachment";usage1="copy-src"]
@@ -304,10 +281,8 @@
[:usage0="copy-dst";usage1="copy-src"] [:usage0="copy-dst";usage1="copy-src"]
[:usage0="copy-dst";usage1="readonly-storage-texture"] [:usage0="copy-dst";usage1="readonly-storage-texture"]
expected: FAIL
[:usage0="copy-dst";usage1="readwrite-storage-texture"] [:usage0="copy-dst";usage1="readwrite-storage-texture"]
expected: FAIL
[:usage0="copy-dst";usage1="sampled-texture"] [:usage0="copy-dst";usage1="sampled-texture"]
@@ -320,26 +295,20 @@
[:usage0="copy-src";usage1="copy-src"] [:usage0="copy-src";usage1="copy-src"]
[:usage0="copy-src";usage1="readonly-storage-texture"] [:usage0="copy-src";usage1="readonly-storage-texture"]
expected: FAIL
[:usage0="copy-src";usage1="readwrite-storage-texture"] [:usage0="copy-src";usage1="readwrite-storage-texture"]
expected: FAIL
[:usage0="copy-src";usage1="sampled-texture"] [:usage0="copy-src";usage1="sampled-texture"]
[:usage0="copy-src";usage1="writeonly-storage-texture"] [:usage0="copy-src";usage1="writeonly-storage-texture"]
[:usage0="readonly-storage-texture";usage1="copy-dst"] [:usage0="readonly-storage-texture";usage1="copy-dst"]
expected: FAIL
[:usage0="readonly-storage-texture";usage1="copy-src"] [:usage0="readonly-storage-texture";usage1="copy-src"]
expected: FAIL
[:usage0="readwrite-storage-texture";usage1="copy-dst"] [:usage0="readwrite-storage-texture";usage1="copy-dst"]
expected: FAIL
[:usage0="readwrite-storage-texture";usage1="copy-src"] [:usage0="readwrite-storage-texture";usage1="copy-src"]
expected: FAIL
[:usage0="sampled-texture";usage1="copy-dst"] [:usage0="sampled-texture";usage1="copy-dst"]
@@ -369,32 +338,36 @@
expected: FAIL expected: FAIL
[:bindingType="readonly-storage-texture";viewUsage=0] [:bindingType="readonly-storage-texture";viewUsage=0]
expected: FAIL
[:bindingType="readonly-storage-texture";viewUsage=1] [:bindingType="readonly-storage-texture";viewUsage=1]
expected: FAIL
[:bindingType="readonly-storage-texture";viewUsage=16] [:bindingType="readonly-storage-texture";viewUsage=16]
expected: FAIL
[:bindingType="readonly-storage-texture";viewUsage=2] [:bindingType="readonly-storage-texture";viewUsage=2]
expected: FAIL
[:bindingType="readonly-storage-texture";viewUsage=4] [:bindingType="readonly-storage-texture";viewUsage=4]
expected: FAIL
[:bindingType="readonly-storage-texture";viewUsage=8] [:bindingType="readonly-storage-texture";viewUsage=8]
expected: FAIL
[:bindingType="readwrite-storage-texture";viewUsage=0] [:bindingType="readwrite-storage-texture";viewUsage=0]
expected: FAIL
[:bindingType="readwrite-storage-texture";viewUsage=1] [:bindingType="readwrite-storage-texture";viewUsage=1]
expected: FAIL
[:bindingType="readwrite-storage-texture";viewUsage=16] [:bindingType="readwrite-storage-texture";viewUsage=16]
expected: FAIL
[:bindingType="readwrite-storage-texture";viewUsage=2] [:bindingType="readwrite-storage-texture";viewUsage=2]
expected: FAIL
[:bindingType="readwrite-storage-texture";viewUsage=4] [:bindingType="readwrite-storage-texture";viewUsage=4]
expected: FAIL
[:bindingType="readwrite-storage-texture";viewUsage=8] [:bindingType="readwrite-storage-texture";viewUsage=8]
expected: FAIL
[:bindingType="sampled-texture";viewUsage=0] [:bindingType="sampled-texture";viewUsage=0]

View File

@@ -169,12 +169,11 @@
[cts.https.html?q=webgpu:compat,api,validation,render_pipeline,unsupported_wgsl:unsupportedStorageTextureFormats,computePipeline:*] [cts.https.html?q=webgpu:compat,api,validation,render_pipeline,unsupported_wgsl:unsupportedStorageTextureFormats,computePipeline:*]
implementation-status: backlog implementation-status:
if os == "win" and debug: backlog
[:format="rg32float";entryPoint="csWithStorageUsage";async=false] [:format="rg32float";entryPoint="csWithStorageUsage";async=false]
expected: FAIL
[:format="rg32float";entryPoint="csWithStorageUsage";async=true] [:format="rg32float";entryPoint="csWithStorageUsage";async=true]
expected: FAIL
[:format="rg32float";entryPoint="csWithoutStorageUsage";async=false] [:format="rg32float";entryPoint="csWithoutStorageUsage";async=false]
expected: expected:
@@ -185,10 +184,8 @@
if os == "win" and debug: [PASS, FAIL] if os == "win" and debug: [PASS, FAIL]
[:format="rg32sint";entryPoint="csWithStorageUsage";async=false] [:format="rg32sint";entryPoint="csWithStorageUsage";async=false]
expected: FAIL
[:format="rg32sint";entryPoint="csWithStorageUsage";async=true] [:format="rg32sint";entryPoint="csWithStorageUsage";async=true]
expected: FAIL
[:format="rg32sint";entryPoint="csWithoutStorageUsage";async=false] [:format="rg32sint";entryPoint="csWithoutStorageUsage";async=false]
expected: expected:
@@ -199,10 +196,8 @@
if os == "win" and debug: [PASS, FAIL] if os == "win" and debug: [PASS, FAIL]
[:format="rg32uint";entryPoint="csWithStorageUsage";async=false] [:format="rg32uint";entryPoint="csWithStorageUsage";async=false]
expected: FAIL
[:format="rg32uint";entryPoint="csWithStorageUsage";async=true] [:format="rg32uint";entryPoint="csWithStorageUsage";async=true]
expected: FAIL
[:format="rg32uint";entryPoint="csWithoutStorageUsage";async=false] [:format="rg32uint";entryPoint="csWithoutStorageUsage";async=false]
expected: expected:
@@ -214,12 +209,11 @@
[cts.https.html?q=webgpu:compat,api,validation,render_pipeline,unsupported_wgsl:unsupportedStorageTextureFormats,renderPipeline:*] [cts.https.html?q=webgpu:compat,api,validation,render_pipeline,unsupported_wgsl:unsupportedStorageTextureFormats,renderPipeline:*]
implementation-status: backlog implementation-status:
if os == "win" and debug: backlog
[:format="rg32float";entryPoint="vsWithStorageUsage";async=false] [:format="rg32float";entryPoint="vsWithStorageUsage";async=false]
expected: FAIL
[:format="rg32float";entryPoint="vsWithStorageUsage";async=true] [:format="rg32float";entryPoint="vsWithStorageUsage";async=true]
expected: FAIL
[:format="rg32float";entryPoint="vsWithoutStorageUsage";async=false] [:format="rg32float";entryPoint="vsWithoutStorageUsage";async=false]
expected: expected:
@@ -230,10 +224,8 @@
if os == "win" and debug: [PASS, FAIL] if os == "win" and debug: [PASS, FAIL]
[:format="rg32sint";entryPoint="vsWithStorageUsage";async=false] [:format="rg32sint";entryPoint="vsWithStorageUsage";async=false]
expected: FAIL
[:format="rg32sint";entryPoint="vsWithStorageUsage";async=true] [:format="rg32sint";entryPoint="vsWithStorageUsage";async=true]
expected: FAIL
[:format="rg32sint";entryPoint="vsWithoutStorageUsage";async=false] [:format="rg32sint";entryPoint="vsWithoutStorageUsage";async=false]
expected: expected:
@@ -244,10 +236,8 @@
if os == "win" and debug: [PASS, FAIL] if os == "win" and debug: [PASS, FAIL]
[:format="rg32uint";entryPoint="vsWithStorageUsage";async=false] [:format="rg32uint";entryPoint="vsWithStorageUsage";async=false]
expected: FAIL
[:format="rg32uint";entryPoint="vsWithStorageUsage";async=true] [:format="rg32uint";entryPoint="vsWithStorageUsage";async=true]
expected: FAIL
[:format="rg32uint";entryPoint="vsWithoutStorageUsage";async=false] [:format="rg32uint";entryPoint="vsWithoutStorageUsage";async=false]
expected: expected:

View File

@@ -1,12 +1,18 @@
[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,dot4I8Packed:basic:*] [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,dot4I8Packed:basic:*]
implementation-status: implementation-status:
if os == "win": backlog
if os == "mac": backlog if os == "mac": backlog
[:inputSource="const"] [:inputSource="const"]
[:inputSource="storage_r"] [:inputSource="storage_r"]
expected:
if os == "win": FAIL
[:inputSource="storage_rw"] [:inputSource="storage_rw"]
expected:
if os == "win": FAIL
[:inputSource="uniform"] [:inputSource="uniform"]
expected: expected:
if os == "win": FAIL
if os == "mac": FAIL if os == "mac": FAIL

View File

@@ -1,12 +1,18 @@
[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,dot4U8Packed:basic:*] [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,dot4U8Packed:basic:*]
implementation-status: implementation-status:
if os == "win": backlog
if os == "mac": backlog if os == "mac": backlog
[:inputSource="const"] [:inputSource="const"]
[:inputSource="storage_r"] [:inputSource="storage_r"]
expected:
if os == "win": FAIL
[:inputSource="storage_rw"] [:inputSource="storage_rw"]
expected:
if os == "win": FAIL
[:inputSource="uniform"] [:inputSource="uniform"]
expected: expected:
if os == "win": FAIL
if os == "mac": FAIL if os == "mac": FAIL

View File

@@ -386,13 +386,11 @@
[:format="rg11b10ufloat";aspect="all";samples=1] [:format="rg11b10ufloat";aspect="all";samples=1]
expected: expected:
if os == "win" and debug: FAIL if os == "win": [PASS, FAIL]
if os == "win" and not debug: [PASS, FAIL]
[:format="rg11b10ufloat";aspect="all";samples=4] [:format="rg11b10ufloat";aspect="all";samples=4]
expected: expected:
if os == "win" and debug: FAIL if os == "win": [PASS, FAIL]
if os == "win" and not debug: [PASS, FAIL]
[:format="rg16float";aspect="all";samples=1] [:format="rg16float";aspect="all";samples=1]
@@ -432,11 +430,11 @@
[:format="rgb10a2unorm";aspect="all";samples=1] [:format="rgb10a2unorm";aspect="all";samples=1]
expected: expected:
if os == "win" and debug: FAIL if os == "win" and debug: [PASS, FAIL]
[:format="rgb10a2unorm";aspect="all";samples=4] [:format="rgb10a2unorm";aspect="all";samples=4]
expected: expected:
if os == "win" and debug: FAIL if os == "win" and debug: [PASS, FAIL]
[:format="rgb9e5ufloat";aspect="all";samples=1] [:format="rgb9e5ufloat";aspect="all";samples=1]
expected: expected:
@@ -496,49 +494,33 @@
expected: FAIL expected: FAIL
[:format="r32float";aspect="all"] [:format="r32float";aspect="all"]
expected: FAIL
[:format="r32sint";aspect="all"] [:format="r32sint";aspect="all"]
expected: FAIL
[:format="r32uint";aspect="all"] [:format="r32uint";aspect="all"]
expected: FAIL
[:format="rg32float";aspect="all"] [:format="rg32float";aspect="all"]
expected: FAIL
[:format="rg32sint";aspect="all"] [:format="rg32sint";aspect="all"]
expected: FAIL
[:format="rg32uint";aspect="all"] [:format="rg32uint";aspect="all"]
expected: FAIL
[:format="rgba16float";aspect="all"] [:format="rgba16float";aspect="all"]
expected: FAIL
[:format="rgba16sint";aspect="all"] [:format="rgba16sint";aspect="all"]
expected: FAIL
[:format="rgba16uint";aspect="all"] [:format="rgba16uint";aspect="all"]
expected: FAIL
[:format="rgba32float";aspect="all"] [:format="rgba32float";aspect="all"]
expected: FAIL
[:format="rgba32sint";aspect="all"] [:format="rgba32sint";aspect="all"]
expected: FAIL
[:format="rgba32uint";aspect="all"] [:format="rgba32uint";aspect="all"]
expected: FAIL
[:format="rgba8sint";aspect="all"] [:format="rgba8sint";aspect="all"]
expected: FAIL
[:format="rgba8snorm";aspect="all"] [:format="rgba8snorm";aspect="all"]
expected: FAIL
[:format="rgba8uint";aspect="all"] [:format="rgba8uint";aspect="all"]
expected: FAIL
[:format="rgba8unorm";aspect="all"] [:format="rgba8unorm";aspect="all"]
expected: FAIL

View File

@@ -2802,154 +2802,166 @@
expected: FAIL expected: FAIL
[:stage="c";format="r32float"] [:stage="c";format="r32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="r32sint"] [:stage="c";format="r32sint"]
expected: FAIL
[:stage="c";format="r32uint"] [:stage="c";format="r32uint"]
expected: FAIL
[:stage="c";format="rg32float"] [:stage="c";format="rg32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="rg32sint"] [:stage="c";format="rg32sint"]
expected: FAIL
[:stage="c";format="rg32uint"] [:stage="c";format="rg32uint"]
expected: FAIL
[:stage="c";format="rgba16float"] [:stage="c";format="rgba16float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="rgba16sint"] [:stage="c";format="rgba16sint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="rgba16uint"] [:stage="c";format="rgba16uint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="rgba32float"] [:stage="c";format="rgba32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="rgba32sint"] [:stage="c";format="rgba32sint"]
expected: FAIL
[:stage="c";format="rgba32uint"] [:stage="c";format="rgba32uint"]
expected: FAIL
[:stage="c";format="rgba8sint"] [:stage="c";format="rgba8sint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="rgba8snorm"] [:stage="c";format="rgba8snorm"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="rgba8uint"] [:stage="c";format="rgba8uint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="rgba8unorm"] [:stage="c";format="rgba8unorm"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="bgra8unorm"] [:stage="f";format="bgra8unorm"]
expected: FAIL expected: FAIL
[:stage="f";format="r32float"] [:stage="f";format="r32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="r32sint"] [:stage="f";format="r32sint"]
expected: FAIL
[:stage="f";format="r32uint"] [:stage="f";format="r32uint"]
expected: FAIL
[:stage="f";format="rg32float"] [:stage="f";format="rg32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="rg32sint"] [:stage="f";format="rg32sint"]
expected: FAIL
[:stage="f";format="rg32uint"] [:stage="f";format="rg32uint"]
expected: FAIL
[:stage="f";format="rgba16float"] [:stage="f";format="rgba16float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="rgba16sint"] [:stage="f";format="rgba16sint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="rgba16uint"] [:stage="f";format="rgba16uint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="rgba32float"] [:stage="f";format="rgba32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="rgba32sint"] [:stage="f";format="rgba32sint"]
expected: FAIL
[:stage="f";format="rgba32uint"] [:stage="f";format="rgba32uint"]
expected: FAIL
[:stage="f";format="rgba8sint"] [:stage="f";format="rgba8sint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="rgba8snorm"] [:stage="f";format="rgba8snorm"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="rgba8uint"] [:stage="f";format="rgba8uint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="rgba8unorm"] [:stage="f";format="rgba8unorm"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="bgra8unorm"] [:stage="v";format="bgra8unorm"]
expected: FAIL expected: FAIL
[:stage="v";format="r32float"] [:stage="v";format="r32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="r32sint"] [:stage="v";format="r32sint"]
expected: FAIL
[:stage="v";format="r32uint"] [:stage="v";format="r32uint"]
expected: FAIL
[:stage="v";format="rg32float"] [:stage="v";format="rg32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="rg32sint"] [:stage="v";format="rg32sint"]
expected: FAIL
[:stage="v";format="rg32uint"] [:stage="v";format="rg32uint"]
expected: FAIL
[:stage="v";format="rgba16float"] [:stage="v";format="rgba16float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="rgba16sint"] [:stage="v";format="rgba16sint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="rgba16uint"] [:stage="v";format="rgba16uint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="rgba32float"] [:stage="v";format="rgba32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="rgba32sint"] [:stage="v";format="rgba32sint"]
expected: FAIL
[:stage="v";format="rgba32uint"] [:stage="v";format="rgba32uint"]
expected: FAIL
[:stage="v";format="rgba8sint"] [:stage="v";format="rgba8sint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="rgba8snorm"] [:stage="v";format="rgba8snorm"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="rgba8uint"] [:stage="v";format="rgba8uint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="rgba8unorm"] [:stage="v";format="rgba8unorm"]
expected: FAIL expected:
if os == "mac": FAIL
[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureLoad:storage_textures_2d:*] [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureLoad:storage_textures_2d:*]
@@ -2958,154 +2970,166 @@
expected: FAIL expected: FAIL
[:stage="c";format="r32float"] [:stage="c";format="r32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="r32sint"] [:stage="c";format="r32sint"]
expected: FAIL
[:stage="c";format="r32uint"] [:stage="c";format="r32uint"]
expected: FAIL
[:stage="c";format="rg32float"] [:stage="c";format="rg32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="rg32sint"] [:stage="c";format="rg32sint"]
expected: FAIL
[:stage="c";format="rg32uint"] [:stage="c";format="rg32uint"]
expected: FAIL
[:stage="c";format="rgba16float"] [:stage="c";format="rgba16float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="rgba16sint"] [:stage="c";format="rgba16sint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="rgba16uint"] [:stage="c";format="rgba16uint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="rgba32float"] [:stage="c";format="rgba32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="rgba32sint"] [:stage="c";format="rgba32sint"]
expected: FAIL
[:stage="c";format="rgba32uint"] [:stage="c";format="rgba32uint"]
expected: FAIL
[:stage="c";format="rgba8sint"] [:stage="c";format="rgba8sint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="rgba8snorm"] [:stage="c";format="rgba8snorm"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="rgba8uint"] [:stage="c";format="rgba8uint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="rgba8unorm"] [:stage="c";format="rgba8unorm"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="bgra8unorm"] [:stage="f";format="bgra8unorm"]
expected: FAIL expected: FAIL
[:stage="f";format="r32float"] [:stage="f";format="r32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="r32sint"] [:stage="f";format="r32sint"]
expected: FAIL
[:stage="f";format="r32uint"] [:stage="f";format="r32uint"]
expected: FAIL
[:stage="f";format="rg32float"] [:stage="f";format="rg32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="rg32sint"] [:stage="f";format="rg32sint"]
expected: FAIL
[:stage="f";format="rg32uint"] [:stage="f";format="rg32uint"]
expected: FAIL
[:stage="f";format="rgba16float"] [:stage="f";format="rgba16float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="rgba16sint"] [:stage="f";format="rgba16sint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="rgba16uint"] [:stage="f";format="rgba16uint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="rgba32float"] [:stage="f";format="rgba32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="rgba32sint"] [:stage="f";format="rgba32sint"]
expected: FAIL
[:stage="f";format="rgba32uint"] [:stage="f";format="rgba32uint"]
expected: FAIL
[:stage="f";format="rgba8sint"] [:stage="f";format="rgba8sint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="rgba8snorm"] [:stage="f";format="rgba8snorm"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="rgba8uint"] [:stage="f";format="rgba8uint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="rgba8unorm"] [:stage="f";format="rgba8unorm"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="bgra8unorm"] [:stage="v";format="bgra8unorm"]
expected: FAIL expected: FAIL
[:stage="v";format="r32float"] [:stage="v";format="r32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="r32sint"] [:stage="v";format="r32sint"]
expected: FAIL
[:stage="v";format="r32uint"] [:stage="v";format="r32uint"]
expected: FAIL
[:stage="v";format="rg32float"] [:stage="v";format="rg32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="rg32sint"] [:stage="v";format="rg32sint"]
expected: FAIL
[:stage="v";format="rg32uint"] [:stage="v";format="rg32uint"]
expected: FAIL
[:stage="v";format="rgba16float"] [:stage="v";format="rgba16float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="rgba16sint"] [:stage="v";format="rgba16sint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="rgba16uint"] [:stage="v";format="rgba16uint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="rgba32float"] [:stage="v";format="rgba32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="rgba32sint"] [:stage="v";format="rgba32sint"]
expected: FAIL
[:stage="v";format="rgba32uint"] [:stage="v";format="rgba32uint"]
expected: FAIL
[:stage="v";format="rgba8sint"] [:stage="v";format="rgba8sint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="rgba8snorm"] [:stage="v";format="rgba8snorm"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="rgba8uint"] [:stage="v";format="rgba8uint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="rgba8unorm"] [:stage="v";format="rgba8unorm"]
expected: FAIL expected:
if os == "mac": FAIL
[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureLoad:storage_textures_2d_array:*] [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureLoad:storage_textures_2d_array:*]
@@ -3114,154 +3138,166 @@
expected: FAIL expected: FAIL
[:stage="c";format="r32float"] [:stage="c";format="r32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="r32sint"] [:stage="c";format="r32sint"]
expected: FAIL
[:stage="c";format="r32uint"] [:stage="c";format="r32uint"]
expected: FAIL
[:stage="c";format="rg32float"] [:stage="c";format="rg32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="rg32sint"] [:stage="c";format="rg32sint"]
expected: FAIL
[:stage="c";format="rg32uint"] [:stage="c";format="rg32uint"]
expected: FAIL
[:stage="c";format="rgba16float"] [:stage="c";format="rgba16float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="rgba16sint"] [:stage="c";format="rgba16sint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="rgba16uint"] [:stage="c";format="rgba16uint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="rgba32float"] [:stage="c";format="rgba32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="rgba32sint"] [:stage="c";format="rgba32sint"]
expected: FAIL
[:stage="c";format="rgba32uint"] [:stage="c";format="rgba32uint"]
expected: FAIL
[:stage="c";format="rgba8sint"] [:stage="c";format="rgba8sint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="rgba8snorm"] [:stage="c";format="rgba8snorm"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="rgba8uint"] [:stage="c";format="rgba8uint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="c";format="rgba8unorm"] [:stage="c";format="rgba8unorm"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="bgra8unorm"] [:stage="f";format="bgra8unorm"]
expected: FAIL expected: FAIL
[:stage="f";format="r32float"] [:stage="f";format="r32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="r32sint"] [:stage="f";format="r32sint"]
expected: FAIL
[:stage="f";format="r32uint"] [:stage="f";format="r32uint"]
expected: FAIL
[:stage="f";format="rg32float"] [:stage="f";format="rg32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="rg32sint"] [:stage="f";format="rg32sint"]
expected: FAIL
[:stage="f";format="rg32uint"] [:stage="f";format="rg32uint"]
expected: FAIL
[:stage="f";format="rgba16float"] [:stage="f";format="rgba16float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="rgba16sint"] [:stage="f";format="rgba16sint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="rgba16uint"] [:stage="f";format="rgba16uint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="rgba32float"] [:stage="f";format="rgba32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="rgba32sint"] [:stage="f";format="rgba32sint"]
expected: FAIL
[:stage="f";format="rgba32uint"] [:stage="f";format="rgba32uint"]
expected: FAIL
[:stage="f";format="rgba8sint"] [:stage="f";format="rgba8sint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="rgba8snorm"] [:stage="f";format="rgba8snorm"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="rgba8uint"] [:stage="f";format="rgba8uint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="f";format="rgba8unorm"] [:stage="f";format="rgba8unorm"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="bgra8unorm"] [:stage="v";format="bgra8unorm"]
expected: FAIL expected: FAIL
[:stage="v";format="r32float"] [:stage="v";format="r32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="r32sint"] [:stage="v";format="r32sint"]
expected: FAIL
[:stage="v";format="r32uint"] [:stage="v";format="r32uint"]
expected: FAIL
[:stage="v";format="rg32float"] [:stage="v";format="rg32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="rg32sint"] [:stage="v";format="rg32sint"]
expected: FAIL
[:stage="v";format="rg32uint"] [:stage="v";format="rg32uint"]
expected: FAIL
[:stage="v";format="rgba16float"] [:stage="v";format="rgba16float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="rgba16sint"] [:stage="v";format="rgba16sint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="rgba16uint"] [:stage="v";format="rgba16uint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="rgba32float"] [:stage="v";format="rgba32float"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="rgba32sint"] [:stage="v";format="rgba32sint"]
expected: FAIL
[:stage="v";format="rgba32uint"] [:stage="v";format="rgba32uint"]
expected: FAIL
[:stage="v";format="rgba8sint"] [:stage="v";format="rgba8sint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="rgba8snorm"] [:stage="v";format="rgba8snorm"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="rgba8uint"] [:stage="v";format="rgba8uint"]
expected: FAIL expected:
if os == "mac": FAIL
[:stage="v";format="rgba8unorm"] [:stage="v";format="rgba8unorm"]
expected: FAIL expected:
if os == "mac": FAIL
[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureLoad:storage_textures_3d:*] [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureLoad:storage_textures_3d:*]
@@ -3270,151 +3306,103 @@
expected: FAIL expected: FAIL
[:stage="c";format="r32float"] [:stage="c";format="r32float"]
expected: FAIL
[:stage="c";format="r32sint"] [:stage="c";format="r32sint"]
expected: FAIL
[:stage="c";format="r32uint"] [:stage="c";format="r32uint"]
expected: FAIL
[:stage="c";format="rg32float"] [:stage="c";format="rg32float"]
expected: FAIL
[:stage="c";format="rg32sint"] [:stage="c";format="rg32sint"]
expected: FAIL
[:stage="c";format="rg32uint"] [:stage="c";format="rg32uint"]
expected: FAIL
[:stage="c";format="rgba16float"] [:stage="c";format="rgba16float"]
expected: FAIL
[:stage="c";format="rgba16sint"] [:stage="c";format="rgba16sint"]
expected: FAIL
[:stage="c";format="rgba16uint"] [:stage="c";format="rgba16uint"]
expected: FAIL
[:stage="c";format="rgba32float"] [:stage="c";format="rgba32float"]
expected: FAIL
[:stage="c";format="rgba32sint"] [:stage="c";format="rgba32sint"]
expected: FAIL
[:stage="c";format="rgba32uint"] [:stage="c";format="rgba32uint"]
expected: FAIL
[:stage="c";format="rgba8sint"] [:stage="c";format="rgba8sint"]
expected: FAIL
[:stage="c";format="rgba8snorm"] [:stage="c";format="rgba8snorm"]
expected: FAIL
[:stage="c";format="rgba8uint"] [:stage="c";format="rgba8uint"]
expected: FAIL
[:stage="c";format="rgba8unorm"] [:stage="c";format="rgba8unorm"]
expected: FAIL
[:stage="f";format="bgra8unorm"] [:stage="f";format="bgra8unorm"]
expected: FAIL expected: FAIL
[:stage="f";format="r32float"] [:stage="f";format="r32float"]
expected: FAIL
[:stage="f";format="r32sint"] [:stage="f";format="r32sint"]
expected: FAIL
[:stage="f";format="r32uint"] [:stage="f";format="r32uint"]
expected: FAIL
[:stage="f";format="rg32float"] [:stage="f";format="rg32float"]
expected: FAIL
[:stage="f";format="rg32sint"] [:stage="f";format="rg32sint"]
expected: FAIL
[:stage="f";format="rg32uint"] [:stage="f";format="rg32uint"]
expected: FAIL
[:stage="f";format="rgba16float"] [:stage="f";format="rgba16float"]
expected: FAIL
[:stage="f";format="rgba16sint"] [:stage="f";format="rgba16sint"]
expected: FAIL
[:stage="f";format="rgba16uint"] [:stage="f";format="rgba16uint"]
expected: FAIL
[:stage="f";format="rgba32float"] [:stage="f";format="rgba32float"]
expected: FAIL
[:stage="f";format="rgba32sint"] [:stage="f";format="rgba32sint"]
expected: FAIL
[:stage="f";format="rgba32uint"] [:stage="f";format="rgba32uint"]
expected: FAIL
[:stage="f";format="rgba8sint"] [:stage="f";format="rgba8sint"]
expected: FAIL
[:stage="f";format="rgba8snorm"] [:stage="f";format="rgba8snorm"]
expected: FAIL
[:stage="f";format="rgba8uint"] [:stage="f";format="rgba8uint"]
expected: FAIL
[:stage="f";format="rgba8unorm"] [:stage="f";format="rgba8unorm"]
expected: FAIL
[:stage="v";format="bgra8unorm"] [:stage="v";format="bgra8unorm"]
expected: FAIL expected: FAIL
[:stage="v";format="r32float"] [:stage="v";format="r32float"]
expected: FAIL
[:stage="v";format="r32sint"] [:stage="v";format="r32sint"]
expected: FAIL
[:stage="v";format="r32uint"] [:stage="v";format="r32uint"]
expected: FAIL
[:stage="v";format="rg32float"] [:stage="v";format="rg32float"]
expected: FAIL
[:stage="v";format="rg32sint"] [:stage="v";format="rg32sint"]
expected: FAIL
[:stage="v";format="rg32uint"] [:stage="v";format="rg32uint"]
expected: FAIL
[:stage="v";format="rgba16float"] [:stage="v";format="rgba16float"]
expected: FAIL
[:stage="v";format="rgba16sint"] [:stage="v";format="rgba16sint"]
expected: FAIL
[:stage="v";format="rgba16uint"] [:stage="v";format="rgba16uint"]
expected: FAIL
[:stage="v";format="rgba32float"] [:stage="v";format="rgba32float"]
expected: FAIL
[:stage="v";format="rgba32sint"] [:stage="v";format="rgba32sint"]
expected: FAIL
[:stage="v";format="rgba32uint"] [:stage="v";format="rgba32uint"]
expected: FAIL
[:stage="v";format="rgba8sint"] [:stage="v";format="rgba8sint"]
expected: FAIL
[:stage="v";format="rgba8snorm"] [:stage="v";format="rgba8snorm"]
expected: FAIL
[:stage="v";format="rgba8uint"] [:stage="v";format="rgba8uint"]
expected: FAIL
[:stage="v";format="rgba8unorm"] [:stage="v";format="rgba8unorm"]
expected: FAIL

View File

@@ -43,97 +43,129 @@
expected: FAIL expected: FAIL
[:format="r32float";view_type="full"] [:format="r32float";view_type="full"]
expected: FAIL expected:
if os == "win": FAIL
[:format="r32float";view_type="partial"] [:format="r32float";view_type="partial"]
expected: FAIL expected:
if os == "win": FAIL
[:format="r32sint";view_type="full"] [:format="r32sint";view_type="full"]
expected: FAIL expected:
if os == "win": FAIL
[:format="r32sint";view_type="partial"] [:format="r32sint";view_type="partial"]
expected: FAIL expected:
if os == "win": FAIL
[:format="r32uint";view_type="full"] [:format="r32uint";view_type="full"]
expected: FAIL expected:
if os == "win": FAIL
[:format="r32uint";view_type="partial"] [:format="r32uint";view_type="partial"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rg32float";view_type="full"] [:format="rg32float";view_type="full"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rg32float";view_type="partial"] [:format="rg32float";view_type="partial"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rg32sint";view_type="full"] [:format="rg32sint";view_type="full"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rg32sint";view_type="partial"] [:format="rg32sint";view_type="partial"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rg32uint";view_type="full"] [:format="rg32uint";view_type="full"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rg32uint";view_type="partial"] [:format="rg32uint";view_type="partial"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rgba16float";view_type="full"] [:format="rgba16float";view_type="full"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rgba16float";view_type="partial"] [:format="rgba16float";view_type="partial"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rgba16sint";view_type="full"] [:format="rgba16sint";view_type="full"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rgba16sint";view_type="partial"] [:format="rgba16sint";view_type="partial"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rgba16uint";view_type="full"] [:format="rgba16uint";view_type="full"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rgba16uint";view_type="partial"] [:format="rgba16uint";view_type="partial"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rgba32float";view_type="full"] [:format="rgba32float";view_type="full"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rgba32float";view_type="partial"] [:format="rgba32float";view_type="partial"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rgba32sint";view_type="full"] [:format="rgba32sint";view_type="full"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rgba32sint";view_type="partial"] [:format="rgba32sint";view_type="partial"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rgba32uint";view_type="full"] [:format="rgba32uint";view_type="full"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rgba32uint";view_type="partial"] [:format="rgba32uint";view_type="partial"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rgba8sint";view_type="full"] [:format="rgba8sint";view_type="full"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rgba8sint";view_type="partial"] [:format="rgba8sint";view_type="partial"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rgba8snorm";view_type="full"] [:format="rgba8snorm";view_type="full"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rgba8snorm";view_type="partial"] [:format="rgba8snorm";view_type="partial"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rgba8uint";view_type="full"] [:format="rgba8uint";view_type="full"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rgba8uint";view_type="partial"] [:format="rgba8uint";view_type="partial"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rgba8unorm";view_type="full"] [:format="rgba8unorm";view_type="full"]
expected: FAIL expected:
if os == "win": FAIL
[:format="rgba8unorm";view_type="partial"] [:format="rgba8unorm";view_type="partial"]
expected: FAIL expected:
if os == "win": FAIL

View File

@@ -71,7 +71,9 @@
[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureStore:texel_formats:*] [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureStore:texel_formats:*]
implementation-status: backlog implementation-status:
if os == "win": backlog
if os == "linux": backlog
[:format="bgra8unorm";viewDimension="1d";stage="compute";access="write";mipLevel=0] [:format="bgra8unorm";viewDimension="1d";stage="compute";access="write";mipLevel=0]
[:format="bgra8unorm";viewDimension="1d";stage="fragment";access="write";mipLevel=0] [:format="bgra8unorm";viewDimension="1d";stage="fragment";access="write";mipLevel=0]
@@ -113,123 +115,206 @@
[:format="bgra8unorm";viewDimension="3d";stage="fragment";access="write";mipLevel=2] [:format="bgra8unorm";viewDimension="3d";stage="fragment";access="write";mipLevel=2]
[:format="r32float";viewDimension="1d";stage="compute";access="read_write";mipLevel=0] [:format="r32float";viewDimension="1d";stage="compute";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32float";viewDimension="1d";stage="compute";access="write";mipLevel=0] [:format="r32float";viewDimension="1d";stage="compute";access="write";mipLevel=0]
[:format="r32float";viewDimension="1d";stage="fragment";access="read_write";mipLevel=0] [:format="r32float";viewDimension="1d";stage="fragment";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32float";viewDimension="1d";stage="fragment";access="write";mipLevel=0] [:format="r32float";viewDimension="1d";stage="fragment";access="write";mipLevel=0]
[:format="r32float";viewDimension="2d";stage="compute";access="read_write";mipLevel=0] [:format="r32float";viewDimension="2d";stage="compute";access="read_write";mipLevel=0]
expected: FAIL expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d";stage="compute";access="read_write";mipLevel=1] [:format="r32float";viewDimension="2d";stage="compute";access="read_write";mipLevel=1]
expected: FAIL expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d";stage="compute";access="read_write";mipLevel=2] [:format="r32float";viewDimension="2d";stage="compute";access="read_write";mipLevel=2]
expected: FAIL expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d";stage="compute";access="write";mipLevel=0] [:format="r32float";viewDimension="2d";stage="compute";access="write";mipLevel=0]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d";stage="compute";access="write";mipLevel=1] [:format="r32float";viewDimension="2d";stage="compute";access="write";mipLevel=1]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d";stage="compute";access="write";mipLevel=2] [:format="r32float";viewDimension="2d";stage="compute";access="write";mipLevel=2]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d";stage="fragment";access="read_write";mipLevel=0] [:format="r32float";viewDimension="2d";stage="fragment";access="read_write";mipLevel=0]
expected: FAIL expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d";stage="fragment";access="read_write";mipLevel=1] [:format="r32float";viewDimension="2d";stage="fragment";access="read_write";mipLevel=1]
expected: FAIL expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d";stage="fragment";access="read_write";mipLevel=2] [:format="r32float";viewDimension="2d";stage="fragment";access="read_write";mipLevel=2]
expected: FAIL expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d";stage="fragment";access="write";mipLevel=0] [:format="r32float";viewDimension="2d";stage="fragment";access="write";mipLevel=0]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d";stage="fragment";access="write";mipLevel=1] [:format="r32float";viewDimension="2d";stage="fragment";access="write";mipLevel=1]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d";stage="fragment";access="write";mipLevel=2] [:format="r32float";viewDimension="2d";stage="fragment";access="write";mipLevel=2]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=0] [:format="r32float";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=0]
expected: FAIL expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=1] [:format="r32float";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=1]
expected: FAIL expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=2] [:format="r32float";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=2]
expected: FAIL expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d-array";stage="compute";access="write";mipLevel=0] [:format="r32float";viewDimension="2d-array";stage="compute";access="write";mipLevel=0]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d-array";stage="compute";access="write";mipLevel=1] [:format="r32float";viewDimension="2d-array";stage="compute";access="write";mipLevel=1]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d-array";stage="compute";access="write";mipLevel=2] [:format="r32float";viewDimension="2d-array";stage="compute";access="write";mipLevel=2]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=0] [:format="r32float";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=0]
expected: FAIL expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=1] [:format="r32float";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=1]
expected: FAIL expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=2] [:format="r32float";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=2]
expected: FAIL expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d-array";stage="fragment";access="write";mipLevel=0] [:format="r32float";viewDimension="2d-array";stage="fragment";access="write";mipLevel=0]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d-array";stage="fragment";access="write";mipLevel=1] [:format="r32float";viewDimension="2d-array";stage="fragment";access="write";mipLevel=1]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d-array";stage="fragment";access="write";mipLevel=2] [:format="r32float";viewDimension="2d-array";stage="fragment";access="write";mipLevel=2]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="3d";stage="compute";access="read_write";mipLevel=0] [:format="r32float";viewDimension="3d";stage="compute";access="read_write";mipLevel=0]
expected: FAIL expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="3d";stage="compute";access="read_write";mipLevel=1] [:format="r32float";viewDimension="3d";stage="compute";access="read_write";mipLevel=1]
expected: FAIL expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="3d";stage="compute";access="read_write";mipLevel=2] [:format="r32float";viewDimension="3d";stage="compute";access="read_write";mipLevel=2]
expected: FAIL expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="3d";stage="compute";access="write";mipLevel=0] [:format="r32float";viewDimension="3d";stage="compute";access="write";mipLevel=0]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="3d";stage="compute";access="write";mipLevel=1] [:format="r32float";viewDimension="3d";stage="compute";access="write";mipLevel=1]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="3d";stage="compute";access="write";mipLevel=2] [:format="r32float";viewDimension="3d";stage="compute";access="write";mipLevel=2]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="3d";stage="fragment";access="read_write";mipLevel=0] [:format="r32float";viewDimension="3d";stage="fragment";access="read_write";mipLevel=0]
expected: FAIL expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="3d";stage="fragment";access="read_write";mipLevel=1] [:format="r32float";viewDimension="3d";stage="fragment";access="read_write";mipLevel=1]
expected: FAIL expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="3d";stage="fragment";access="read_write";mipLevel=2] [:format="r32float";viewDimension="3d";stage="fragment";access="read_write";mipLevel=2]
expected: FAIL expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="3d";stage="fragment";access="write";mipLevel=0] [:format="r32float";viewDimension="3d";stage="fragment";access="write";mipLevel=0]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="3d";stage="fragment";access="write";mipLevel=1] [:format="r32float";viewDimension="3d";stage="fragment";access="write";mipLevel=1]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="3d";stage="fragment";access="write";mipLevel=2] [:format="r32float";viewDimension="3d";stage="fragment";access="write";mipLevel=2]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32sint";viewDimension="1d";stage="compute";access="read_write";mipLevel=0] [:format="r32sint";viewDimension="1d";stage="compute";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32sint";viewDimension="1d";stage="compute";access="write";mipLevel=0] [:format="r32sint";viewDimension="1d";stage="compute";access="write";mipLevel=0]
[:format="r32sint";viewDimension="1d";stage="fragment";access="read_write";mipLevel=0] [:format="r32sint";viewDimension="1d";stage="fragment";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32sint";viewDimension="1d";stage="fragment";access="write";mipLevel=0] [:format="r32sint";viewDimension="1d";stage="fragment";access="write";mipLevel=0]
[:format="r32sint";viewDimension="2d";stage="compute";access="read_write";mipLevel=0] [:format="r32sint";viewDimension="2d";stage="compute";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32sint";viewDimension="2d";stage="compute";access="read_write";mipLevel=1] [:format="r32sint";viewDimension="2d";stage="compute";access="read_write";mipLevel=1]
expected: FAIL
[:format="r32sint";viewDimension="2d";stage="compute";access="read_write";mipLevel=2] [:format="r32sint";viewDimension="2d";stage="compute";access="read_write";mipLevel=2]
expected: FAIL
[:format="r32sint";viewDimension="2d";stage="compute";access="write";mipLevel=0] [:format="r32sint";viewDimension="2d";stage="compute";access="write";mipLevel=0]
@@ -238,13 +323,10 @@
[:format="r32sint";viewDimension="2d";stage="compute";access="write";mipLevel=2] [:format="r32sint";viewDimension="2d";stage="compute";access="write";mipLevel=2]
[:format="r32sint";viewDimension="2d";stage="fragment";access="read_write";mipLevel=0] [:format="r32sint";viewDimension="2d";stage="fragment";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32sint";viewDimension="2d";stage="fragment";access="read_write";mipLevel=1] [:format="r32sint";viewDimension="2d";stage="fragment";access="read_write";mipLevel=1]
expected: FAIL
[:format="r32sint";viewDimension="2d";stage="fragment";access="read_write";mipLevel=2] [:format="r32sint";viewDimension="2d";stage="fragment";access="read_write";mipLevel=2]
expected: FAIL
[:format="r32sint";viewDimension="2d";stage="fragment";access="write";mipLevel=0] [:format="r32sint";viewDimension="2d";stage="fragment";access="write";mipLevel=0]
@@ -253,13 +335,10 @@
[:format="r32sint";viewDimension="2d";stage="fragment";access="write";mipLevel=2] [:format="r32sint";viewDimension="2d";stage="fragment";access="write";mipLevel=2]
[:format="r32sint";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=0] [:format="r32sint";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32sint";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=1] [:format="r32sint";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=1]
expected: FAIL
[:format="r32sint";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=2] [:format="r32sint";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=2]
expected: FAIL
[:format="r32sint";viewDimension="2d-array";stage="compute";access="write";mipLevel=0] [:format="r32sint";viewDimension="2d-array";stage="compute";access="write";mipLevel=0]
@@ -268,13 +347,10 @@
[:format="r32sint";viewDimension="2d-array";stage="compute";access="write";mipLevel=2] [:format="r32sint";viewDimension="2d-array";stage="compute";access="write";mipLevel=2]
[:format="r32sint";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=0] [:format="r32sint";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32sint";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=1] [:format="r32sint";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=1]
expected: FAIL
[:format="r32sint";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=2] [:format="r32sint";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=2]
expected: FAIL
[:format="r32sint";viewDimension="2d-array";stage="fragment";access="write";mipLevel=0] [:format="r32sint";viewDimension="2d-array";stage="fragment";access="write";mipLevel=0]
@@ -283,13 +359,10 @@
[:format="r32sint";viewDimension="2d-array";stage="fragment";access="write";mipLevel=2] [:format="r32sint";viewDimension="2d-array";stage="fragment";access="write";mipLevel=2]
[:format="r32sint";viewDimension="3d";stage="compute";access="read_write";mipLevel=0] [:format="r32sint";viewDimension="3d";stage="compute";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32sint";viewDimension="3d";stage="compute";access="read_write";mipLevel=1] [:format="r32sint";viewDimension="3d";stage="compute";access="read_write";mipLevel=1]
expected: FAIL
[:format="r32sint";viewDimension="3d";stage="compute";access="read_write";mipLevel=2] [:format="r32sint";viewDimension="3d";stage="compute";access="read_write";mipLevel=2]
expected: FAIL
[:format="r32sint";viewDimension="3d";stage="compute";access="write";mipLevel=0] [:format="r32sint";viewDimension="3d";stage="compute";access="write";mipLevel=0]
@@ -298,13 +371,10 @@
[:format="r32sint";viewDimension="3d";stage="compute";access="write";mipLevel=2] [:format="r32sint";viewDimension="3d";stage="compute";access="write";mipLevel=2]
[:format="r32sint";viewDimension="3d";stage="fragment";access="read_write";mipLevel=0] [:format="r32sint";viewDimension="3d";stage="fragment";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32sint";viewDimension="3d";stage="fragment";access="read_write";mipLevel=1] [:format="r32sint";viewDimension="3d";stage="fragment";access="read_write";mipLevel=1]
expected: FAIL
[:format="r32sint";viewDimension="3d";stage="fragment";access="read_write";mipLevel=2] [:format="r32sint";viewDimension="3d";stage="fragment";access="read_write";mipLevel=2]
expected: FAIL
[:format="r32sint";viewDimension="3d";stage="fragment";access="write";mipLevel=0] [:format="r32sint";viewDimension="3d";stage="fragment";access="write";mipLevel=0]
@@ -313,23 +383,18 @@
[:format="r32sint";viewDimension="3d";stage="fragment";access="write";mipLevel=2] [:format="r32sint";viewDimension="3d";stage="fragment";access="write";mipLevel=2]
[:format="r32uint";viewDimension="1d";stage="compute";access="read_write";mipLevel=0] [:format="r32uint";viewDimension="1d";stage="compute";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32uint";viewDimension="1d";stage="compute";access="write";mipLevel=0] [:format="r32uint";viewDimension="1d";stage="compute";access="write";mipLevel=0]
[:format="r32uint";viewDimension="1d";stage="fragment";access="read_write";mipLevel=0] [:format="r32uint";viewDimension="1d";stage="fragment";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32uint";viewDimension="1d";stage="fragment";access="write";mipLevel=0] [:format="r32uint";viewDimension="1d";stage="fragment";access="write";mipLevel=0]
[:format="r32uint";viewDimension="2d";stage="compute";access="read_write";mipLevel=0] [:format="r32uint";viewDimension="2d";stage="compute";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32uint";viewDimension="2d";stage="compute";access="read_write";mipLevel=1] [:format="r32uint";viewDimension="2d";stage="compute";access="read_write";mipLevel=1]
expected: FAIL
[:format="r32uint";viewDimension="2d";stage="compute";access="read_write";mipLevel=2] [:format="r32uint";viewDimension="2d";stage="compute";access="read_write";mipLevel=2]
expected: FAIL
[:format="r32uint";viewDimension="2d";stage="compute";access="write";mipLevel=0] [:format="r32uint";viewDimension="2d";stage="compute";access="write";mipLevel=0]
@@ -338,13 +403,10 @@
[:format="r32uint";viewDimension="2d";stage="compute";access="write";mipLevel=2] [:format="r32uint";viewDimension="2d";stage="compute";access="write";mipLevel=2]
[:format="r32uint";viewDimension="2d";stage="fragment";access="read_write";mipLevel=0] [:format="r32uint";viewDimension="2d";stage="fragment";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32uint";viewDimension="2d";stage="fragment";access="read_write";mipLevel=1] [:format="r32uint";viewDimension="2d";stage="fragment";access="read_write";mipLevel=1]
expected: FAIL
[:format="r32uint";viewDimension="2d";stage="fragment";access="read_write";mipLevel=2] [:format="r32uint";viewDimension="2d";stage="fragment";access="read_write";mipLevel=2]
expected: FAIL
[:format="r32uint";viewDimension="2d";stage="fragment";access="write";mipLevel=0] [:format="r32uint";viewDimension="2d";stage="fragment";access="write";mipLevel=0]
@@ -353,13 +415,10 @@
[:format="r32uint";viewDimension="2d";stage="fragment";access="write";mipLevel=2] [:format="r32uint";viewDimension="2d";stage="fragment";access="write";mipLevel=2]
[:format="r32uint";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=0] [:format="r32uint";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32uint";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=1] [:format="r32uint";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=1]
expected: FAIL
[:format="r32uint";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=2] [:format="r32uint";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=2]
expected: FAIL
[:format="r32uint";viewDimension="2d-array";stage="compute";access="write";mipLevel=0] [:format="r32uint";viewDimension="2d-array";stage="compute";access="write";mipLevel=0]
@@ -368,13 +427,10 @@
[:format="r32uint";viewDimension="2d-array";stage="compute";access="write";mipLevel=2] [:format="r32uint";viewDimension="2d-array";stage="compute";access="write";mipLevel=2]
[:format="r32uint";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=0] [:format="r32uint";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32uint";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=1] [:format="r32uint";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=1]
expected: FAIL
[:format="r32uint";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=2] [:format="r32uint";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=2]
expected: FAIL
[:format="r32uint";viewDimension="2d-array";stage="fragment";access="write";mipLevel=0] [:format="r32uint";viewDimension="2d-array";stage="fragment";access="write";mipLevel=0]
@@ -383,13 +439,10 @@
[:format="r32uint";viewDimension="2d-array";stage="fragment";access="write";mipLevel=2] [:format="r32uint";viewDimension="2d-array";stage="fragment";access="write";mipLevel=2]
[:format="r32uint";viewDimension="3d";stage="compute";access="read_write";mipLevel=0] [:format="r32uint";viewDimension="3d";stage="compute";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32uint";viewDimension="3d";stage="compute";access="read_write";mipLevel=1] [:format="r32uint";viewDimension="3d";stage="compute";access="read_write";mipLevel=1]
expected: FAIL
[:format="r32uint";viewDimension="3d";stage="compute";access="read_write";mipLevel=2] [:format="r32uint";viewDimension="3d";stage="compute";access="read_write";mipLevel=2]
expected: FAIL
[:format="r32uint";viewDimension="3d";stage="compute";access="write";mipLevel=0] [:format="r32uint";viewDimension="3d";stage="compute";access="write";mipLevel=0]
@@ -398,13 +451,10 @@
[:format="r32uint";viewDimension="3d";stage="compute";access="write";mipLevel=2] [:format="r32uint";viewDimension="3d";stage="compute";access="write";mipLevel=2]
[:format="r32uint";viewDimension="3d";stage="fragment";access="read_write";mipLevel=0] [:format="r32uint";viewDimension="3d";stage="fragment";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32uint";viewDimension="3d";stage="fragment";access="read_write";mipLevel=1] [:format="r32uint";viewDimension="3d";stage="fragment";access="read_write";mipLevel=1]
expected: FAIL
[:format="r32uint";viewDimension="3d";stage="fragment";access="read_write";mipLevel=2] [:format="r32uint";viewDimension="3d";stage="fragment";access="read_write";mipLevel=2]
expected: FAIL
[:format="r32uint";viewDimension="3d";stage="fragment";access="write";mipLevel=0] [:format="r32uint";viewDimension="3d";stage="fragment";access="write";mipLevel=0]

View File

@@ -1,5 +1,6 @@
[cts.https.html?q=webgpu:shader,execution,memory_model,barrier:workgroup_barrier_load_store:*] [cts.https.html?q=webgpu:shader,execution,memory_model,barrier:workgroup_barrier_load_store:*]
implementation-status: backlog implementation-status:
if os == "win" and not debug: backlog
expected: expected:
if os == "win" and not debug: [OK, TIMEOUT] if os == "win" and not debug: [OK, TIMEOUT]
[:accessValueType="f16";memType="non_atomic_storage";accessPair="rw";normalBarrier=false] [:accessValueType="f16";memType="non_atomic_storage";accessPair="rw";normalBarrier=false]
@@ -23,7 +24,6 @@
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
[:accessValueType="u32";memType="non_atomic_texture";accessPair="rw";normalBarrier=true] [:accessValueType="u32";memType="non_atomic_texture";accessPair="rw";normalBarrier=true]
expected: FAIL
[:accessValueType="u32";memType="non_atomic_workgroup";accessPair="rw";normalBarrier=false] [:accessValueType="u32";memType="non_atomic_workgroup";accessPair="rw";normalBarrier=false]
expected: expected:
@@ -33,7 +33,8 @@
[cts.https.html?q=webgpu:shader,execution,memory_model,barrier:workgroup_barrier_store_load:*] [cts.https.html?q=webgpu:shader,execution,memory_model,barrier:workgroup_barrier_store_load:*]
implementation-status: backlog implementation-status:
if os == "win" and not debug: backlog
expected: expected:
if os == "win" and not debug: [OK, TIMEOUT] if os == "win" and not debug: [OK, TIMEOUT]
[:accessValueType="f16";memType="non_atomic_storage";accessPair="wr";normalBarrier=false] [:accessValueType="f16";memType="non_atomic_storage";accessPair="wr";normalBarrier=false]
@@ -57,7 +58,6 @@
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN] if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
[:accessValueType="u32";memType="non_atomic_texture";accessPair="wr";normalBarrier=true] [:accessValueType="u32";memType="non_atomic_texture";accessPair="wr";normalBarrier=true]
expected: FAIL
[:accessValueType="u32";memType="non_atomic_workgroup";accessPair="wr";normalBarrier=false] [:accessValueType="u32";memType="non_atomic_workgroup";accessPair="wr";normalBarrier=false]
expected: expected:
@@ -67,7 +67,6 @@
[cts.https.html?q=webgpu:shader,execution,memory_model,barrier:workgroup_barrier_store_store:*] [cts.https.html?q=webgpu:shader,execution,memory_model,barrier:workgroup_barrier_store_store:*]
implementation-status: backlog
[:accessValueType="f16";memType="non_atomic_storage";accessPair="ww";normalBarrier=false] [:accessValueType="f16";memType="non_atomic_storage";accessPair="ww";normalBarrier=false]
[:accessValueType="f16";memType="non_atomic_storage";accessPair="ww";normalBarrier=true] [:accessValueType="f16";memType="non_atomic_storage";accessPair="ww";normalBarrier=true]
@@ -87,7 +86,6 @@
[:accessValueType="u32";memType="non_atomic_texture";accessPair="ww";normalBarrier=false] [:accessValueType="u32";memType="non_atomic_texture";accessPair="ww";normalBarrier=false]
[:accessValueType="u32";memType="non_atomic_texture";accessPair="ww";normalBarrier=true] [:accessValueType="u32";memType="non_atomic_texture";accessPair="ww";normalBarrier=true]
expected: FAIL
[:accessValueType="u32";memType="non_atomic_workgroup";accessPair="ww";normalBarrier=false] [:accessValueType="u32";memType="non_atomic_workgroup";accessPair="ww";normalBarrier=false]

View File

@@ -1,37 +1,24 @@
[cts.https.html?q=webgpu:shader,execution,memory_model,texture_intra_invocation_coherence:texture_intra_invocation_coherence:*] [cts.https.html?q=webgpu:shader,execution,memory_model,texture_intra_invocation_coherence:texture_intra_invocation_coherence:*]
implementation-status: backlog
[:format="r32float";dim="1d"] [:format="r32float";dim="1d"]
expected: FAIL
[:format="r32float";dim="2d"] [:format="r32float";dim="2d"]
expected: FAIL
[:format="r32float";dim="2d-array"] [:format="r32float";dim="2d-array"]
expected: FAIL
[:format="r32float";dim="3d"] [:format="r32float";dim="3d"]
expected: FAIL
[:format="r32sint";dim="1d"] [:format="r32sint";dim="1d"]
expected: FAIL
[:format="r32sint";dim="2d"] [:format="r32sint";dim="2d"]
expected: FAIL
[:format="r32sint";dim="2d-array"] [:format="r32sint";dim="2d-array"]
expected: FAIL
[:format="r32sint";dim="3d"] [:format="r32sint";dim="3d"]
expected: FAIL
[:format="r32uint";dim="1d"] [:format="r32uint";dim="1d"]
expected: FAIL
[:format="r32uint";dim="2d"] [:format="r32uint";dim="2d"]
expected: FAIL
[:format="r32uint";dim="2d-array"] [:format="r32uint";dim="2d-array"]
expected: FAIL
[:format="r32uint";dim="3d"] [:format="r32uint";dim="3d"]
expected: FAIL

View File

@@ -1,5 +1,4 @@
[cts.https.html?q=webgpu:shader,execution,shader_io,fragment_builtins:inputs,front_facing:*] [cts.https.html?q=webgpu:shader,execution,shader_io,fragment_builtins:inputs,front_facing:*]
implementation-status: backlog
[:nearFar=[0,1\];sampleCount=1;frontFace="ccw";interpolation={"type":"flat","sampling":"either"}] [:nearFar=[0,1\];sampleCount=1;frontFace="ccw";interpolation={"type":"flat","sampling":"either"}]
[:nearFar=[0,1\];sampleCount=1;frontFace="ccw";interpolation={"type":"flat","sampling":"first"}] [:nearFar=[0,1\];sampleCount=1;frontFace="ccw";interpolation={"type":"flat","sampling":"first"}]
@@ -33,52 +32,36 @@
[:nearFar=[0,1\];sampleCount=1;frontFace="cw";interpolation={"type":"perspective","sampling":"sample"}] [:nearFar=[0,1\];sampleCount=1;frontFace="cw";interpolation={"type":"perspective","sampling":"sample"}]
[:nearFar=[0,1\];sampleCount=4;frontFace="ccw";interpolation={"type":"flat","sampling":"either"}] [:nearFar=[0,1\];sampleCount=4;frontFace="ccw";interpolation={"type":"flat","sampling":"either"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="ccw";interpolation={"type":"flat","sampling":"first"}] [:nearFar=[0,1\];sampleCount=4;frontFace="ccw";interpolation={"type":"flat","sampling":"first"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="ccw";interpolation={"type":"linear","sampling":"center"}] [:nearFar=[0,1\];sampleCount=4;frontFace="ccw";interpolation={"type":"linear","sampling":"center"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="ccw";interpolation={"type":"linear","sampling":"centroid"}] [:nearFar=[0,1\];sampleCount=4;frontFace="ccw";interpolation={"type":"linear","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="ccw";interpolation={"type":"linear","sampling":"sample"}] [:nearFar=[0,1\];sampleCount=4;frontFace="ccw";interpolation={"type":"linear","sampling":"sample"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="ccw";interpolation={"type":"perspective","sampling":"center"}] [:nearFar=[0,1\];sampleCount=4;frontFace="ccw";interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="ccw";interpolation={"type":"perspective","sampling":"centroid"}] [:nearFar=[0,1\];sampleCount=4;frontFace="ccw";interpolation={"type":"perspective","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="ccw";interpolation={"type":"perspective","sampling":"sample"}] [:nearFar=[0,1\];sampleCount=4;frontFace="ccw";interpolation={"type":"perspective","sampling":"sample"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="cw";interpolation={"type":"flat","sampling":"either"}] [:nearFar=[0,1\];sampleCount=4;frontFace="cw";interpolation={"type":"flat","sampling":"either"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="cw";interpolation={"type":"flat","sampling":"first"}] [:nearFar=[0,1\];sampleCount=4;frontFace="cw";interpolation={"type":"flat","sampling":"first"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="cw";interpolation={"type":"linear","sampling":"center"}] [:nearFar=[0,1\];sampleCount=4;frontFace="cw";interpolation={"type":"linear","sampling":"center"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="cw";interpolation={"type":"linear","sampling":"centroid"}] [:nearFar=[0,1\];sampleCount=4;frontFace="cw";interpolation={"type":"linear","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="cw";interpolation={"type":"linear","sampling":"sample"}] [:nearFar=[0,1\];sampleCount=4;frontFace="cw";interpolation={"type":"linear","sampling":"sample"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="cw";interpolation={"type":"perspective","sampling":"center"}] [:nearFar=[0,1\];sampleCount=4;frontFace="cw";interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="cw";interpolation={"type":"perspective","sampling":"centroid"}] [:nearFar=[0,1\];sampleCount=4;frontFace="cw";interpolation={"type":"perspective","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="cw";interpolation={"type":"perspective","sampling":"sample"}] [:nearFar=[0,1\];sampleCount=4;frontFace="cw";interpolation={"type":"perspective","sampling":"sample"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=1;frontFace="ccw";interpolation={"type":"flat","sampling":"either"}] [:nearFar=[0.25,0.75\];sampleCount=1;frontFace="ccw";interpolation={"type":"flat","sampling":"either"}]
@@ -113,56 +96,39 @@
[:nearFar=[0.25,0.75\];sampleCount=1;frontFace="cw";interpolation={"type":"perspective","sampling":"sample"}] [:nearFar=[0.25,0.75\];sampleCount=1;frontFace="cw";interpolation={"type":"perspective","sampling":"sample"}]
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="ccw";interpolation={"type":"flat","sampling":"either"}] [:nearFar=[0.25,0.75\];sampleCount=4;frontFace="ccw";interpolation={"type":"flat","sampling":"either"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="ccw";interpolation={"type":"flat","sampling":"first"}] [:nearFar=[0.25,0.75\];sampleCount=4;frontFace="ccw";interpolation={"type":"flat","sampling":"first"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="ccw";interpolation={"type":"linear","sampling":"center"}] [:nearFar=[0.25,0.75\];sampleCount=4;frontFace="ccw";interpolation={"type":"linear","sampling":"center"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="ccw";interpolation={"type":"linear","sampling":"centroid"}] [:nearFar=[0.25,0.75\];sampleCount=4;frontFace="ccw";interpolation={"type":"linear","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="ccw";interpolation={"type":"linear","sampling":"sample"}] [:nearFar=[0.25,0.75\];sampleCount=4;frontFace="ccw";interpolation={"type":"linear","sampling":"sample"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="ccw";interpolation={"type":"perspective","sampling":"center"}] [:nearFar=[0.25,0.75\];sampleCount=4;frontFace="ccw";interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="ccw";interpolation={"type":"perspective","sampling":"centroid"}] [:nearFar=[0.25,0.75\];sampleCount=4;frontFace="ccw";interpolation={"type":"perspective","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="ccw";interpolation={"type":"perspective","sampling":"sample"}] [:nearFar=[0.25,0.75\];sampleCount=4;frontFace="ccw";interpolation={"type":"perspective","sampling":"sample"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="cw";interpolation={"type":"flat","sampling":"either"}] [:nearFar=[0.25,0.75\];sampleCount=4;frontFace="cw";interpolation={"type":"flat","sampling":"either"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="cw";interpolation={"type":"flat","sampling":"first"}] [:nearFar=[0.25,0.75\];sampleCount=4;frontFace="cw";interpolation={"type":"flat","sampling":"first"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="cw";interpolation={"type":"linear","sampling":"center"}] [:nearFar=[0.25,0.75\];sampleCount=4;frontFace="cw";interpolation={"type":"linear","sampling":"center"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="cw";interpolation={"type":"linear","sampling":"centroid"}] [:nearFar=[0.25,0.75\];sampleCount=4;frontFace="cw";interpolation={"type":"linear","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="cw";interpolation={"type":"linear","sampling":"sample"}] [:nearFar=[0.25,0.75\];sampleCount=4;frontFace="cw";interpolation={"type":"linear","sampling":"sample"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="cw";interpolation={"type":"perspective","sampling":"center"}] [:nearFar=[0.25,0.75\];sampleCount=4;frontFace="cw";interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="cw";interpolation={"type":"perspective","sampling":"centroid"}] [:nearFar=[0.25,0.75\];sampleCount=4;frontFace="cw";interpolation={"type":"perspective","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="cw";interpolation={"type":"perspective","sampling":"sample"}] [:nearFar=[0.25,0.75\];sampleCount=4;frontFace="cw";interpolation={"type":"perspective","sampling":"sample"}]
expected: FAIL
[cts.https.html?q=webgpu:shader,execution,shader_io,fragment_builtins:inputs,interStage,centroid:*] [cts.https.html?q=webgpu:shader,execution,shader_io,fragment_builtins:inputs,interStage,centroid:*]
implementation-status: backlog
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"linear","sampling":"center"}] [:nearFar=[0,1\];sampleCount=1;interpolation={"type":"linear","sampling":"center"}]
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"linear","sampling":"centroid"}] [:nearFar=[0,1\];sampleCount=1;interpolation={"type":"linear","sampling":"centroid"}]
@@ -172,16 +138,12 @@
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"perspective","sampling":"centroid"}] [:nearFar=[0,1\];sampleCount=1;interpolation={"type":"perspective","sampling":"centroid"}]
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"centroid"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"centroid"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"linear","sampling":"center"}] [:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"linear","sampling":"center"}]
@@ -192,20 +154,17 @@
[:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"perspective","sampling":"centroid"}] [:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"perspective","sampling":"centroid"}]
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"centroid"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"centroid"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"centroid"}]
expected: FAIL
[cts.https.html?q=webgpu:shader,execution,shader_io,fragment_builtins:inputs,interStage:*] [cts.https.html?q=webgpu:shader,execution,shader_io,fragment_builtins:inputs,interStage:*]
implementation-status: backlog implementation-status:
if os == "linux": backlog
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"flat","sampling":"either"}] [:nearFar=[0,1\];sampleCount=1;interpolation={"type":"flat","sampling":"either"}]
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"flat","sampling":"first"}] [:nearFar=[0,1\];sampleCount=1;interpolation={"type":"flat","sampling":"first"}]
@@ -231,31 +190,30 @@
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"perspective"}] [:nearFar=[0,1\];sampleCount=1;interpolation={"type":"perspective"}]
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat","sampling":"either"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat","sampling":"either"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat","sampling":"first"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat","sampling":"first"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}]
expected: FAIL expected:
if os == "linux": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"sample"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"sample"}]
expected: FAIL expected:
if os == "linux": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear"}]
expected: FAIL expected:
if os == "linux": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"sample"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"sample"}]
expected: FAIL expected:
if os == "linux": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"flat","sampling":"either"}] [:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"flat","sampling":"either"}]
@@ -282,35 +240,36 @@
[:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"perspective"}] [:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"perspective"}]
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat","sampling":"either"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat","sampling":"either"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat","sampling":"first"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat","sampling":"first"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}]
expected: FAIL expected:
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"sample"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"sample"}]
expected: FAIL expected:
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear"}]
expected: FAIL expected:
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"sample"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"sample"}]
expected: FAIL expected:
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective"}]
expected: FAIL
[cts.https.html?q=webgpu:shader,execution,shader_io,fragment_builtins:inputs,position:*] [cts.https.html?q=webgpu:shader,execution,shader_io,fragment_builtins:inputs,position:*]
implementation-status: backlog implementation-status:
if os == "win": backlog
if os == "linux": backlog
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"flat","sampling":"either"}] [:nearFar=[0,1\];sampleCount=1;interpolation={"type":"flat","sampling":"either"}]
expected: expected:
if os == "win": FAIL if os == "win": FAIL
@@ -344,28 +303,38 @@
if os == "win": FAIL if os == "win": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat","sampling":"either"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat","sampling":"either"}]
expected: FAIL expected:
if os == "win": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat","sampling":"first"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat","sampling":"first"}]
expected: FAIL expected:
if os == "win": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}]
expected: FAIL expected:
if os == "win": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"centroid"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"centroid"}]
expected: FAIL expected:
if os == "win": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"sample"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"sample"}]
expected: FAIL expected:
if os == "win": FAIL
if os == "linux": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL expected:
if os == "win": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"centroid"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"centroid"}]
expected: FAIL expected:
if os == "win": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"sample"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"sample"}]
expected: FAIL expected:
if os == "win": FAIL
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"flat","sampling":"either"}] [:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"flat","sampling":"either"}]
expected: expected:
@@ -400,32 +369,41 @@
if os == "win": FAIL if os == "win": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat","sampling":"either"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat","sampling":"either"}]
expected: FAIL expected:
if os == "win": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat","sampling":"first"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat","sampling":"first"}]
expected: FAIL expected:
if os == "win": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}]
expected: FAIL expected:
if os == "win": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"centroid"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"centroid"}]
expected: FAIL expected:
if os == "win": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"sample"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"sample"}]
expected: FAIL expected:
if os == "win": FAIL
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL expected:
if os == "win": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"centroid"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"centroid"}]
expected: FAIL expected:
if os == "win": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"sample"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"sample"}]
expected: FAIL expected:
if os == "win": FAIL
if os == "linux": FAIL
[cts.https.html?q=webgpu:shader,execution,shader_io,fragment_builtins:inputs,sample_index:*] [cts.https.html?q=webgpu:shader,execution,shader_io,fragment_builtins:inputs,sample_index:*]
implementation-status: backlog
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"flat","sampling":"either"}] [:nearFar=[0,1\];sampleCount=1;interpolation={"type":"flat","sampling":"either"}]
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"flat","sampling":"first"}] [:nearFar=[0,1\];sampleCount=1;interpolation={"type":"flat","sampling":"first"}]
@@ -443,28 +421,20 @@
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"perspective","sampling":"sample"}] [:nearFar=[0,1\];sampleCount=1;interpolation={"type":"perspective","sampling":"sample"}]
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat","sampling":"either"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat","sampling":"either"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat","sampling":"first"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat","sampling":"first"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"centroid"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"sample"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"sample"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"centroid"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"sample"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"sample"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"flat","sampling":"either"}] [:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"flat","sampling":"either"}]
@@ -483,32 +453,25 @@
[:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"perspective","sampling":"sample"}] [:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"perspective","sampling":"sample"}]
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat","sampling":"either"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat","sampling":"either"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat","sampling":"first"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat","sampling":"first"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"centroid"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"sample"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"sample"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"centroid"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"sample"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"sample"}]
expected: FAIL
[cts.https.html?q=webgpu:shader,execution,shader_io,fragment_builtins:inputs,sample_mask:*] [cts.https.html?q=webgpu:shader,execution,shader_io,fragment_builtins:inputs,sample_mask:*]
implementation-status: backlog implementation-status:
if os == "linux": backlog
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"flat","sampling":"either"}] [:nearFar=[0,1\];sampleCount=1;interpolation={"type":"flat","sampling":"either"}]
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"flat","sampling":"first"}] [:nearFar=[0,1\];sampleCount=1;interpolation={"type":"flat","sampling":"first"}]
@@ -526,28 +489,36 @@
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"perspective","sampling":"sample"}] [:nearFar=[0,1\];sampleCount=1;interpolation={"type":"perspective","sampling":"sample"}]
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat","sampling":"either"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat","sampling":"either"}]
expected: FAIL expected:
if os == "linux": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat","sampling":"first"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat","sampling":"first"}]
expected: FAIL expected:
if os == "linux": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}]
expected: FAIL expected:
if os == "linux": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"centroid"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"centroid"}]
expected: FAIL expected:
if os == "linux": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"sample"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"sample"}]
expected: FAIL expected:
if os == "linux": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL expected:
if os == "linux": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"centroid"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"centroid"}]
expected: FAIL expected:
if os == "linux": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"sample"}] [:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"sample"}]
expected: FAIL expected:
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"flat","sampling":"either"}] [:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"flat","sampling":"either"}]
@@ -566,28 +537,36 @@
[:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"perspective","sampling":"sample"}] [:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"perspective","sampling":"sample"}]
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat","sampling":"either"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat","sampling":"either"}]
expected: FAIL expected:
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat","sampling":"first"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat","sampling":"first"}]
expected: FAIL expected:
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}]
expected: FAIL expected:
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"centroid"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"centroid"}]
expected: FAIL expected:
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"sample"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"sample"}]
expected: FAIL expected:
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL expected:
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"centroid"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"centroid"}]
expected: FAIL expected:
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"sample"}] [:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"sample"}]
expected: FAIL expected:
if os == "linux": FAIL
[cts.https.html?q=webgpu:shader,execution,shader_io,fragment_builtins:subgroup_invocation_id:*] [cts.https.html?q=webgpu:shader,execution,shader_io,fragment_builtins:subgroup_invocation_id:*]

View File

@@ -961,7 +961,6 @@
[cts.https.html?q=webgpu:shader,execution,shader_io,workgroup_size:workgroup_size_override_exp:*] [cts.https.html?q=webgpu:shader,execution,shader_io,workgroup_size:workgroup_size_override_exp:*]
implementation-status: backlog
[:override1=11;override2=1;override3=1] [:override1=11;override2=1;override3=1]
[:override1=11;override2=1;override3=2] [:override1=11;override2=1;override3=2]
@@ -1059,42 +1058,32 @@
[:override1=16;override2=4;override3=8] [:override1=16;override2=4;override3=8]
[:override1=1;override2=1;override3=1] [:override1=1;override2=1;override3=1]
expected: FAIL
[:override1=1;override2=1;override3=2] [:override1=1;override2=1;override3=2]
expected: FAIL
[:override1=1;override2=1;override3=4] [:override1=1;override2=1;override3=4]
expected: FAIL
[:override1=1;override2=1;override3=8] [:override1=1;override2=1;override3=8]
[:override1=1;override2=2;override3=1] [:override1=1;override2=2;override3=1]
expected: FAIL
[:override1=1;override2=2;override3=2] [:override1=1;override2=2;override3=2]
expected: FAIL
[:override1=1;override2=2;override3=4] [:override1=1;override2=2;override3=4]
expected: FAIL
[:override1=1;override2=2;override3=8] [:override1=1;override2=2;override3=8]
[:override1=1;override2=3;override3=1] [:override1=1;override2=3;override3=1]
expected: FAIL
[:override1=1;override2=3;override3=2] [:override1=1;override2=3;override3=2]
expected: FAIL
[:override1=1;override2=3;override3=4] [:override1=1;override2=3;override3=4]
[:override1=1;override2=3;override3=8] [:override1=1;override2=3;override3=8]
[:override1=1;override2=4;override3=1] [:override1=1;override2=4;override3=1]
expected: FAIL
[:override1=1;override2=4;override3=2] [:override1=1;override2=4;override3=2]
expected: FAIL
[:override1=1;override2=4;override3=4] [:override1=1;override2=4;override3=4]
@@ -1133,38 +1122,30 @@
[:override1=256;override2=4;override3=8] [:override1=256;override2=4;override3=8]
[:override1=3;override2=1;override3=1] [:override1=3;override2=1;override3=1]
expected: FAIL
[:override1=3;override2=1;override3=2] [:override1=3;override2=1;override3=2]
expected: FAIL
[:override1=3;override2=1;override3=4] [:override1=3;override2=1;override3=4]
expected: FAIL
[:override1=3;override2=1;override3=8] [:override1=3;override2=1;override3=8]
[:override1=3;override2=2;override3=1] [:override1=3;override2=2;override3=1]
expected: FAIL
[:override1=3;override2=2;override3=2] [:override1=3;override2=2;override3=2]
expected: FAIL
[:override1=3;override2=2;override3=4] [:override1=3;override2=2;override3=4]
[:override1=3;override2=2;override3=8] [:override1=3;override2=2;override3=8]
[:override1=3;override2=3;override3=1] [:override1=3;override2=3;override3=1]
expected: FAIL
[:override1=3;override2=3;override3=2] [:override1=3;override2=3;override3=2]
expected: FAIL
[:override1=3;override2=3;override3=4] [:override1=3;override2=3;override3=4]
[:override1=3;override2=3;override3=8] [:override1=3;override2=3;override3=8]
[:override1=3;override2=4;override3=1] [:override1=3;override2=4;override3=1]
expected: FAIL
[:override1=3;override2=4;override3=2] [:override1=3;override2=4;override3=2]
@@ -1173,44 +1154,30 @@
[:override1=3;override2=4;override3=8] [:override1=3;override2=4;override3=8]
[:override1=4;override2=1;override3=1] [:override1=4;override2=1;override3=1]
expected: FAIL
[:override1=4;override2=1;override3=2] [:override1=4;override2=1;override3=2]
expected: FAIL
[:override1=4;override2=1;override3=4] [:override1=4;override2=1;override3=4]
expected:
if os == "linux": FAIL
if os == "mac": FAIL
[:override1=4;override2=1;override3=8] [:override1=4;override2=1;override3=8]
[:override1=4;override2=2;override3=1] [:override1=4;override2=2;override3=1]
expected: FAIL
[:override1=4;override2=2;override3=2] [:override1=4;override2=2;override3=2]
expected: FAIL
[:override1=4;override2=2;override3=4] [:override1=4;override2=2;override3=4]
[:override1=4;override2=2;override3=8] [:override1=4;override2=2;override3=8]
[:override1=4;override2=3;override3=1] [:override1=4;override2=3;override3=1]
expected: FAIL
[:override1=4;override2=3;override3=2] [:override1=4;override2=3;override3=2]
expected:
if os == "linux": FAIL
if os == "mac": FAIL
[:override1=4;override2=3;override3=4] [:override1=4;override2=3;override3=4]
[:override1=4;override2=3;override3=8] [:override1=4;override2=3;override3=8]
[:override1=4;override2=4;override3=1] [:override1=4;override2=4;override3=1]
expected:
if os == "linux": FAIL
if os == "mac": FAIL
[:override1=4;override2=4;override3=2] [:override1=4;override2=4;override3=2]
@@ -1283,9 +1250,6 @@
[:override1=64;override2=4;override3=8] [:override1=64;override2=4;override3=8]
[:override1=8;override2=1;override3=1] [:override1=8;override2=1;override3=1]
expected:
if os == "linux": FAIL
if os == "mac": FAIL
[:override1=8;override2=1;override3=2] [:override1=8;override2=1;override3=2]

View File

@@ -1761,7 +1761,6 @@
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,textureLoad:sample_index_argument,non_storage:*] [cts.https.html?q=webgpu:shader,validation,expression,call,builtin,textureLoad:sample_index_argument,non_storage:*]
implementation-status: backlog
[:textureType="texture_depth_multisampled_2d";sampleIndexType="abstract-float"] [:textureType="texture_depth_multisampled_2d";sampleIndexType="abstract-float"]
[:textureType="texture_depth_multisampled_2d";sampleIndexType="abstract-int"] [:textureType="texture_depth_multisampled_2d";sampleIndexType="abstract-int"]
@@ -1775,12 +1774,10 @@
[:textureType="texture_depth_multisampled_2d";sampleIndexType="i32"] [:textureType="texture_depth_multisampled_2d";sampleIndexType="i32"]
[:textureType="texture_depth_multisampled_2d";sampleIndexType="u32"] [:textureType="texture_depth_multisampled_2d";sampleIndexType="u32"]
expected: FAIL
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec2%3Cabstract-float%3E"] [:textureType="texture_depth_multisampled_2d";sampleIndexType="vec2%3Cabstract-float%3E"]
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec2%3Cabstract-int%3E"] [:textureType="texture_depth_multisampled_2d";sampleIndexType="vec2%3Cabstract-int%3E"]
expected: FAIL
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec2%3Cbool%3E"] [:textureType="texture_depth_multisampled_2d";sampleIndexType="vec2%3Cbool%3E"]
@@ -1789,14 +1786,12 @@
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec2%3Cf32%3E"] [:textureType="texture_depth_multisampled_2d";sampleIndexType="vec2%3Cf32%3E"]
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec2%3Ci32%3E"] [:textureType="texture_depth_multisampled_2d";sampleIndexType="vec2%3Ci32%3E"]
expected: FAIL
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec2%3Cu32%3E"] [:textureType="texture_depth_multisampled_2d";sampleIndexType="vec2%3Cu32%3E"]
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec3%3Cabstract-float%3E"] [:textureType="texture_depth_multisampled_2d";sampleIndexType="vec3%3Cabstract-float%3E"]
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec3%3Cabstract-int%3E"] [:textureType="texture_depth_multisampled_2d";sampleIndexType="vec3%3Cabstract-int%3E"]
expected: FAIL
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec3%3Cbool%3E"] [:textureType="texture_depth_multisampled_2d";sampleIndexType="vec3%3Cbool%3E"]
@@ -1805,14 +1800,12 @@
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec3%3Cf32%3E"] [:textureType="texture_depth_multisampled_2d";sampleIndexType="vec3%3Cf32%3E"]
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec3%3Ci32%3E"] [:textureType="texture_depth_multisampled_2d";sampleIndexType="vec3%3Ci32%3E"]
expected: FAIL
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec3%3Cu32%3E"] [:textureType="texture_depth_multisampled_2d";sampleIndexType="vec3%3Cu32%3E"]
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec4%3Cabstract-float%3E"] [:textureType="texture_depth_multisampled_2d";sampleIndexType="vec4%3Cabstract-float%3E"]
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec4%3Cabstract-int%3E"] [:textureType="texture_depth_multisampled_2d";sampleIndexType="vec4%3Cabstract-int%3E"]
expected: FAIL
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec4%3Cbool%3E"] [:textureType="texture_depth_multisampled_2d";sampleIndexType="vec4%3Cbool%3E"]
@@ -1821,7 +1814,6 @@
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec4%3Cf32%3E"] [:textureType="texture_depth_multisampled_2d";sampleIndexType="vec4%3Cf32%3E"]
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec4%3Ci32%3E"] [:textureType="texture_depth_multisampled_2d";sampleIndexType="vec4%3Ci32%3E"]
expected: FAIL
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec4%3Cu32%3E"] [:textureType="texture_depth_multisampled_2d";sampleIndexType="vec4%3Cu32%3E"]
@@ -1838,12 +1830,10 @@
[:textureType="texture_multisampled_2d";sampleIndexType="i32"] [:textureType="texture_multisampled_2d";sampleIndexType="i32"]
[:textureType="texture_multisampled_2d";sampleIndexType="u32"] [:textureType="texture_multisampled_2d";sampleIndexType="u32"]
expected: FAIL
[:textureType="texture_multisampled_2d";sampleIndexType="vec2%3Cabstract-float%3E"] [:textureType="texture_multisampled_2d";sampleIndexType="vec2%3Cabstract-float%3E"]
[:textureType="texture_multisampled_2d";sampleIndexType="vec2%3Cabstract-int%3E"] [:textureType="texture_multisampled_2d";sampleIndexType="vec2%3Cabstract-int%3E"]
expected: FAIL
[:textureType="texture_multisampled_2d";sampleIndexType="vec2%3Cbool%3E"] [:textureType="texture_multisampled_2d";sampleIndexType="vec2%3Cbool%3E"]
@@ -1852,14 +1842,12 @@
[:textureType="texture_multisampled_2d";sampleIndexType="vec2%3Cf32%3E"] [:textureType="texture_multisampled_2d";sampleIndexType="vec2%3Cf32%3E"]
[:textureType="texture_multisampled_2d";sampleIndexType="vec2%3Ci32%3E"] [:textureType="texture_multisampled_2d";sampleIndexType="vec2%3Ci32%3E"]
expected: FAIL
[:textureType="texture_multisampled_2d";sampleIndexType="vec2%3Cu32%3E"] [:textureType="texture_multisampled_2d";sampleIndexType="vec2%3Cu32%3E"]
[:textureType="texture_multisampled_2d";sampleIndexType="vec3%3Cabstract-float%3E"] [:textureType="texture_multisampled_2d";sampleIndexType="vec3%3Cabstract-float%3E"]
[:textureType="texture_multisampled_2d";sampleIndexType="vec3%3Cabstract-int%3E"] [:textureType="texture_multisampled_2d";sampleIndexType="vec3%3Cabstract-int%3E"]
expected: FAIL
[:textureType="texture_multisampled_2d";sampleIndexType="vec3%3Cbool%3E"] [:textureType="texture_multisampled_2d";sampleIndexType="vec3%3Cbool%3E"]
@@ -1868,14 +1856,12 @@
[:textureType="texture_multisampled_2d";sampleIndexType="vec3%3Cf32%3E"] [:textureType="texture_multisampled_2d";sampleIndexType="vec3%3Cf32%3E"]
[:textureType="texture_multisampled_2d";sampleIndexType="vec3%3Ci32%3E"] [:textureType="texture_multisampled_2d";sampleIndexType="vec3%3Ci32%3E"]
expected: FAIL
[:textureType="texture_multisampled_2d";sampleIndexType="vec3%3Cu32%3E"] [:textureType="texture_multisampled_2d";sampleIndexType="vec3%3Cu32%3E"]
[:textureType="texture_multisampled_2d";sampleIndexType="vec4%3Cabstract-float%3E"] [:textureType="texture_multisampled_2d";sampleIndexType="vec4%3Cabstract-float%3E"]
[:textureType="texture_multisampled_2d";sampleIndexType="vec4%3Cabstract-int%3E"] [:textureType="texture_multisampled_2d";sampleIndexType="vec4%3Cabstract-int%3E"]
expected: FAIL
[:textureType="texture_multisampled_2d";sampleIndexType="vec4%3Cbool%3E"] [:textureType="texture_multisampled_2d";sampleIndexType="vec4%3Cbool%3E"]
@@ -1884,7 +1870,6 @@
[:textureType="texture_multisampled_2d";sampleIndexType="vec4%3Cf32%3E"] [:textureType="texture_multisampled_2d";sampleIndexType="vec4%3Cf32%3E"]
[:textureType="texture_multisampled_2d";sampleIndexType="vec4%3Ci32%3E"] [:textureType="texture_multisampled_2d";sampleIndexType="vec4%3Ci32%3E"]
expected: FAIL
[:textureType="texture_multisampled_2d";sampleIndexType="vec4%3Cu32%3E"] [:textureType="texture_multisampled_2d";sampleIndexType="vec4%3Cu32%3E"]

File diff suppressed because one or more lines are too long

View File

@@ -2,6 +2,366 @@
## [Unreleased] ## [Unreleased]
## [0.2.171](https://github.com/rust-lang/libc/compare/0.2.170...0.2.171) - 2025-03-11
### Added
- Android: Add `if_nameindex`/`if_freenameindex` support ([#4247](https://github.com/rust-lang/libc/pull/4247))
- Apple: Add missing proc types and constants ([#4310](https://github.com/rust-lang/libc/pull/4310))
- BSD: Add `devname` ([#4285](https://github.com/rust-lang/libc/pull/4285))
- Cygwin: Add PTY and group API ([#4309](https://github.com/rust-lang/libc/pull/4309))
- Cygwin: Add support ([#4279](https://github.com/rust-lang/libc/pull/4279))
- FreeBSD: Make `spawn.h` interfaces available on all FreeBSD-like systems ([#4294](https://github.com/rust-lang/libc/pull/4294))
- Linux: Add `AF_XDP` structs for all Linux environments ([#4163](https://github.com/rust-lang/libc/pull/4163))
- Linux: Add SysV semaphore constants ([#4286](https://github.com/rust-lang/libc/pull/4286))
- Linux: Add `F_SEAL_EXEC` ([#4316](https://github.com/rust-lang/libc/pull/4316))
- Linux: Add `SO_PREFER_BUSY_POLL` and `SO_BUSY_POLL_BUDGET` ([#3917](https://github.com/rust-lang/libc/pull/3917))
- Linux: Add `devmem` structs ([#4299](https://github.com/rust-lang/libc/pull/4299))
- Linux: Add socket constants up to `SO_DEVMEM_DONTNEED` ([#4299](https://github.com/rust-lang/libc/pull/4299))
- NetBSD, OpenBSD, DragonflyBSD: Add `closefrom` ([#4290](https://github.com/rust-lang/libc/pull/4290))
- NuttX: Add `pw_passwd` field to `passwd` ([#4222](https://github.com/rust-lang/libc/pull/4222))
- Solarish: define `IP_BOUND_IF` and `IPV6_BOUND_IF` ([#4287](https://github.com/rust-lang/libc/pull/4287))
- Wali: Add bindings for `wasm32-wali-linux-musl` target ([#4244](https://github.com/rust-lang/libc/pull/4244))
### Changed
- AIX: Use `sa_sigaction` instead of a union ([#4250](https://github.com/rust-lang/libc/pull/4250))
- Make `msqid_ds.__msg_cbytes` public ([#4301](https://github.com/rust-lang/libc/pull/4301))
- Unix: Make all `major`, `minor`, `makedev` into `const fn` ([#4208](https://github.com/rust-lang/libc/pull/4208))
### Deprecated
- Linux: Deprecate obsolete packet filter interfaces ([#4267](https://github.com/rust-lang/libc/pull/4267))
### Fixed
- Cygwin: Fix strerror_r ([#4308](https://github.com/rust-lang/libc/pull/4308))
- Cygwin: Fix usage of f! ([#4308](https://github.com/rust-lang/libc/pull/4308))
- Hermit: Make `stat::st_size` signed ([#4298](https://github.com/rust-lang/libc/pull/4298))
- Linux: Correct values for `SI_TIMER`, `SI_MESGQ`, `SI_ASYNCIO` ([#4292](https://github.com/rust-lang/libc/pull/4292))
- NuttX: Update `tm_zone` and `d_name` fields to use `c_char` type ([#4222](https://github.com/rust-lang/libc/pull/4222))
- Xous: Include the prelude to define `c_int` ([#4304](https://github.com/rust-lang/libc/pull/4304))
### Other
- Add labels to FIXMEs ([#4231](https://github.com/rust-lang/libc/pull/4231), [#4232](https://github.com/rust-lang/libc/pull/4232), [#4234](https://github.com/rust-lang/libc/pull/4234), [#4235](https://github.com/rust-lang/libc/pull/4235), [#4236](https://github.com/rust-lang/libc/pull/4236))
- CI: Fix "cannot find libc" error on Sparc64 ([#4317](https://github.com/rust-lang/libc/pull/4317))
- CI: Fix "cannot find libc" error on s390x ([#4317](https://github.com/rust-lang/libc/pull/4317))
- CI: Pass `--no-self-update` to `rustup update` ([#4306](https://github.com/rust-lang/libc/pull/4306))
- CI: Remove tests for the `i586-pc-windows-msvc` target ([#4311](https://github.com/rust-lang/libc/pull/4311))
- CI: Remove the `check_cfg` job ([#4322](https://github.com/rust-lang/libc/pull/4312))
- Change the range syntax that is giving `ctest` problems ([#4311](https://github.com/rust-lang/libc/pull/4311))
- Linux: Split out the stat struct for gnu/b32/mips ([#4276](https://github.com/rust-lang/libc/pull/4276))
### Removed
- NuttX: Remove `pthread_set_name_np` ([#4251](https://github.com/rust-lang/libc/pull/4251))
## [0.2.170](https://github.com/rust-lang/libc/compare/0.2.169...0.2.170) - 2025-02-23
### Added
- Android: Declare `setdomainname` and `getdomainname` <https://github.com/rust-lang/libc/pull/4212>
- FreeBSD: Add `evdev` structures <https://github.com/rust-lang/libc/pull/3756>
- FreeBSD: Add the new `st_filerev` field to `stat32` ([#4254](https://github.com/rust-lang/libc/pull/4254))
- Linux: Add `SI_*`` and `TRAP_*`` signal codes <https://github.com/rust-lang/libc/pull/4225>
- Linux: Add experimental configuration to enable 64-bit time in kernel APIs, set by `RUST_LIBC_UNSTABLE_LINUX_TIME_BITS64`. <https://github.com/rust-lang/libc/pull/4148>
- Linux: Add recent socket timestamping flags <https://github.com/rust-lang/libc/pull/4273>
- Linux: Added new CANFD_FDF flag for the flags field of canfd_frame <https://github.com/rust-lang/libc/pull/4223>
- Musl: add CLONE_NEWTIME <https://github.com/rust-lang/libc/pull/4226>
- Solarish: add the posix_spawn family of functions <https://github.com/rust-lang/libc/pull/4259>
### Deprecated
- Linux: deprecate kernel modules syscalls <https://github.com/rust-lang/libc/pull/4228>
### Changed
- Emscripten: Assume version is at least 3.1.42 <https://github.com/rust-lang/libc/pull/4243>
### Fixed
- BSD: Correct the definition of `WEXITSTATUS` <https://github.com/rust-lang/libc/pull/4213>
- Hurd: Fix CMSG_DATA on 64bit systems ([#4240](https://github.com/rust-lang/libc/pull/424))
- NetBSD: fix `getmntinfo` ([#4265](https://github.com/rust-lang/libc/pull/4265)
- VxWorks: Fix the size of `time_t` <https://github.com/rust-lang/libc/pull/426>
### Other
- Add labels to FIXMEs <https://github.com/rust-lang/libc/pull/4230>, <https://github.com/rust-lang/libc/pull/4229>, <https://github.com/rust-lang/libc/pull/4237>
- CI: Bump FreeBSD CI to 13.4 and 14.2 <https://github.com/rust-lang/libc/pull/4260>
- Copy definitions from core::ffi and centralize them <https://github.com/rust-lang/libc/pull/4256>
- Define c_char at top-level and remove per-target c_char definitions <https://github.com/rust-lang/libc/pull/4202>
- Port style.rs to syn and add tests for the style checker <https://github.com/rust-lang/libc/pull/4220>
## [0.2.169](https://github.com/rust-lang/libc/compare/0.2.168...0.2.169) - 2024-12-18
### Added
- FreeBSD: add more socket TCP stack constants <https://github.com/rust-lang/libc/pull/4193>
- Fuchsia: add a `sockaddr_vm` definition <https://github.com/rust-lang/libc/pull/4194>
### Fixed
**Breaking**: [rust-lang/rust#132975](https://github.com/rust-lang/rust/pull/132975) corrected the signedness of `core::ffi::c_char` on various Tier 2 and Tier 3 platforms (mostly Arm and RISC-V) to match Clang. This release contains the corresponding changes to `libc`, including the following specific pull requests:
- ESP-IDF: Replace arch-conditional `c_char` with a reexport <https://github.com/rust-lang/libc/pull/4195>
- Fix `c_char` on various targets <https://github.com/rust-lang/libc/pull/4199>
- Mirror `c_char` configuration from `rust-lang/rust` <https://github.com/rust-lang/libc/pull/4198>
### Cleanup
- Do not re-export `c_void` in target-specific code <https://github.com/rust-lang/libc/pull/4200>
## [0.2.168](https://github.com/rust-lang/libc/compare/0.2.167...0.2.168) - 2024-12-09
### Added
- Linux: Add new process flags ([#4174](https://github.com/rust-lang/libc/pull/4174))
- Linux: Make `IFA_*` constants available on all Linux targets <https://github.com/rust-lang/libc/pull/4185>
- Linux: add `MAP_DROPPABLE` <https://github.com/rust-lang/libc/pull/4173>
- Solaris, Illumos: add `SIGRTMIN` and `SIGRTMAX` <https://github.com/rust-lang/libc/pull/4171>
- Unix, Linux: adding POSIX `memccpy` and `mempcpy` GNU extension <https://github.com/rust-lang/libc/pull/4186.
### Deprecated
- FreeBSD: Deprecate the CAP_UNUSED* and CAP_ALL* constants ([#4183](https://github.com/rust-lang/libc/pull/4183))
### Fixed
- Make the `Debug` implementation for unions opaque ([#4176](https://github.com/rust-lang/libc/pull/4176))
### Other
- Allow the `unpredictable_function_pointer_comparisons` lint where needed <https://github.com/rust-lang/libc/pull/4177>
- CI: Upload artifacts created by libc-test <https://github.com/rust-lang/libc/pull/4180>
- CI: Use workflow commands to group output by target <https://github.com/rust-lang/libc/pull/4179>
- CI: add caching <https://github.com/rust-lang/libc/pull/4183>
## [0.2.167](https://github.com/rust-lang/libc/compare/0.2.166...0.2.167) - 2024-11-28
### Added
- Solarish: add `st_fstype` to `stat` <https://github.com/rust-lang/libc/pull/4145>
- Trusty: Add `intptr_t` and `uintptr_t` ([#4161](https://github.com/rust-lang/libc/pull/4161))
### Fixed
- Fix the build with `rustc-dep-of-std` <https://github.com/rust-lang/libc/pull/4158>
- Wasi: Add back unsafe block for `clockid_t` static variables ([#4157](https://github.com/rust-lang/libc/pull/4157))
### Cleanup
- Create an internal prelude <https://github.com/rust-lang/libc/pull/4161>
- Fix `unused_qualifications`<https://github.com/rust-lang/libc/pull/4132>
### Other
- CI: Check various FreeBSD versions ([#4159](https://github.com/rust-lang/libc/pull/4159))
- CI: add a timeout for all jobs <https://github.com/rust-lang/libc/pull/4164>
- CI: verify MSRV for `wasm32-wasi` <https://github.com/rust-lang/libc/pull/4157>
- Migrate to the 2021 edition <https://github.com/rust-lang/libc/pull/4132>
### Removed
- Remove one unused import after the edition 2021 bump
## [0.2.166](https://github.com/rust-lang/libc/compare/0.2.165...0.2.166) - 2024-11-26
### Fixed
This release resolves two cases of unintentional breakage from the previous release:
- Revert removal of array size hacks [#4150](https://github.com/rust-lang/libc/pull/4150)
- Ensure `const extern` functions are always enabled [#4151](https://github.com/rust-lang/libc/pull/4151)
## [0.2.165](https://github.com/rust-lang/libc/compare/0.2.164...0.2.165) - 2024-11-25
### Added
- Android: add `mkostemp`, `mkostemps` <https://github.com/rust-lang/libc/pull/3601>
- Android: add a few API 30 calls <https://github.com/rust-lang/libc/pull/3604>
- Android: add missing syscall constants <https://github.com/rust-lang/libc/pull/3558>
- Apple: add `in6_ifreq` <https://github.com/rust-lang/libc/pull/3617>
- Apple: add missing `sysctl` net types <https://github.com/rust-lang/libc/pull/4022> (before release: remove `if_family_id` ([#4137](https://github.com/rust-lang/libc/pulls/4137)))
- Freebsd: add `kcmp` call support <https://github.com/rust-lang/libc/pull/3746>
- Hurd: add `MAP_32BIT` and `MAP_EXCL` <https://github.com/rust-lang/libc/pull/4127>
- Hurd: add `domainname` field to `utsname` ([#4089](https://github.com/rust-lang/libc/pulls/4089))
- Linux GNU: add `f_flags` to struct `statfs` for arm, mips, powerpc and x86 <https://github.com/rust-lang/libc/pull/3663>
- Linux GNU: add `malloc_stats` <https://github.com/rust-lang/libc/pull/3596>
- Linux: add ELF relocation-related structs <https://github.com/rust-lang/libc/pull/3583>
- Linux: add `ptp_*` structs <https://github.com/rust-lang/libc/pull/4113>
- Linux: add `ptp_clock_caps` <https://github.com/rust-lang/libc/pull/4128>
- Linux: add `ptp_pin_function` and most `PTP_` constants <https://github.com/rust-lang/libc/pull/4114>
- Linux: add missing AF_XDP structs & constants <https://github.com/rust-lang/libc/pull/3956>
- Linux: add missing netfilter consts ([#3734](https://github.com/rust-lang/libc/pulls/3734))
- Linux: add struct and constants for the `mount_setattr` syscall <https://github.com/rust-lang/libc/pull/4046>
- Linux: add wireless API <https://github.com/rust-lang/libc/pull/3441>
- Linux: expose the `len8_dlc` field of `can_frame` <https://github.com/rust-lang/libc/pull/3357>
- Musl: add `utmpx` API <https://github.com/rust-lang/libc/pull/3213>
- Musl: add missing syscall constants <https://github.com/rust-lang/libc/pull/4028>
- NetBSD: add `mcontext`-related data for RISCV64 <https://github.com/rust-lang/libc/pull/3468>
- Redox: add new `netinet` constants <https://github.com/rust-lang/libc/pull/3586>)
- Solarish: add `_POSIX_VDISABLE` ([#4103](https://github.com/rust-lang/libc/pulls/4103))
- Tests: Add a test that the `const extern fn` macro works <https://github.com/rust-lang/libc/pull/4134>
- Tests: Add test of primitive types against `std` <https://github.com/rust-lang/libc/pull/3616>
- Unix: Add `htonl`, `htons`, `ntohl`, `ntohs` <https://github.com/rust-lang/libc/pull/3669>
- Unix: add `aligned_alloc` <https://github.com/rust-lang/libc/pull/3843>
- Windows: add `aligned_realloc` <https://github.com/rust-lang/libc/pull/3592>
### Fixed
- **breaking** Hurd: fix `MAP_HASSEMAPHORE` name ([#4127](https://github.com/rust-lang/libc/pulls/4127))
- **breaking** ulibc Mips: fix `SA_*` mismatched types ([#3211](https://github.com/rust-lang/libc/pulls/3211))
- Aix: fix an enum FFI safety warning <https://github.com/rust-lang/libc/pull/3644>
- Haiku: fix some typos ([#3664](https://github.com/rust-lang/libc/pulls/3664))
- Tests: fix `Elf{32,64}_Relr`-related tests <https://github.com/rust-lang/libc/pull/3647>
- Tests: fix libc-tests for `loongarch64-linux-musl`
- Tests: fix some clippy warnings <https://github.com/rust-lang/libc/pull/3855>
- Tests: fix tests on `riscv64gc-unknown-freebsd` <https://github.com/rust-lang/libc/pull/4129>
### Deprecated
- Apple: deprecate `iconv_open` <https://github.com/rust-lang/libc/commit/25e022a22eca3634166ef472b748c297e60fcf7f>
- Apple: deprecate `mach_task_self` <https://github.com/rust-lang/libc/pull/4095>
- Apple: update `mach` deprecation notices for things that were removed in `main` <https://github.com/rust-lang/libc/pull/4097>
### Cleanup
- Adjust the `f!` macro to be more flexible <https://github.com/rust-lang/libc/pull/4107>
- Aix: remove duplicate constants <https://github.com/rust-lang/libc/pull/3643>
- CI: make scripts more uniform <https://github.com/rust-lang/libc/pull/4042>
- Drop the `libc_align` conditional <https://github.com/rust-lang/libc/commit/b5b553d0ee7de0d4781432a9a9a0a6445dd7f34f>
- Drop the `libc_cfg_target_vendor` conditional <https://github.com/rust-lang/libc/pull/4060>
- Drop the `libc_const_size_of` conditional <https://github.com/rust-lang/libc/commit/5a43dd2754366f99b3a83881b30246ce0e51833c>
- Drop the `libc_core_cvoid` conditional <https://github.com/rust-lang/libc/pull/4060>
- Drop the `libc_int128` conditional <https://github.com/rust-lang/libc/pull/4060>
- Drop the `libc_non_exhaustive` conditional <https://github.com/rust-lang/libc/pull/4060>
- Drop the `libc_packedN` conditional <https://github.com/rust-lang/libc/pull/4060>
- Drop the `libc_priv_mod_use` conditional <https://github.com/rust-lang/libc/commit/19c59376d11b015009fb9b04f233a30a1bf50a91>
- Drop the `libc_union` conditional <https://github.com/rust-lang/libc/commit/b9e4d8012f612dfe24147da3e69522763f92b6e3>
- Drop the `long_array` conditional <https://github.com/rust-lang/libc/pull/4096>
- Drop the `ptr_addr_of` conditional <https://github.com/rust-lang/libc/pull/4065>
- Drop warnings about deprecated cargo features <https://github.com/rust-lang/libc/pull/4060>
- Eliminate uses of `struct_formatter` <https://github.com/rust-lang/libc/pull/4074>
- Fix a few other array size hacks <https://github.com/rust-lang/libc/commit/d63be8b69b0736753213f5d933767866a5801ee7>
- Glibc: remove redundant definitions ([#3261](https://github.com/rust-lang/libc/pulls/3261))
- Musl: remove redundant definitions ([#3261](https://github.com/rust-lang/libc/pulls/3261))
- Musl: unify definitions of `siginfo_t` ([#3261](https://github.com/rust-lang/libc/pulls/3261))
- Musl: unify definitions of statfs and statfs64 ([#3261](https://github.com/rust-lang/libc/pulls/3261))
- Musl: unify definitions of statvfs and statvfs64 ([#3261](https://github.com/rust-lang/libc/pulls/3261))
- Musl: unify statx definitions ([#3978](https://github.com/rust-lang/libc/pulls/3978))
- Remove array size hacks for Rust < 1.47 <https://github.com/rust-lang/libc/commit/27ee6fe02ca0848b2af3cd747536264e4c7b697d>
- Remove repetitive words <https://github.com/rust-lang/libc/commit/77de375891285e18a81616f7dceda6d52732eed6>
- Use #[derive] for Copy/Clone in s! and friends <https://github.com/rust-lang/libc/pull/4038>
- Use some tricks to format macro bodies <https://github.com/rust-lang/libc/pull/4107>
### Other
- Apply formatting to macro bodies <https://github.com/rust-lang/libc/pull/4107>
- Bump libc-test to Rust 2021 Edition <https://github.com/rust-lang/libc/pull/3905>
- CI: Add a check that semver files don't contain duplicate entries <https://github.com/rust-lang/libc/pull/4087>
- CI: Add `fanotify_event_info_fid` to FAM-exempt types <https://github.com/rust-lang/libc/pull/4038>
- CI: Allow rustfmt to organize imports ([#4136](https://github.com/rust-lang/libc/pulls/4136))
- CI: Always run rustfmt <https://github.com/rust-lang/libc/pull/4120>
- CI: Change 32-bit Docker images to use EOL repos <https://github.com/rust-lang/libc/pull/4120>
- CI: Change 64-bit Docker images to ubuntu:24.10 <https://github.com/rust-lang/libc/pull/4120>
- CI: Disable the check for >1 s! invocation <https://github.com/rust-lang/libc/pull/4107>
- CI: Ensure build channels get run even if FILTER is unset <https://github.com/rust-lang/libc/pull/4125>
- CI: Ensure there is a fallback for no_std <https://github.com/rust-lang/libc/pull/4125>
- CI: Fix cases where unset variables cause errors <https://github.com/rust-lang/libc/pull/4108>
- CI: Naming adjustments and cleanup <https://github.com/rust-lang/libc/pull/4124>
- CI: Only invoke rustup if running in CI <https://github.com/rust-lang/libc/pull/4107>
- CI: Remove the logic to handle old rust versions <https://github.com/rust-lang/libc/pull/4068>
- CI: Set -u (error on unset) in all script files <https://github.com/rust-lang/libc/pull/4108>
- CI: add support for `loongarch64-unknown-linux-musl` <https://github.com/rust-lang/libc/pull/4092>
- CI: make `aarch64-apple-darwin` not a nightly-only target <https://github.com/rust-lang/libc/pull/4068>
- CI: run shellcheck on all scripts <https://github.com/rust-lang/libc/pull/4042>
- CI: update musl headers to Linux 6.6 <https://github.com/rust-lang/libc/pull/3921>
- CI: use qemu-sparc64 to run sparc64 tests <https://github.com/rust-lang/libc/pull/4133>
- Drop the `libc_const_extern_fn` conditional <https://github.com/rust-lang/libc/commit/674cc1f47f605038ef1aa2cce8e8bc9dac128276>
- Drop the `libc_underscore_const_names` conditional <https://github.com/rust-lang/libc/commit/f0febd5e2e50b38e05259d3afad3c9783711bcf0>
- Explicitly set the edition to 2015 <https://github.com/rust-lang/libc/pull/4058>
- Introduce a `git-blame-ignore-revs` file <https://github.com/rust-lang/libc/pull/4107>
- Tests: Ignore fields as required on Ubuntu 24.10 <https://github.com/rust-lang/libc/pull/4120>
- Tests: skip `ATF_*` constants for OpenBSD <https://github.com/rust-lang/libc/pull/4088>
- Triagebot: Add an autolabel for CI <https://github.com/rust-lang/libc/pull/4052>
## [0.2.164](https://github.com/rust-lang/libc/compare/0.2.163...0.2.164) - 2024-11-16
### MSRV
This release increases the MSRV of `libc` to 1.63.
### Other
- CI: remove tests with rust < 1.63 <https://github.com/rust-lang/libc/pull/4051>
- MSRV: document the MSRV of the stable channel to be 1.63 <https://github.com/rust-lang/libc/pull/4040>
- MacOS: move ifconf to s_no_extra_traits <https://github.com/rust-lang/libc/pull/4051>
## [0.2.163](https://github.com/rust-lang/libc/compare/0.2.162...0.2.163) - 2024-11-16
### Added
- Aix: add more `dlopen` flags <https://github.com/rust-lang/libc/pull/4044>
- Android: add group calls <https://github.com/rust-lang/libc/pull/3499>
- FreeBSD: add `TCP_FUNCTION_BLK` and `TCP_FUNCTION_ALIAS` <https://github.com/rust-lang/libc/pull/4047>
- Linux: add `confstr` <https://github.com/rust-lang/libc/pull/3612>
- Solarish: add `aio` <https://github.com/rust-lang/libc/pull/4033>
- Solarish: add `arc4random*` <https://github.com/rust-lang/libc/pull/3944>
### Changed
- Emscripten: upgrade emsdk to 3.1.68 <https://github.com/rust-lang/libc/pull/3962>
- Hurd: use more standard types <https://github.com/rust-lang/libc/pull/3733>
- Hurd: use the standard `ssize_t = isize` <https://github.com/rust-lang/libc/pull/4029>
- Solaris: fix `confstr` and `ucontext_t` <https://github.com/rust-lang/libc/pull/4035>
### Other
- CI: add Solaris <https://github.com/rust-lang/libc/pull/4035>
- CI: add `i686-unknown-freebsd` <https://github.com/rust-lang/libc/pull/3997>
- CI: ensure that calls to `sort` do not depend on locale <https://github.com/rust-lang/libc/pull/4026>
- Specify `rust-version` in `Cargo.toml` <https://github.com/rust-lang/libc/pull/4041>
## [0.2.162](https://github.com/rust-lang/libc/compare/0.2.161...0.2.162) - 2024-11-07
### Added
- Android: fix the alignment of `uc_mcontext` on arm64 <https://github.com/rust-lang/libc/pull/3894>
- Apple: add `host_cpu_load_info` <https://github.com/rust-lang/libc/pull/3916>
- ESP-IDF: add a time flag <https://github.com/rust-lang/libc/pull/3993>
- FreeBSD: add the `CLOSE_RANGE_CLOEXEC` flag<https://github.com/rust-lang/libc/pull/3996>
- FreeBSD: fix test errors regarding `__gregset_t` <https://github.com/rust-lang/libc/pull/3995>
- FreeBSD: fix tests on x86 FreeBSD 15 <https://github.com/rust-lang/libc/pull/3948>
- FreeBSD: make `ucontext_t` and `mcontext_t` available on all architectures <https://github.com/rust-lang/libc/pull/3848>
- Haiku: add `getentropy` <https://github.com/rust-lang/libc/pull/3991>
- Illumos: add `syncfs` <https://github.com/rust-lang/libc/pull/3990>
- Illumos: add some recently-added constants <https://github.com/rust-lang/libc/pull/3999>
- Linux: add `ioctl` flags <https://github.com/rust-lang/libc/pull/3960>
- Linux: add epoll busy polling parameters <https://github.com/rust-lang/libc/pull/3922>
- NuttX: add `pthread_[get/set]name_np` <https://github.com/rust-lang/libc/pull/4003>
- RTEMS: add `arc4random_buf` <https://github.com/rust-lang/libc/pull/3989>
- Trusty OS: add initial support <https://github.com/rust-lang/libc/pull/3942>
- WASIp2: expand socket support <https://github.com/rust-lang/libc/pull/3981>
### Fixed
- Emscripten: don't pass `-lc` <https://github.com/rust-lang/libc/pull/4002>
- Hurd: change `st_fsid` field to `st_dev` <https://github.com/rust-lang/libc/pull/3785>
- Hurd: fix the definition of `utsname` <https://github.com/rust-lang/libc/pull/3992>
- Illumos/Solaris: fix `FNM_CASEFOLD` definition <https://github.com/rust-lang/libc/pull/4004>
- Solaris: fix all tests <https://github.com/rust-lang/libc/pull/3864>
### Other
- CI: Add loongarch64 <https://github.com/rust-lang/libc/pull/4000>
- CI: Check that semver files are sorted <https://github.com/rust-lang/libc/pull/4018>
- CI: Re-enable the FreeBSD 15 job <https://github.com/rust-lang/libc/pull/3988>
- Clean up imports and `extern crate` usage <https://github.com/rust-lang/libc/pull/3897>
- Convert `mode_t` constants to octal <https://github.com/rust-lang/libc/pull/3634>
- Remove the `wasm32-wasi` target that has been deleted upstream <https://github.com/rust-lang/libc/pull/4013>
## [0.2.161](https://github.com/rust-lang/libc/compare/0.2.160...0.2.161) - 2024-10-17 ## [0.2.161](https://github.com/rust-lang/libc/compare/0.2.160...0.2.161) - 2024-10-17
### Fixed ### Fixed

View File

@@ -1,14 +1,45 @@
# Contributing to `libc` # Contributing to `libc`
Welcome! If you are reading this document, it means you are interested in contributing Welcome! If you are reading this document, it means you are interested in
to the `libc` crate. contributing to the `libc` crate.
## v0.2 changes ## v1.0 Roadmap
If you want to add your changes to v0.2, please submit them to the `libc-0.2` branch. `libc` has two active branches: `main` and `libc-0.2`. `main` is for active
If you want to add any breaking changes, it should be submitted to the main branch, development of the upcoming v1.0 release, and should be the target of all pull
which has changes for v0.3. requests. `libc-0.2` is for updates to the currently released version.
We will support and make a new release for v0.2 until we make the first release of v0.3.
If a pull request to `main` is a good candidate for inclusion in an `0.2.x`
release, include `@rustbot label stable-nominated` in a comment to propose this.
Good candidates will usually meet the following:
1. The included changes are non-breaking.
2. The change applies cleanly to both branches.
3. There is a usecase that justifies inclusion in a stable release (all
additions should always have a usecase, hopefully).
Once a `stable-nominated` PR targeting `main` has merged, it can be cherry
picked to the `libc-0.2` branch. A maintainer will likely do these cherry picks
in a batch.
Alternatively, you can start this process yourself by creating a new branch
based on `libc-0.2` and running `git cherry-pick -xe commit-sha-on-main`
(`git
cherry-pick -xe start-sha^..end-sha` if a range of commits is needed).
`git` will automatically add the "cherry picked from commit" note, but try to
add a backport note so the original PR gets crosslinked:
```
# ... original commit message ...
(backport <https://github.com/rust-lang/libc/pull/1234>) # add manually
(cherry picked from commit 104b6a4ae31c726814c36318dc718470cc96e167) # added by git
```
Once the cherry-pick is complete, open a PR targeting `libc-0.2`.
See the [tracking issue](https://github.com/rust-lang/libc/issues/3248) for
details.
## Adding an API ## Adding an API
@@ -16,14 +47,14 @@ Want to use an API which currently isn't bound in `libc`? It's quite easy to add
one! one!
The internal structure of this crate is designed to minimize the number of The internal structure of this crate is designed to minimize the number of
`#[cfg]` attributes in order to easily be able to add new items which apply `#[cfg]` attributes in order to easily be able to add new items which apply to
to all platforms in the future. As a result, the crate is organized all platforms in the future. As a result, the crate is organized hierarchically
hierarchically based on platform. Each module has a number of `#[cfg]`'d based on platform. Each module has a number of `#[cfg]`'d children, but only one
children, but only one is ever actually compiled. Each module then reexports all is ever actually compiled. Each module then reexports all the contents of its
the contents of its children. children.
This means that for each platform that libc supports, the path from a This means that for each platform that libc supports, the path from a leaf
leaf module to the root will contain all bindings for the platform in question. module to the root will contain all bindings for the platform in question.
Consequently, this indicates where an API should be added! Adding an API at a Consequently, this indicates where an API should be added! Adding an API at a
particular level in the hierarchy means that it is supported on all the child particular level in the hierarchy means that it is supported on all the child
platforms of that level. For example, when adding a Unix API it should be added platforms of that level. For example, when adding a Unix API it should be added
@@ -51,50 +82,45 @@ With that in mind, the steps for adding a new API are:
5. Wait for a merge! 5. Wait for a merge!
<sup>1</sup>: Note that this list has nothing to do with any Unix or Posix <sup>1</sup>: Note that this list has nothing to do with any Unix or Posix
standard, it's just a list shared between all OSs that declare `#[cfg(unix)]`. standard, it's just a list shared among all OSs that declare `#[cfg(unix)]`.
## Test before you commit ## Test before you commit
We have two automated tests running on [GitHub Actions](https://github.com/rust-lang/libc/actions): We have two automated tests running on
[GitHub Actions](https://github.com/rust-lang/libc/actions):
1. [`libc-test`](https://github.com/gnzlbg/ctest) 1. [`libc-test`](https://github.com/gnzlbg/ctest)
- `cd libc-test && cargo test` - `cd libc-test && cargo test`
- Use the `skip_*()` functions in `build.rs` if you really need a workaround. - Use the `skip_*()` functions in `build.rs` if you really need a workaround.
2. Style checker 2. Style checker
- [`sh ci/style.sh`](https://github.com/rust-lang/libc/blob/main/ci/style.sh) - [`./ci/style.sh`](https://github.com/rust-lang/libc/blob/main/ci/style.sh)
## Breaking change policy ## Breaking change policy
Sometimes an upstream adds a breaking change to their API e.g. removing outdated items, Sometimes an upstream adds a breaking change to their API e.g. removing outdated
changing the type signature, etc. And we probably should follow that change to build the items, changing the type signature, etc. And we probably should follow that
`libc` crate successfully. It's annoying to do the equivalent of semver-major versioning change to build the `libc` crate successfully. It's annoying to do the
for each such change. Instead, we mark the item as deprecated and do the actual change equivalent of semver-major versioning for each such change. Instead, we mark the
after a certain period. The steps are: item as deprecated and do the actual change after a certain period. The steps
are:
1. Add `#[deprecated(since = "", note="")]` attribute to the item. 1. Add `#[deprecated(since = "", note="")]` attribute to the item.
- The `since` field should have a next version of `libc` - The `since` field should have a next version of `libc` (e.g., if the current
(e.g., if the current version is `0.2.1`, it should be `0.2.2`). version is `0.2.1`, it should be `0.2.2`).
- The `note` field should have a reason to deprecate and a tracking issue to call for comments - The `note` field should have a reason to deprecate and a tracking issue to
(e.g., "We consider removing this as the upstream removed it. call for comments (e.g., "We consider removing this as the upstream removed
If you're using it, please comment on #XXX"). it. If you're using it, please comment on #XXX").
2. If we don't see any concerns for a while, do the change actually. 2. If we don't see any concerns for a while, do the change actually.
## Supported target policy ## Supported target policy
When Rust removes a support for a target, the libc crate also may remove the support anytime. When Rust removes a support for a target, the libc crate also may remove the
support at any time.
## Releasing your change to crates.io ## Releasing your change to crates.io
Now that you've done the amazing job of landing your new API or your new This repository uses [release-plz] to handle releases. Once your pull request
platform in this crate, the next step is to get that sweet, sweet usage from has been merged, a maintainer just needs to verify the generated changelog, then
crates.io! The only next step is to bump the version of libc and then publish merge the bot's release PR. This will automatically publish to crates.io!
it. If you'd like to get a release out ASAP you can follow these steps:
1. Increment the patch version number in `Cargo.toml` and `libc-test/Cargo.toml`. [release-plz]: https://github.com/MarcoIeni/release-plz
1. Send a PR to this repository. It should [look like this][example-pr], but it'd
also be nice to fill out the description with a small rationale for the
release (any rationale is ok though!).
1. Once merged, the release will be tagged and published by one of the libc crate
maintainers.
[example-pr]: https://github.com/rust-lang/libc/pull/2120

16
third_party/rust/libc/Cargo.lock generated vendored Normal file
View File

@@ -0,0 +1,16 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "libc"
version = "0.2.171"
dependencies = [
"rustc-std-workspace-core",
]
[[package]]
name = "rustc-std-workspace-core"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aa9c45b374136f52f2d6311062c7146bff20fec063c3f5d46a410bd937746955"

View File

@@ -10,8 +10,10 @@
# See Cargo.toml.orig for the original contents. # See Cargo.toml.orig for the original contents.
[package] [package]
edition = "2021"
rust-version = "1.63"
name = "libc" name = "libc"
version = "0.2.161" version = "0.2.171"
authors = ["The Rust Project Developers"] authors = ["The Rust Project Developers"]
build = "build.rs" build = "build.rs"
exclude = [ exclude = [
@@ -20,6 +22,7 @@ exclude = [
"/.cirrus.yml", "/.cirrus.yml",
"/triagebot.toml", "/triagebot.toml",
] ]
autolib = false
autobins = false autobins = false
autoexamples = false autoexamples = false
autotests = false autotests = false
@@ -48,10 +51,7 @@ repository = "https://github.com/rust-lang/libc"
[package.metadata.docs.rs] [package.metadata.docs.rs]
cargo-args = ["-Zbuild-std=core"] cargo-args = ["-Zbuild-std=core"]
default-target = "x86_64-unknown-linux-gnu" default-target = "x86_64-unknown-linux-gnu"
features = [ features = ["extra_traits"]
"const-extern-fn",
"extra_traits",
]
targets = [ targets = [
"aarch64-apple-darwin", "aarch64-apple-darwin",
"aarch64-apple-ios", "aarch64-apple-ios",
@@ -80,7 +80,6 @@ targets = [
"armv7-wrs-vxworks-eabihf", "armv7-wrs-vxworks-eabihf",
"armv7r-none-eabi", "armv7r-none-eabi",
"armv7r-none-eabihf", "armv7r-none-eabihf",
"i586-pc-windows-msvc",
"i586-unknown-linux-gnu", "i586-unknown-linux-gnu",
"i586-unknown-linux-musl", "i586-unknown-linux-musl",
"i686-linux-android", "i686-linux-android",
@@ -139,7 +138,6 @@ targets = [
"thumbv7neon-unknown-linux-gnueabihf", "thumbv7neon-unknown-linux-gnueabihf",
"wasm32-unknown-emscripten", "wasm32-unknown-emscripten",
"wasm32-unknown-unknown", "wasm32-unknown-unknown",
"wasm32-wasi",
"x86_64-apple-darwin", "x86_64-apple-darwin",
"x86_64-apple-ios", "x86_64-apple-ios",
"x86_64-fortanix-unknown-sgx", "x86_64-fortanix-unknown-sgx",
@@ -163,18 +161,6 @@ targets = [
"x86_64-wrs-vxworks", "x86_64-wrs-vxworks",
] ]
[lib]
name = "libc"
path = "src/lib.rs"
[[test]]
name = "const_fn"
path = "tests/const_fn.rs"
[dependencies.rustc-std-workspace-core]
version = "1.0.0"
optional = true
[features] [features]
align = [] align = []
const-extern-fn = [] const-extern-fn = []
@@ -186,3 +172,15 @@ rustc-dep-of-std = [
] ]
std = [] std = []
use_std = ["std"] use_std = ["std"]
[lib]
name = "libc"
path = "src/lib.rs"
[[test]]
name = "const_fn"
path = "tests/const_fn.rs"
[dependencies.rustc-std-workspace-core]
version = "1.0.0"
optional = true

View File

@@ -11,8 +11,8 @@ This crate exports all underlying platform types, functions, and constants under
the crate root, so all items are accessible as `libc::foo`. The types and values the crate root, so all items are accessible as `libc::foo`. The types and values
of all the exported APIs match the platform that libc is compiled for. of all the exported APIs match the platform that libc is compiled for.
Windows API bindings are not included in this crate. If you are looking for WinAPI Windows API bindings are not included in this crate. If you are looking for
bindings, consider using crates like [windows-sys]. WinAPI bindings, consider using crates like [windows-sys].
More detailed information about the design of this library can be found in its More detailed information about the design of this library can be found in its
[associated RFC][rfc]. [associated RFC][rfc].
@@ -20,14 +20,17 @@ More detailed information about the design of this library can be found in its
[rfc]: https://github.com/rust-lang/rfcs/blob/HEAD/text/1291-promote-libc.md [rfc]: https://github.com/rust-lang/rfcs/blob/HEAD/text/1291-promote-libc.md
[windows-sys]: https://docs.rs/windows-sys [windows-sys]: https://docs.rs/windows-sys
## v0.3 Roadmap ## v1.0 Roadmap
The main branch is now for v0.3 which has some breaking changes. Currently, `libc` has two active branches: `main` for the upcoming v1.0 release,
and `libc-0.2` for the currently published version. By default all pull requests
should target `main`; once reviewed, they can be cherry picked to the `libc-0.2`
branch if needed.
For v0.2, please submit PRs to the `libc-0.2` branch instead. We will stop making new v0.2 releases once v1.0 is released.
We will stop making new v0.2 releases once we release v0.3 on crates.io.
See the [tracking issue](https://github.com/rust-lang/libc/issues/3248) for details. See the section in [CONTRIBUTING.md](CONTRIBUTING.md#v10-roadmap) for more
details.
## Usage ## Usage
@@ -40,46 +43,38 @@ libc = "0.2"
## Features ## Features
* `std`: by default `libc` links to the standard library. Disable this * `std`: by default `libc` links to the standard library. Disable this feature
feature to remove this dependency and be able to use `libc` in `#![no_std]` to remove this dependency and be able to use `libc` in `#![no_std]` crates.
crates.
* `extra_traits`: all `struct`s implemented in `libc` are `Copy` and `Clone`. * `extra_traits`: all `struct`s implemented in `libc` are `Copy` and `Clone`.
This feature derives `Debug`, `Eq`, `Hash`, and `PartialEq`. This feature derives `Debug`, `Eq`, `Hash`, and `PartialEq`.
* `const-extern-fn`: Changes some `extern fn`s into `const extern fn`s. The following features are deprecated:
If you use Rust >= 1.62, this feature is implicitly enabled.
Otherwise it requires a nightly rustc.
* **deprecated**: `use_std` is deprecated, and is equivalent to `std`. * `use_std`: this is equivalent to `std`
* `const-extern-fn`: this is now enabled by default
* `align`: this is now enabled by default
## Rust version support ## Rust version support
The minimum supported Rust toolchain version is currently **Rust 1.13.0**. The minimum supported Rust toolchain version is currently **Rust 1.63**.
(libc does not currently have any policy regarding changes to the minimum
supported Rust version; such policy is a work in progress.) APIs requiring
newer Rust features are only available on newer Rust toolchains:
| Feature | Version | Increases to the MSRV are allowed to change without a major (i.e. semver-
|----------------------|---------| breaking) release in order to avoid a ripple effect in the ecosystem. A policy
| `union` | 1.19.0 | for when this may change is a work in progress.
| `const mem::size_of` | 1.24.0 |
| `repr(align)` | 1.25.0 | `libc` may continue to compile with Rust versions older than the current MSRV
| `extra_traits` | 1.25.0 | but this is not guaranteed.
| `core::ffi::c_void` | 1.30.0 |
| `repr(packed(N))` | 1.33.0 |
| `cfg(target_vendor)` | 1.33.0 |
| `const-extern-fn` | 1.62.0 |
## Platform support ## Platform support
You can see the platform(target)-specific docs on [docs.rs], select a platform you want to see. You can see the platform(target)-specific docs on [docs.rs], select a platform
you want to see.
See See [`ci/verify-build.sh`](https://github.com/rust-lang/libc/blob/HEAD/ci/verify-build.sh) for
[`ci/build.sh`](https://github.com/rust-lang/libc/blob/HEAD/ci/build.sh) the platforms on which `libc` is guaranteed to build for each Rust toolchain.
for the platforms on which `libc` is guaranteed to build for each Rust The test-matrix at [GitHub Actions] and [Cirrus CI] show the platforms in which
toolchain. The test-matrix at [GitHub Actions] and [Cirrus CI] show the `libc` tests are run.
platforms in which `libc` tests are run.
<div class="platform_docs"></div> <div class="platform_docs"></div>
@@ -97,13 +92,13 @@ at your option.
## Contributing ## Contributing
We welcome all people who want to contribute. Please see the [contributing We welcome all people who want to contribute. Please see the
instructions] for more information. [contributing instructions] for more information.
[contributing instructions]: https://github.com/rust-lang/libc/blob/HEAD/CONTRIBUTING.md [contributing instructions]: https://github.com/rust-lang/libc/blob/HEAD/CONTRIBUTING.md
Contributions in any form (issues, pull requests, etc.) to this project Contributions in any form (issues, pull requests, etc.) to this project must
must adhere to Rust's [Code of Conduct]. adhere to Rust's [Code of Conduct].
[Code of Conduct]: https://www.rust-lang.org/policies/code-of-conduct [Code of Conduct]: https://www.rust-lang.org/policies/code-of-conduct

View File

@@ -1,36 +1,25 @@
use std::env;
use std::process::{Command, Output}; use std::process::{Command, Output};
use std::str; use std::{env, str};
// List of cfgs this build script is allowed to set. The list is needed to support check-cfg, as we // List of cfgs this build script is allowed to set. The list is needed to support check-cfg, as we
// need to know all the possible cfgs that this script will set. If you need to set another cfg // need to know all the possible cfgs that this script will set. If you need to set another cfg
// make sure to add it to this list as well. // make sure to add it to this list as well.
const ALLOWED_CFGS: &'static [&'static str] = &[ const ALLOWED_CFGS: &'static [&'static str] = &[
"emscripten_new_stat_abi", "emscripten_old_stat_abi",
"espidf_time64", "espidf_time32",
"freebsd10", "freebsd10",
"freebsd11", "freebsd11",
"freebsd12", "freebsd12",
"freebsd13", "freebsd13",
"freebsd14", "freebsd14",
"freebsd15", "freebsd15",
"libc_align", // FIXME(ctest): this config shouldn't be needed but ctest can't parse `const extern fn`
"libc_cfg_target_vendor",
"libc_const_extern_fn", "libc_const_extern_fn",
"libc_const_extern_fn_unstable",
"libc_const_size_of",
"libc_core_cvoid",
"libc_deny_warnings", "libc_deny_warnings",
"libc_int128",
"libc_long_array",
"libc_non_exhaustive",
"libc_packedN",
"libc_priv_mod_use",
"libc_ptr_addr_of",
"libc_thread_local", "libc_thread_local",
"libc_underscore_const_names",
"libc_union",
"libc_ctest", "libc_ctest",
// Corresponds to `__USE_TIME_BITS64` in UAPI
"linux_time_bits64",
]; ];
// Extra values to allow for check-cfg. // Extra values to allow for check-cfg.
@@ -38,7 +27,7 @@ const CHECK_CFG_EXTRA: &'static [(&'static str, &'static [&'static str])] = &[
( (
"target_os", "target_os",
&[ &[
"switch", "aix", "ohos", "hurd", "rtems", "visionos", "nuttx", "switch", "aix", "ohos", "hurd", "rtems", "visionos", "nuttx", "cygwin",
], ],
), ),
("target_env", &["illumos", "wasi", "aix", "ohos"]), ("target_env", &["illumos", "wasi", "aix", "ohos"]),
@@ -52,32 +41,29 @@ fn main() {
// Avoid unnecessary re-building. // Avoid unnecessary re-building.
println!("cargo:rerun-if-changed=build.rs"); println!("cargo:rerun-if-changed=build.rs");
let (rustc_minor_ver, is_nightly) = rustc_minor_nightly(); let (rustc_minor_ver, _is_nightly) = rustc_minor_nightly();
let rustc_dep_of_std = env::var("CARGO_FEATURE_RUSTC_DEP_OF_STD").is_ok(); let rustc_dep_of_std = env::var("CARGO_FEATURE_RUSTC_DEP_OF_STD").is_ok();
let align_cargo_feature = env::var("CARGO_FEATURE_ALIGN").is_ok();
let const_extern_fn_cargo_feature = env::var("CARGO_FEATURE_CONST_EXTERN_FN").is_ok();
let libc_ci = env::var("LIBC_CI").is_ok(); let libc_ci = env::var("LIBC_CI").is_ok();
let libc_check_cfg = env::var("LIBC_CHECK_CFG").is_ok() || rustc_minor_ver >= 80;
if env::var("CARGO_FEATURE_USE_STD").is_ok() {
println!(
"cargo:warning=\"libc's use_std cargo feature is deprecated since libc 0.2.55; \
please consider using the `std` cargo feature instead\""
);
}
// The ABI of libc used by std is backward compatible with FreeBSD 12. // The ABI of libc used by std is backward compatible with FreeBSD 12.
// The ABI of libc from crates.io is backward compatible with FreeBSD 11. // The ABI of libc from crates.io is backward compatible with FreeBSD 11.
// //
// On CI, we detect the actual FreeBSD version and match its ABI exactly, // On CI, we detect the actual FreeBSD version and match its ABI exactly,
// running tests to ensure that the ABI is correct. // running tests to ensure that the ABI is correct.
let which_freebsd = if libc_ci { println!("cargo:rerun-if-env-changed=RUST_LIBC_UNSTABLE_FREEBSD_VERSION");
// Allow overriding the default version for testing
let which_freebsd = if let Ok(version) = env::var("RUST_LIBC_UNSTABLE_FREEBSD_VERSION") {
let vers = version.parse().unwrap();
println!("cargo:warning=setting FreeBSD version to {vers}");
vers
} else if libc_ci {
which_freebsd().unwrap_or(11) which_freebsd().unwrap_or(11)
} else if rustc_dep_of_std { } else if rustc_dep_of_std {
12 12
} else { } else {
11 11
}; };
match which_freebsd { match which_freebsd {
x if x < 10 => panic!("FreeBSD older than 10 is not supported"), x if x < 10 => panic!("FreeBSD older than 10 is not supported"),
10 => set_cfg("freebsd10"), 10 => set_cfg("freebsd10"),
@@ -89,9 +75,15 @@ fn main() {
} }
match emcc_version_code() { match emcc_version_code() {
Some(v) if (v >= 30142) => set_cfg("emscripten_new_stat_abi"), Some(v) if (v < 30142) => set_cfg("emscripten_old_stat_abi"),
// Non-Emscripten or version < 3.1.42. // Non-Emscripten or version >= 3.1.42.
Some(_) | None => (), _ => (),
}
let linux_time_bits64 = env::var("RUST_LIBC_UNSTABLE_LINUX_TIME_BITS64").is_ok();
println!("cargo:rerun-if-env-changed=RUST_LIBC_UNSTABLE_LINUX_TIME_BITS64");
if linux_time_bits64 {
set_cfg("linux_time_bits64");
} }
// On CI: deny all warnings // On CI: deny all warnings
@@ -99,88 +91,17 @@ fn main() {
set_cfg("libc_deny_warnings"); set_cfg("libc_deny_warnings");
} }
// Rust >= 1.15 supports private module use:
if rustc_minor_ver >= 15 || rustc_dep_of_std {
set_cfg("libc_priv_mod_use");
}
// Rust >= 1.19 supports unions:
if rustc_minor_ver >= 19 || rustc_dep_of_std {
set_cfg("libc_union");
}
// Rust >= 1.24 supports const mem::size_of:
if rustc_minor_ver >= 24 || rustc_dep_of_std {
set_cfg("libc_const_size_of");
}
// Rust >= 1.25 supports repr(align):
if rustc_minor_ver >= 25 || rustc_dep_of_std || align_cargo_feature {
set_cfg("libc_align");
}
// Rust >= 1.26 supports i128 and u128:
if rustc_minor_ver >= 26 || rustc_dep_of_std {
set_cfg("libc_int128");
}
// Rust >= 1.30 supports `core::ffi::c_void`, so libc can just re-export it.
// Otherwise, it defines an incompatible type to retaining
// backwards-compatibility.
if rustc_minor_ver >= 30 || rustc_dep_of_std {
set_cfg("libc_core_cvoid");
}
// Rust >= 1.33 supports repr(packed(N)) and cfg(target_vendor).
if rustc_minor_ver >= 33 || rustc_dep_of_std {
set_cfg("libc_packedN");
set_cfg("libc_cfg_target_vendor");
}
// Rust >= 1.40 supports #[non_exhaustive].
if rustc_minor_ver >= 40 || rustc_dep_of_std {
set_cfg("libc_non_exhaustive");
}
// Rust >= 1.47 supports long array:
if rustc_minor_ver >= 47 || rustc_dep_of_std {
set_cfg("libc_long_array");
}
if rustc_minor_ver >= 51 || rustc_dep_of_std {
set_cfg("libc_ptr_addr_of");
}
// Rust >= 1.37.0 allows underscores as anonymous constant names.
if rustc_minor_ver >= 37 || rustc_dep_of_std {
set_cfg("libc_underscore_const_names");
}
// #[thread_local] is currently unstable // #[thread_local] is currently unstable
if rustc_dep_of_std { if rustc_dep_of_std {
set_cfg("libc_thread_local"); set_cfg("libc_thread_local");
} }
// Rust >= 1.62.0 allows to use `const_extern_fn` for "Rust" and "C". // Set unconditionally when ctest is not being invoked.
if rustc_minor_ver >= 62 { set_cfg("libc_const_extern_fn");
set_cfg("libc_const_extern_fn");
} else {
// Rust < 1.62.0 requires a crate feature and feature gate.
if const_extern_fn_cargo_feature {
if !is_nightly || rustc_minor_ver < 40 {
panic!("const-extern-fn requires a nightly compiler >= 1.40");
}
set_cfg("libc_const_extern_fn_unstable");
set_cfg("libc_const_extern_fn");
}
}
// check-cfg is a nightly cargo/rustc feature to warn when unknown cfgs are used across the // Since Rust 1.80, configuration that isn't recognized by default needs to be provided to
// codebase. libc can configure it if the appropriate environment variable is passed. Since // avoid warnings.
// rust-lang/rust enforces it, this is useful when using a custom libc fork there. if rustc_minor_ver >= 80 {
//
// https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#check-cfg
if libc_check_cfg {
for cfg in ALLOWED_CFGS { for cfg in ALLOWED_CFGS {
if rustc_minor_ver >= 75 { if rustc_minor_ver >= 75 {
println!("cargo:rustc-check-cfg=cfg({})", cfg); println!("cargo:rustc-check-cfg=cfg({})", cfg);
@@ -220,7 +141,7 @@ fn rustc_version_cmd(is_clippy_driver: bool) -> Output {
cmd.arg("--version"); cmd.arg("--version");
let output = cmd.output().ok().expect("Failed to get rustc version"); let output = cmd.output().expect("Failed to get rustc version");
if !output.status.success() { if !output.status.success() {
panic!( panic!(
@@ -275,20 +196,12 @@ fn rustc_minor_nightly() -> (u32, bool) {
} }
fn which_freebsd() -> Option<i32> { fn which_freebsd() -> Option<i32> {
let output = std::process::Command::new("freebsd-version").output().ok(); let output = Command::new("freebsd-version").output().ok()?;
if output.is_none() {
return None;
}
let output = output.unwrap();
if !output.status.success() { if !output.status.success() {
return None; return None;
} }
let stdout = String::from_utf8(output.stdout).ok(); let stdout = String::from_utf8(output.stdout).ok()?;
if stdout.is_none() {
return None;
}
let stdout = stdout.unwrap();
match &stdout { match &stdout {
s if s.starts_with("10") => Some(10), s if s.starts_with("10") => Some(10),
@@ -302,27 +215,16 @@ fn which_freebsd() -> Option<i32> {
} }
fn emcc_version_code() -> Option<u64> { fn emcc_version_code() -> Option<u64> {
let output = std::process::Command::new("emcc") let output = Command::new("emcc").arg("-dumpversion").output().ok()?;
.arg("-dumpversion")
.output()
.ok();
if output.is_none() {
return None;
}
let output = output.unwrap();
if !output.status.success() { if !output.status.success() {
return None; return None;
} }
let stdout = String::from_utf8(output.stdout).ok(); let version = String::from_utf8(output.stdout).ok()?;
if stdout.is_none() {
return None;
}
let version = stdout.unwrap();
// Some Emscripten versions come with `-git` attached, so split the // Some Emscripten versions come with `-git` attached, so split the
// version string also on the `-` char. // version string also on the `-` char.
let mut pieces = version.trim().split(|c| c == '.' || c == '-'); let mut pieces = version.trim().split(['.', '-']);
let major = pieces.next().and_then(|x| x.parse().ok()).unwrap_or(0); let major = pieces.next().and_then(|x| x.parse().ok()).unwrap_or(0);
let minor = pieces.next().and_then(|x| x.parse().ok()).unwrap_or(0); let minor = pieces.next().and_then(|x| x.parse().ok()).unwrap_or(0);

View File

@@ -1 +1,4 @@
edition = "2021"
error_on_line_overflow = true error_on_line_overflow = true
group_imports = "StdExternalCrate"
imports_granularity = "Module"

View File

@@ -1,99 +0,0 @@
//! This module contains type aliases for C's fixed-width integer types .
//!
//! These aliases are deprecated: use the Rust types instead.
#[deprecated(since = "0.2.55", note = "Use i8 instead.")]
pub type int8_t = i8;
#[deprecated(since = "0.2.55", note = "Use i16 instead.")]
pub type int16_t = i16;
#[deprecated(since = "0.2.55", note = "Use i32 instead.")]
pub type int32_t = i32;
#[deprecated(since = "0.2.55", note = "Use i64 instead.")]
pub type int64_t = i64;
#[deprecated(since = "0.2.55", note = "Use u8 instead.")]
pub type uint8_t = u8;
#[deprecated(since = "0.2.55", note = "Use u16 instead.")]
pub type uint16_t = u16;
#[deprecated(since = "0.2.55", note = "Use u32 instead.")]
pub type uint32_t = u32;
#[deprecated(since = "0.2.55", note = "Use u64 instead.")]
pub type uint64_t = u64;
cfg_if! {
if #[cfg(all(libc_int128, target_arch = "aarch64", not(target_os = "windows")))] {
// This introduces partial support for FFI with __int128 and
// equivalent types on platforms where Rust's definition is validated
// to match the standard C ABI of that platform.
//
// Rust does not guarantee u128/i128 are sound for FFI, and its
// definitions are in fact known to be incompatible. [0]
//
// However these problems aren't fundamental, and are just platform
// inconsistencies. Specifically at the time of this writing:
//
// * For x64 SysV ABIs (everything but Windows), the types are underaligned.
// * For all Windows ABIs, Microsoft doesn't actually officially define __int128,
// and as a result different implementations don't actually agree on its ABI.
//
// But on the other major aarch64 platforms (android, linux, ios, macos) we have
// validated that rustc has the right ABI for these types. This is important because
// aarch64 uses these types in some fundamental OS types like user_fpsimd_struct,
// which represents saved simd registers.
//
// Any API which uses these types will need to `#[ignore(improper_ctypes)]`
// until the upstream rust issue is resolved, but this at least lets us make
// progress on platforms where this type is important.
//
// The list of supported architectures and OSes is intentionally very restricted,
// as careful work needs to be done to verify that a particular platform
// has a conformant ABI.
//
// [0]: https://github.com/rust-lang/rust/issues/54341
/// C `__int128` (a GCC extension that's part of many ABIs)
pub type __int128 = i128;
/// C `unsigned __int128` (a GCC extension that's part of many ABIs)
pub type __uint128 = u128;
/// C __int128_t (alternate name for [__int128][])
pub type __int128_t = i128;
/// C __uint128_t (alternate name for [__uint128][])
pub type __uint128_t = u128;
cfg_if! {
if #[cfg(libc_underscore_const_names)] {
macro_rules! static_assert_eq {
($a:expr, $b:expr) => {
const _: [(); $a] = [(); $b];
};
}
// NOTE: if you add more platforms to here, you may need to cfg
// these consts. They should always match the platform's values
// for `sizeof(__int128)` and `_Alignof(__int128)`.
const _SIZE_128: usize = 16;
const _ALIGN_128: usize = 16;
// Since Rust doesn't officially guarantee that these types
// have compatible ABIs, we const assert that these values have the
// known size/align of the target platform's libc. If rustc ever
// tries to regress things, it will cause a compilation error.
//
// This isn't a bullet-proof solution because e.g. it doesn't
// catch the fact that llvm and gcc disagree on how x64 __int128
// is actually *passed* on the stack (clang underaligns it for
// the same reason that rustc *never* properly aligns it).
static_assert_eq!(core::mem::size_of::<__int128>(), _SIZE_128);
static_assert_eq!(core::mem::align_of::<__int128>(), _ALIGN_128);
static_assert_eq!(core::mem::size_of::<__uint128>(), _SIZE_128);
static_assert_eq!(core::mem::align_of::<__uint128>(), _ALIGN_128);
static_assert_eq!(core::mem::size_of::<__int128_t>(), _SIZE_128);
static_assert_eq!(core::mem::align_of::<__int128_t>(), _ALIGN_128);
static_assert_eq!(core::mem::size_of::<__uint128_t>(), _SIZE_128);
static_assert_eq!(core::mem::align_of::<__uint128_t>(), _ALIGN_128);
}
}
}
}

View File

@@ -1,67 +1,69 @@
pub type c_char = u8; use crate::off_t;
pub type __u64 = ::c_ulonglong; use crate::prelude::*;
pub type __u64 = c_ulonglong;
pub type wchar_t = u32; pub type wchar_t = u32;
pub type nlink_t = ::c_ulong; pub type nlink_t = c_ulong;
pub type blksize_t = ::c_long; pub type blksize_t = c_long;
s! { s! {
pub struct stat { pub struct stat {
pub st_dev: ::dev_t, pub st_dev: crate::dev_t,
pub st_ino: ::ino_t, pub st_ino: crate::ino_t,
pub st_mode: ::mode_t, pub st_mode: crate::mode_t,
pub st_nlink: ::nlink_t, pub st_nlink: crate::nlink_t,
pub st_uid: ::uid_t, pub st_uid: crate::uid_t,
pub st_gid: ::gid_t, pub st_gid: crate::gid_t,
pub st_rdev: ::dev_t, pub st_rdev: crate::dev_t,
__pad0: ::c_ulong, __pad0: c_ulong,
pub st_size: ::off_t, pub st_size: off_t,
pub st_blksize: ::blksize_t, pub st_blksize: crate::blksize_t,
__pad1: ::c_int, __pad1: c_int,
pub st_blocks: ::blkcnt_t, pub st_blocks: crate::blkcnt_t,
pub st_atime: ::time_t, pub st_atime: crate::time_t,
pub st_atime_nsec: ::c_long, pub st_atime_nsec: c_long,
pub st_mtime: ::time_t, pub st_mtime: crate::time_t,
pub st_mtime_nsec: ::c_long, pub st_mtime_nsec: c_long,
pub st_ctime: ::time_t, pub st_ctime: crate::time_t,
pub st_ctime_nsec: ::c_long, pub st_ctime_nsec: c_long,
__unused: [::c_uint; 2], __unused: [c_uint; 2],
} }
pub struct stat64 { pub struct stat64 {
pub st_dev: ::dev_t, pub st_dev: crate::dev_t,
pub st_ino: ::ino_t, pub st_ino: crate::ino_t,
pub st_mode: ::mode_t, pub st_mode: crate::mode_t,
pub st_nlink: ::nlink_t, pub st_nlink: crate::nlink_t,
pub st_uid: ::uid_t, pub st_uid: crate::uid_t,
pub st_gid: ::gid_t, pub st_gid: crate::gid_t,
pub st_rdev: ::dev_t, pub st_rdev: crate::dev_t,
__pad0: ::c_ulong, __pad0: c_ulong,
pub st_size: ::off_t, pub st_size: off_t,
pub st_blksize: ::blksize_t, pub st_blksize: crate::blksize_t,
__pad1: ::c_int, __pad1: c_int,
pub st_blocks: ::blkcnt_t, pub st_blocks: crate::blkcnt_t,
pub st_atime: ::time_t, pub st_atime: crate::time_t,
pub st_atime_nsec: ::c_long, pub st_atime_nsec: c_long,
pub st_mtime: ::time_t, pub st_mtime: crate::time_t,
pub st_mtime_nsec: ::c_long, pub st_mtime_nsec: c_long,
pub st_ctime: ::time_t, pub st_ctime: crate::time_t,
pub st_ctime_nsec: ::c_long, pub st_ctime_nsec: c_long,
__unused: [::c_uint; 2], __unused: [c_uint; 2],
} }
pub struct ipc_perm { pub struct ipc_perm {
pub __ipc_perm_key: ::key_t, pub __ipc_perm_key: crate::key_t,
pub uid: ::uid_t, pub uid: crate::uid_t,
pub gid: ::gid_t, pub gid: crate::gid_t,
pub cuid: ::uid_t, pub cuid: crate::uid_t,
pub cgid: ::gid_t, pub cgid: crate::gid_t,
pub mode: ::mode_t, pub mode: crate::mode_t,
pub __seq: ::c_ushort, pub __seq: c_ushort,
__unused1: ::c_ulong, __unused1: c_ulong,
__unused2: ::c_ulong, __unused2: c_ulong,
} }
} }
// From https://cs.opensource.google/fuchsia/fuchsia/+/main:zircon/third_party/ulib/musl/include/bits/signal.h;l=20-21;drc=0827b18ab9540c46f8037f407d17ea15a79e9ba7 // From https://cs.opensource.google/fuchsia/fuchsia/+/main:zircon/third_party/ulib/musl/include/bits/signal.h;l=20-21;drc=0827b18ab9540c46f8037f407d17ea15a79e9ba7
pub const MINSIGSTKSZ: ::size_t = 6144; pub const MINSIGSTKSZ: size_t = 6144;
pub const SIGSTKSZ: ::size_t = 12288; pub const SIGSTKSZ: size_t = 12288;

View File

@@ -1,142 +0,0 @@
macro_rules! expand_align {
() => {
s! {
#[cfg_attr(
any(
target_pointer_width = "32",
target_arch = "x86_64"
),
repr(align(4)))]
#[cfg_attr(
not(any(
target_pointer_width = "32",
target_arch = "x86_64"
)),
repr(align(8)))]
pub struct pthread_mutexattr_t {
size: [u8; ::__SIZEOF_PTHREAD_MUTEXATTR_T],
}
#[cfg_attr(target_pointer_width = "32",
repr(align(4)))]
#[cfg_attr(target_pointer_width = "64",
repr(align(8)))]
pub struct pthread_rwlockattr_t {
size: [u8; ::__SIZEOF_PTHREAD_RWLOCKATTR_T],
}
#[repr(align(4))]
pub struct pthread_condattr_t {
size: [u8; ::__SIZEOF_PTHREAD_CONDATTR_T],
}
}
s_no_extra_traits! {
#[cfg_attr(all(target_pointer_width = "32",
any(target_arch = "arm",
target_arch = "x86_64")),
repr(align(4)))]
#[cfg_attr(any(target_pointer_width = "64",
not(any(target_arch = "arm",
target_arch = "x86_64"))),
repr(align(8)))]
pub struct pthread_mutex_t {
size: [u8; ::__SIZEOF_PTHREAD_MUTEX_T],
}
#[cfg_attr(all(target_pointer_width = "32",
any(target_arch = "arm",
target_arch = "x86_64")),
repr(align(4)))]
#[cfg_attr(any(target_pointer_width = "64",
not(any(target_arch = "arm",
target_arch = "x86_64"))),
repr(align(8)))]
pub struct pthread_rwlock_t {
size: [u8; ::__SIZEOF_PTHREAD_RWLOCK_T],
}
#[cfg_attr(target_pointer_width = "32",
repr(align(4)))]
#[cfg_attr(target_pointer_width = "64",
repr(align(8)))]
#[cfg_attr(target_arch = "x86",
repr(align(4)))]
#[cfg_attr(not(target_arch = "x86"),
repr(align(8)))]
pub struct pthread_cond_t {
size: [u8; ::__SIZEOF_PTHREAD_COND_T],
}
}
cfg_if! {
if #[cfg(feature = "extra_traits")] {
impl PartialEq for pthread_cond_t {
fn eq(&self, other: &pthread_cond_t) -> bool {
self.size
.iter()
.zip(other.size.iter())
.all(|(a,b)| a == b)
}
}
impl Eq for pthread_cond_t {}
impl ::fmt::Debug for pthread_cond_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
f.debug_struct("pthread_cond_t")
// FIXME: .field("size", &self.size)
.finish()
}
}
impl ::hash::Hash for pthread_cond_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
self.size.hash(state);
}
}
impl PartialEq for pthread_mutex_t {
fn eq(&self, other: &pthread_mutex_t) -> bool {
self.size
.iter()
.zip(other.size.iter())
.all(|(a,b)| a == b)
}
}
impl Eq for pthread_mutex_t {}
impl ::fmt::Debug for pthread_mutex_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
f.debug_struct("pthread_mutex_t")
// FIXME: .field("size", &self.size)
.finish()
}
}
impl ::hash::Hash for pthread_mutex_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
self.size.hash(state);
}
}
impl PartialEq for pthread_rwlock_t {
fn eq(&self, other: &pthread_rwlock_t) -> bool {
self.size
.iter()
.zip(other.size.iter())
.all(|(a,b)| a == b)
}
}
impl Eq for pthread_rwlock_t {}
impl ::fmt::Debug for pthread_rwlock_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
f.debug_struct("pthread_rwlock_t")
// FIXME: .field("size", &self.size)
.finish()
}
}
impl ::hash::Hash for pthread_rwlock_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
self.size.hash(state);
}
}
}
}
};
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,129 +0,0 @@
macro_rules! expand_align {
() => {
s! {
pub struct pthread_mutexattr_t {
#[cfg(target_arch = "x86_64")]
__align: [::c_int; 0],
#[cfg(not(target_arch = "x86_64"))]
__align: [::c_long; 0],
size: [u8; ::__SIZEOF_PTHREAD_MUTEXATTR_T],
}
pub struct pthread_rwlockattr_t {
__align: [::c_long; 0],
size: [u8; ::__SIZEOF_PTHREAD_RWLOCKATTR_T],
}
pub struct pthread_condattr_t {
__align: [::c_int; 0],
size: [u8; ::__SIZEOF_PTHREAD_CONDATTR_T],
}
}
s_no_extra_traits! {
pub struct pthread_mutex_t {
#[cfg(any(target_arch = "arm",
all(target_arch = "x86_64",
target_pointer_width = "32")))]
__align: [::c_long; 0],
#[cfg(not(any(target_arch = "arm",
all(target_arch = "x86_64",
target_pointer_width = "32"))))]
__align: [::c_longlong; 0],
size: [u8; ::__SIZEOF_PTHREAD_MUTEX_T],
}
pub struct pthread_rwlock_t {
__align: [::c_long; 0],
__align: [::c_longlong; 0],
size: [u8; ::__SIZEOF_PTHREAD_RWLOCK_T],
}
pub struct pthread_cond_t {
__align: [*const ::c_void; 0],
#[cfg(not(target_env = "musl"))]
__align: [::c_longlong; 0],
size: [u8; ::__SIZEOF_PTHREAD_COND_T],
}
}
cfg_if! {
if #[cfg(feature = "extra_traits")] {
impl PartialEq for pthread_cond_t {
fn eq(&self, other: &pthread_cond_t) -> bool {
// Ignore __align field
self.size
.iter()
.zip(other.size.iter())
.all(|(a,b)| a == b)
}
}
impl Eq for pthread_cond_t {}
impl ::fmt::Debug for pthread_cond_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
f.debug_struct("pthread_cond_t")
// Ignore __align field
// FIXME: .field("size", &self.size)
.finish()
}
}
impl ::hash::Hash for pthread_cond_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
// Ignore __align field
self.size.hash(state);
}
}
impl PartialEq for pthread_mutex_t {
fn eq(&self, other: &pthread_mutex_t) -> bool {
// Ignore __align field
self.size
.iter()
.zip(other.size.iter())
.all(|(a,b)| a == b)
}
}
impl Eq for pthread_mutex_t {}
impl ::fmt::Debug for pthread_mutex_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
f.debug_struct("pthread_mutex_t")
// Ignore __align field
// FIXME: .field("size", &self.size)
.finish()
}
}
impl ::hash::Hash for pthread_mutex_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
// Ignore __align field
self.size.hash(state);
}
}
impl PartialEq for pthread_rwlock_t {
fn eq(&self, other: &pthread_rwlock_t) -> bool {
// Ignore __align field
self.size
.iter()
.zip(other.size.iter())
.all(|(a,b)| a == b)
}
}
impl Eq for pthread_rwlock_t {}
impl ::fmt::Debug for pthread_rwlock_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
f.debug_struct("pthread_rwlock_t")
// Ignore __align field
// FIXME: .field("size", &self.size)
.finish()
}
}
impl ::hash::Hash for pthread_rwlock_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
// Ignore __align field
self.size.hash(state);
}
}
}
}
};
}

View File

@@ -1,44 +1,46 @@
use crate::off_t;
use crate::prelude::*;
// From psABI Calling Convention for RV64 // From psABI Calling Convention for RV64
pub type c_char = u8; pub type __u64 = c_ulonglong;
pub type __u64 = ::c_ulonglong;
pub type wchar_t = i32; pub type wchar_t = i32;
pub type nlink_t = ::c_ulong; pub type nlink_t = c_ulong;
pub type blksize_t = ::c_long; pub type blksize_t = c_long;
pub type stat64 = stat; pub type stat64 = stat;
s! { s! {
pub struct stat { pub struct stat {
pub st_dev: ::dev_t, pub st_dev: crate::dev_t,
pub st_ino: ::ino_t, pub st_ino: crate::ino_t,
pub st_nlink: ::nlink_t, pub st_nlink: crate::nlink_t,
pub st_mode: ::mode_t, pub st_mode: crate::mode_t,
pub st_uid: ::uid_t, pub st_uid: crate::uid_t,
pub st_gid: ::gid_t, pub st_gid: crate::gid_t,
__pad0: ::c_int, __pad0: c_int,
pub st_rdev: ::dev_t, pub st_rdev: crate::dev_t,
pub st_size: ::off_t, pub st_size: off_t,
pub st_blksize: ::blksize_t, pub st_blksize: crate::blksize_t,
pub st_blocks: ::blkcnt_t, pub st_blocks: crate::blkcnt_t,
pub st_atime: ::time_t, pub st_atime: crate::time_t,
pub st_atime_nsec: ::c_long, pub st_atime_nsec: c_long,
pub st_mtime: ::time_t, pub st_mtime: crate::time_t,
pub st_mtime_nsec: ::c_long, pub st_mtime_nsec: c_long,
pub st_ctime: ::time_t, pub st_ctime: crate::time_t,
pub st_ctime_nsec: ::c_long, pub st_ctime_nsec: c_long,
__unused: [::c_long; 3], __unused: [c_long; 3],
} }
// Not actually used, IPC calls just return ENOSYS // Not actually used, IPC calls just return ENOSYS
pub struct ipc_perm { pub struct ipc_perm {
pub __ipc_perm_key: ::key_t, pub __ipc_perm_key: crate::key_t,
pub uid: ::uid_t, pub uid: crate::uid_t,
pub gid: ::gid_t, pub gid: crate::gid_t,
pub cuid: ::uid_t, pub cuid: crate::uid_t,
pub cgid: ::gid_t, pub cgid: crate::gid_t,
pub mode: ::mode_t, pub mode: crate::mode_t,
pub __seq: ::c_ushort, pub __seq: c_ushort,
__unused1: ::c_ulong, __unused1: c_ulong,
__unused2: ::c_ulong, __unused2: c_ulong,
} }
} }

View File

@@ -1,50 +1,52 @@
pub type c_char = i8; use crate::off_t;
use crate::prelude::*;
pub type wchar_t = i32; pub type wchar_t = i32;
pub type nlink_t = u64; pub type nlink_t = u64;
pub type blksize_t = ::c_long; pub type blksize_t = c_long;
pub type __u64 = ::c_ulonglong; pub type __u64 = c_ulonglong;
s! { s! {
pub struct stat { pub struct stat {
pub st_dev: ::dev_t, pub st_dev: crate::dev_t,
pub st_ino: ::ino_t, pub st_ino: crate::ino_t,
pub st_nlink: ::nlink_t, pub st_nlink: crate::nlink_t,
pub st_mode: ::mode_t, pub st_mode: crate::mode_t,
pub st_uid: ::uid_t, pub st_uid: crate::uid_t,
pub st_gid: ::gid_t, pub st_gid: crate::gid_t,
__pad0: ::c_int, __pad0: c_int,
pub st_rdev: ::dev_t, pub st_rdev: crate::dev_t,
pub st_size: ::off_t, pub st_size: off_t,
pub st_blksize: ::blksize_t, pub st_blksize: crate::blksize_t,
pub st_blocks: ::blkcnt_t, pub st_blocks: crate::blkcnt_t,
pub st_atime: ::time_t, pub st_atime: crate::time_t,
pub st_atime_nsec: ::c_long, pub st_atime_nsec: c_long,
pub st_mtime: ::time_t, pub st_mtime: crate::time_t,
pub st_mtime_nsec: ::c_long, pub st_mtime_nsec: c_long,
pub st_ctime: ::time_t, pub st_ctime: crate::time_t,
pub st_ctime_nsec: ::c_long, pub st_ctime_nsec: c_long,
__unused: [::c_long; 3], __unused: [c_long; 3],
} }
pub struct stat64 { pub struct stat64 {
pub st_dev: ::dev_t, pub st_dev: crate::dev_t,
pub st_ino: ::ino64_t, pub st_ino: crate::ino64_t,
pub st_nlink: ::nlink_t, pub st_nlink: crate::nlink_t,
pub st_mode: ::mode_t, pub st_mode: crate::mode_t,
pub st_uid: ::uid_t, pub st_uid: crate::uid_t,
pub st_gid: ::gid_t, pub st_gid: crate::gid_t,
__pad0: ::c_int, __pad0: c_int,
pub st_rdev: ::dev_t, pub st_rdev: crate::dev_t,
pub st_size: ::off_t, pub st_size: off_t,
pub st_blksize: ::blksize_t, pub st_blksize: crate::blksize_t,
pub st_blocks: ::blkcnt64_t, pub st_blocks: crate::blkcnt64_t,
pub st_atime: ::time_t, pub st_atime: crate::time_t,
pub st_atime_nsec: ::c_long, pub st_atime_nsec: c_long,
pub st_mtime: ::time_t, pub st_mtime: crate::time_t,
pub st_mtime_nsec: ::c_long, pub st_mtime_nsec: c_long,
pub st_ctime: ::time_t, pub st_ctime: crate::time_t,
pub st_ctime_nsec: ::c_long, pub st_ctime_nsec: c_long,
__reserved: [::c_long; 3], __reserved: [c_long; 3],
} }
pub struct mcontext_t { pub struct mcontext_t {
@@ -52,25 +54,25 @@ s! {
} }
pub struct ipc_perm { pub struct ipc_perm {
pub __ipc_perm_key: ::key_t, pub __ipc_perm_key: crate::key_t,
pub uid: ::uid_t, pub uid: crate::uid_t,
pub gid: ::gid_t, pub gid: crate::gid_t,
pub cuid: ::uid_t, pub cuid: crate::uid_t,
pub cgid: ::gid_t, pub cgid: crate::gid_t,
pub mode: ::mode_t, pub mode: crate::mode_t,
pub __seq: ::c_int, pub __seq: c_int,
__unused1: ::c_long, __unused1: c_long,
__unused2: ::c_long __unused2: c_long,
} }
} }
s_no_extra_traits! { s_no_extra_traits! {
pub struct ucontext_t { pub struct ucontext_t {
pub uc_flags: ::c_ulong, pub uc_flags: c_ulong,
pub uc_link: *mut ucontext_t, pub uc_link: *mut ucontext_t,
pub uc_stack: ::stack_t, pub uc_stack: crate::stack_t,
pub uc_mcontext: mcontext_t, pub uc_mcontext: mcontext_t,
pub uc_sigmask: ::sigset_t, pub uc_sigmask: crate::sigset_t,
__private: [u8; 512], __private: [u8; 512],
} }
} }
@@ -85,27 +87,27 @@ cfg_if! {
&& self.uc_mcontext == other.uc_mcontext && self.uc_mcontext == other.uc_mcontext
&& self.uc_sigmask == other.uc_sigmask && self.uc_sigmask == other.uc_sigmask
&& self && self
.__private .__private
.iter() .iter()
.zip(other.__private.iter()) .zip(other.__private.iter())
.all(|(a,b)| a == b) .all(|(a, b)| a == b)
} }
} }
impl Eq for ucontext_t {} impl Eq for ucontext_t {}
impl ::fmt::Debug for ucontext_t { impl fmt::Debug for ucontext_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("ucontext_t") f.debug_struct("ucontext_t")
.field("uc_flags", &self.uc_flags) .field("uc_flags", &self.uc_flags)
.field("uc_link", &self.uc_link) .field("uc_link", &self.uc_link)
.field("uc_stack", &self.uc_stack) .field("uc_stack", &self.uc_stack)
.field("uc_mcontext", &self.uc_mcontext) .field("uc_mcontext", &self.uc_mcontext)
.field("uc_sigmask", &self.uc_sigmask) .field("uc_sigmask", &self.uc_sigmask)
// FIXME: .field("__private", &self.__private) // FIXME(debug): .field("__private", &self.__private)
.finish() .finish()
} }
} }
impl ::hash::Hash for ucontext_t { impl hash::Hash for ucontext_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.uc_flags.hash(state); self.uc_flags.hash(state);
self.uc_link.hash(state); self.uc_link.hash(state);
self.uc_stack.hash(state); self.uc_stack.hash(state);
@@ -118,35 +120,35 @@ cfg_if! {
} }
// offsets in user_regs_structs, from sys/reg.h // offsets in user_regs_structs, from sys/reg.h
pub const R15: ::c_int = 0; pub const R15: c_int = 0;
pub const R14: ::c_int = 1; pub const R14: c_int = 1;
pub const R13: ::c_int = 2; pub const R13: c_int = 2;
pub const R12: ::c_int = 3; pub const R12: c_int = 3;
pub const RBP: ::c_int = 4; pub const RBP: c_int = 4;
pub const RBX: ::c_int = 5; pub const RBX: c_int = 5;
pub const R11: ::c_int = 6; pub const R11: c_int = 6;
pub const R10: ::c_int = 7; pub const R10: c_int = 7;
pub const R9: ::c_int = 8; pub const R9: c_int = 8;
pub const R8: ::c_int = 9; pub const R8: c_int = 9;
pub const RAX: ::c_int = 10; pub const RAX: c_int = 10;
pub const RCX: ::c_int = 11; pub const RCX: c_int = 11;
pub const RDX: ::c_int = 12; pub const RDX: c_int = 12;
pub const RSI: ::c_int = 13; pub const RSI: c_int = 13;
pub const RDI: ::c_int = 14; pub const RDI: c_int = 14;
pub const ORIG_RAX: ::c_int = 15; pub const ORIG_RAX: c_int = 15;
pub const RIP: ::c_int = 16; pub const RIP: c_int = 16;
pub const CS: ::c_int = 17; pub const CS: c_int = 17;
pub const EFLAGS: ::c_int = 18; pub const EFLAGS: c_int = 18;
pub const RSP: ::c_int = 19; pub const RSP: c_int = 19;
pub const SS: ::c_int = 20; pub const SS: c_int = 20;
pub const FS_BASE: ::c_int = 21; pub const FS_BASE: c_int = 21;
pub const GS_BASE: ::c_int = 22; pub const GS_BASE: c_int = 22;
pub const DS: ::c_int = 23; pub const DS: c_int = 23;
pub const ES: ::c_int = 24; pub const ES: c_int = 24;
pub const FS: ::c_int = 25; pub const FS: c_int = 25;
pub const GS: ::c_int = 26; pub const GS: c_int = 26;
pub const MAP_32BIT: ::c_int = 0x0040; pub const MAP_32BIT: c_int = 0x0040;
pub const SIGSTKSZ: ::size_t = 8192; pub const SIGSTKSZ: size_t = 8192;
pub const MINSIGSTKSZ: ::size_t = 2048; pub const MINSIGSTKSZ: size_t = 2048;

View File

@@ -1,31 +1,12 @@
//! Hermit C type definitions //! Hermit C type definitions
cfg_if! { use crate::prelude::*;
if #[cfg(any(target_arch = "aarch64", target_arch = "riscv64"))] {
pub type c_char = u8;
} else {
pub type c_char = i8;
}
}
pub type c_schar = i8;
pub type c_uchar = u8;
pub type c_short = i16;
pub type c_ushort = u16;
pub type c_int = i32;
pub type c_uint = u32;
pub type c_long = i64;
pub type c_ulong = u64;
pub type c_longlong = i64;
pub type c_ulonglong = u64;
pub type intmax_t = i64; pub type intmax_t = i64;
pub type uintmax_t = u64; pub type uintmax_t = u64;
pub type intptr_t = isize; pub type intptr_t = isize;
pub type uintptr_t = usize; pub type uintptr_t = usize;
pub type c_float = f32;
pub type c_double = f64;
pub type size_t = usize; pub type size_t = usize;
pub type ssize_t = isize; pub type ssize_t = isize;
pub type ptrdiff_t = isize; pub type ptrdiff_t = isize;
@@ -119,7 +100,7 @@ s! {
pub st_uid: u32, pub st_uid: u32,
pub st_gid: u32, pub st_gid: u32,
pub st_rdev: u64, pub st_rdev: u64,
pub st_size: u64, pub st_size: i64,
pub st_blksize: i64, pub st_blksize: i64,
pub st_blocks: i64, pub st_blocks: i64,
pub st_atim: timespec, pub st_atim: timespec,
@@ -576,5 +557,3 @@ extern "C" {
#[link_name = "sys_poll"] #[link_name = "sys_poll"]
pub fn poll(fds: *mut pollfd, nfds: nfds_t, timeout: i32) -> i32; pub fn poll(fds: *mut pollfd, nfds: nfds_t, timeout: i32) -> i32;
} }
pub use ffi::c_void;

View File

@@ -12,7 +12,7 @@
redundant_semicolons, redundant_semicolons,
unused_macros, unused_macros,
unused_macro_rules, unused_macro_rules,
// FIXME: temporarily allow dead_code to fix CI: // FIXME(1.0): temporarily allow dead_code to fix CI:
// - https://github.com/rust-lang/libc/issues/3740 // - https://github.com/rust-lang/libc/issues/3740
// - https://github.com/rust-lang/rust/pull/126456 // - https://github.com/rust-lang/rust/pull/126456
dead_code, dead_code,
@@ -21,12 +21,14 @@
// Attributes needed when building as part of the standard library // Attributes needed when building as part of the standard library
#![cfg_attr(feature = "rustc-dep-of-std", feature(link_cfg, no_core))] #![cfg_attr(feature = "rustc-dep-of-std", feature(link_cfg, no_core))]
#![cfg_attr(libc_thread_local, feature(thread_local))] #![cfg_attr(libc_thread_local, feature(thread_local))]
#![cfg_attr(feature = "rustc-dep-of-std", allow(internal_features))]
// DIFF(1.0): The thread local references that raise this lint were removed in 1.0
#![cfg_attr(feature = "rustc-dep-of-std", allow(static_mut_refs))]
// Enable extra lints: // Enable extra lints:
#![cfg_attr(feature = "extra_traits", deny(missing_debug_implementations))] #![cfg_attr(feature = "extra_traits", deny(missing_debug_implementations))]
#![deny(missing_copy_implementations, safe_packed_borrows)] #![deny(missing_copy_implementations, safe_packed_borrows)]
#![cfg_attr(not(feature = "rustc-dep-of-std"), no_std)] #![cfg_attr(not(feature = "rustc-dep-of-std"), no_std)]
#![cfg_attr(feature = "rustc-dep-of-std", no_core)] #![cfg_attr(feature = "rustc-dep-of-std", no_core)]
#![cfg_attr(libc_const_extern_fn_unstable, feature(const_extern_fn))]
#[macro_use] #[macro_use]
mod macros; mod macros;
@@ -34,135 +36,116 @@ mod macros;
cfg_if! { cfg_if! {
if #[cfg(feature = "rustc-dep-of-std")] { if #[cfg(feature = "rustc-dep-of-std")] {
extern crate rustc_std_workspace_core as core; extern crate rustc_std_workspace_core as core;
#[allow(unused_imports)]
use core::iter;
#[allow(unused_imports)]
use core::ops;
#[allow(unused_imports)]
use core::option;
} }
} }
cfg_if! { pub use core::ffi::c_void;
if #[cfg(libc_priv_mod_use)] {
#[cfg(libc_core_cvoid)]
#[allow(unused_imports)]
use core::ffi;
#[allow(unused_imports)]
use core::fmt;
#[allow(unused_imports)]
use core::hash;
#[allow(unused_imports)]
use core::num;
#[allow(unused_imports)]
use core::mem;
#[doc(hidden)]
#[allow(unused_imports)]
use core::clone::Clone;
#[doc(hidden)]
#[allow(unused_imports)]
use core::marker::{Copy, Send, Sync};
#[doc(hidden)]
#[allow(unused_imports)]
use core::option::Option;
} else {
#[doc(hidden)]
#[allow(unused_imports)]
pub use core::fmt;
#[doc(hidden)]
#[allow(unused_imports)]
pub use core::hash;
#[doc(hidden)]
#[allow(unused_imports)]
pub use core::num;
#[doc(hidden)]
#[allow(unused_imports)]
pub use core::mem;
#[doc(hidden)]
#[allow(unused_imports)]
pub use core::clone::Clone;
#[doc(hidden)]
#[allow(unused_imports)]
pub use core::marker::{Copy, Send, Sync};
#[doc(hidden)]
#[allow(unused_imports)]
pub use core::option::Option;
}
}
cfg_if! { cfg_if! {
if #[cfg(windows)] { if #[cfg(windows)] {
mod fixed_width_ints; mod primitives;
pub use fixed_width_ints::*; pub use crate::primitives::*;
mod windows; mod windows;
pub use windows::*; pub use crate::windows::*;
prelude!();
} else if #[cfg(target_os = "fuchsia")] { } else if #[cfg(target_os = "fuchsia")] {
mod fixed_width_ints; mod primitives;
pub use fixed_width_ints::*; pub use crate::primitives::*;
mod fuchsia; mod fuchsia;
pub use fuchsia::*; pub use crate::fuchsia::*;
prelude!();
} else if #[cfg(target_os = "switch")] { } else if #[cfg(target_os = "switch")] {
mod fixed_width_ints; mod primitives;
pub use fixed_width_ints::*; pub use primitives::*;
mod switch; mod switch;
pub use switch::*; pub use switch::*;
prelude!();
} else if #[cfg(target_os = "psp")] { } else if #[cfg(target_os = "psp")] {
mod fixed_width_ints; mod primitives;
pub use fixed_width_ints::*; pub use primitives::*;
mod psp; mod psp;
pub use psp::*; pub use crate::psp::*;
prelude!();
} else if #[cfg(target_os = "vxworks")] { } else if #[cfg(target_os = "vxworks")] {
mod fixed_width_ints; mod primitives;
pub use fixed_width_ints::*; pub use crate::primitives::*;
mod vxworks; mod vxworks;
pub use vxworks::*; pub use crate::vxworks::*;
prelude!();
} else if #[cfg(target_os = "solid_asp3")] { } else if #[cfg(target_os = "solid_asp3")] {
mod fixed_width_ints; mod primitives;
pub use fixed_width_ints::*; pub use crate::primitives::*;
mod solid; mod solid;
pub use solid::*; pub use crate::solid::*;
prelude!();
} else if #[cfg(unix)] { } else if #[cfg(unix)] {
mod fixed_width_ints; mod primitives;
pub use fixed_width_ints::*; pub use crate::primitives::*;
mod unix; mod unix;
pub use unix::*; pub use crate::unix::*;
prelude!();
} else if #[cfg(target_os = "hermit")] { } else if #[cfg(target_os = "hermit")] {
mod fixed_width_ints; mod primitives;
pub use fixed_width_ints::*; pub use crate::primitives::*;
mod hermit; mod hermit;
pub use hermit::*; pub use crate::hermit::*;
prelude!();
} else if #[cfg(target_os = "teeos")] { } else if #[cfg(target_os = "teeos")] {
mod fixed_width_ints; mod primitives;
pub use fixed_width_ints::*; pub use primitives::*;
mod teeos; mod teeos;
pub use teeos::*; pub use teeos::*;
prelude!();
} else if #[cfg(target_os = "trusty")] {
mod primitives;
pub use crate::primitives::*;
mod trusty;
pub use crate::trusty::*;
prelude!();
} else if #[cfg(all(target_env = "sgx", target_vendor = "fortanix"))] { } else if #[cfg(all(target_env = "sgx", target_vendor = "fortanix"))] {
mod fixed_width_ints; mod primitives;
pub use fixed_width_ints::*; pub use crate::primitives::*;
mod sgx; mod sgx;
pub use sgx::*; pub use crate::sgx::*;
prelude!();
} else if #[cfg(any(target_env = "wasi", target_os = "wasi"))] { } else if #[cfg(any(target_env = "wasi", target_os = "wasi"))] {
mod fixed_width_ints; mod primitives;
pub use fixed_width_ints::*; pub use crate::primitives::*;
mod wasi; mod wasi;
pub use wasi::*; pub use crate::wasi::*;
prelude!();
} else if #[cfg(target_os = "xous")] { } else if #[cfg(target_os = "xous")] {
mod fixed_width_ints; mod primitives;
pub use fixed_width_ints::*; pub use crate::primitives::*;
mod xous; mod xous;
pub use xous::*; pub use crate::xous::*;
prelude!();
} else { } else {
// non-supported targets: empty... // non-supported targets: empty...
} }

View File

@@ -61,216 +61,260 @@ macro_rules! cfg_if {
}; };
} }
/// Create an internal crate prelude with `core` reexports and common types.
macro_rules! prelude {
() => {
/// Frequently-used types that are available on all platforms
///
/// We need to reexport the core types so this works with `rust-dep-of-std`.
mod prelude {
// Exports from `core`
#[allow(unused_imports)]
pub(crate) use ::core::clone::Clone;
#[allow(unused_imports)]
pub(crate) use ::core::marker::{Copy, Send, Sync};
#[allow(unused_imports)]
pub(crate) use ::core::option::Option;
#[allow(unused_imports)]
pub(crate) use ::core::{fmt, hash, iter, mem};
// Commonly used types defined in this crate
#[allow(unused_imports)]
pub(crate) use crate::{
c_char, c_double, c_float, c_int, c_long, c_longlong, c_short, c_uchar, c_uint,
c_ulong, c_ulonglong, c_ushort, c_void, intptr_t, size_t, ssize_t, uintptr_t,
};
}
};
}
/// Implement `Clone` and `Copy` for a struct, as well as `Debug`, `Eq`, `Hash`, and
/// `PartialEq` if the `extra_traits` feature is enabled.
///
/// Use [`s_no_extra_traits`] for structs where the `extra_traits` feature does not
/// make sense, and for unions.
macro_rules! s { macro_rules! s {
($($(#[$attr:meta])* pub $t:ident $i:ident { $($field:tt)* })*) => ($( ($(
$(#[$attr:meta])*
pub $t:ident $i:ident { $($field:tt)* }
)*) => ($(
s!(it: $(#[$attr])* pub $t $i { $($field)* }); s!(it: $(#[$attr])* pub $t $i { $($field)* });
)*); )*);
(it: $(#[$attr:meta])* pub union $i:ident { $($field:tt)* }) => ( (it: $(#[$attr:meta])* pub union $i:ident { $($field:tt)* }) => (
compile_error!("unions cannot derive extra traits, use s_no_extra_traits instead"); compile_error!("unions cannot derive extra traits, use s_no_extra_traits instead");
); );
(it: $(#[$attr:meta])* pub struct $i:ident { $($field:tt)* }) => ( (it: $(#[$attr:meta])* pub struct $i:ident { $($field:tt)* }) => (
__item! { __item! {
#[repr(C)] #[repr(C)]
#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))] #[cfg_attr(
feature = "extra_traits",
::core::prelude::v1::derive(Debug, Eq, Hash, PartialEq)
)]
#[::core::prelude::v1::derive(::core::clone::Clone, ::core::marker::Copy)]
#[allow(deprecated)] #[allow(deprecated)]
$(#[$attr])* $(#[$attr])*
pub struct $i { $($field)* } pub struct $i { $($field)* }
} }
#[allow(deprecated)]
impl ::Copy for $i {}
#[allow(deprecated)]
impl ::Clone for $i {
fn clone(&self) -> $i { *self }
}
); );
} }
macro_rules! s_no_extra_traits { /// Implement `Clone` and `Copy` for a tuple struct, as well as `Debug`, `Eq`, `Hash`,
($($(#[$attr:meta])* pub $t:ident $i:ident { $($field:tt)* })*) => ($( /// and `PartialEq` if the `extra_traits` feature is enabled.
s_no_extra_traits!(it: $(#[$attr])* pub $t $i { $($field)* }); ///
)*); /// This is the same as [`s`] but works for tuple structs.
(it: $(#[$attr:meta])* pub union $i:ident { $($field:tt)* }) => (
cfg_if! {
if #[cfg(libc_union)] {
__item! {
#[repr(C)]
$(#[$attr])*
pub union $i { $($field)* }
}
impl ::Copy for $i {}
impl ::Clone for $i {
fn clone(&self) -> $i { *self }
}
}
}
);
(it: $(#[$attr:meta])* pub struct $i:ident { $($field:tt)* }) => (
__item! {
#[repr(C)]
$(#[$attr])*
pub struct $i { $($field)* }
}
#[allow(deprecated)]
impl ::Copy for $i {}
#[allow(deprecated)]
impl ::Clone for $i {
fn clone(&self) -> $i { *self }
}
);
}
macro_rules! missing {
($($(#[$attr:meta])* pub enum $i:ident {})*) => ($(
$(#[$attr])* #[allow(missing_copy_implementations)] pub enum $i { }
)*);
}
macro_rules! e {
($($(#[$attr:meta])* pub enum $i:ident { $($field:tt)* })*) => ($(
__item! {
#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))]
$(#[$attr])*
pub enum $i { $($field)* }
}
impl ::Copy for $i {}
impl ::Clone for $i {
fn clone(&self) -> $i { *self }
}
)*);
}
macro_rules! s_paren { macro_rules! s_paren {
($($(#[$attr:meta])* pub struct $i:ident ( $($field:tt)* ); )* ) => ($( ($(
$(#[$attr:meta])*
pub struct $i:ident ( $($field:tt)* );
)*) => ($(
__item! { __item! {
#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))] #[cfg_attr(
feature = "extra_traits",
::core::prelude::v1::derive(Debug, Eq, Hash, PartialEq)
)]
#[::core::prelude::v1::derive(::core::clone::Clone, ::core::marker::Copy)]
$(#[$attr])* $(#[$attr])*
pub struct $i ( $($field)* ); pub struct $i ( $($field)* );
} }
impl ::Copy for $i {} )*);
impl ::Clone for $i { }
fn clone(&self) -> $i { *self }
/// Implement `Clone` and `Copy` for a struct with no `extra_traits` feature.
///
/// Most items will prefer to use [`s`].
macro_rules! s_no_extra_traits {
($(
$(#[$attr:meta])*
pub $t:ident $i:ident { $($field:tt)* }
)*) => ($(
s_no_extra_traits!(it: $(#[$attr])* pub $t $i { $($field)* });
)*);
(it: $(#[$attr:meta])* pub union $i:ident { $($field:tt)* }) => (
__item! {
#[repr(C)]
#[::core::prelude::v1::derive(::core::clone::Clone, ::core::marker::Copy)]
$(#[$attr])*
pub union $i { $($field)* }
}
#[cfg(feature = "extra_traits")]
impl ::core::fmt::Debug for $i {
fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
f.debug_struct(::core::stringify!($i)).finish_non_exhaustive()
}
}
);
(it: $(#[$attr:meta])* pub struct $i:ident { $($field:tt)* }) => (
__item! {
#[repr(C)]
#[::core::prelude::v1::derive(::core::clone::Clone, ::core::marker::Copy)]
$(#[$attr])*
pub struct $i { $($field)* }
}
);
}
/// Specify that an enum should have no traits that aren't specified in the macro
/// invocation, i.e. no `Clone` or `Copy`.
macro_rules! missing {
($(
$(#[$attr:meta])*
pub enum $i:ident {}
)*) => ($(
$(#[$attr])*
#[allow(missing_copy_implementations)]
pub enum $i { }
)*);
}
/// Implement `Clone` and `Copy` for an enum, as well as `Debug`, `Eq`, `Hash`, and
/// `PartialEq` if the `extra_traits` feature is enabled.
macro_rules! e {
($(
$(#[$attr:meta])*
pub enum $i:ident { $($field:tt)* }
)*) => ($(
__item! {
#[cfg_attr(
feature = "extra_traits",
::core::prelude::v1::derive(Debug, Eq, Hash, PartialEq)
)]
#[::core::prelude::v1::derive(::core::clone::Clone, ::core::marker::Copy)]
$(#[$attr])*
pub enum $i { $($field)* }
} }
)*); )*);
} }
// This is a pretty horrible hack to allow us to conditionally mark // This is a pretty horrible hack to allow us to conditionally mark some functions as 'const',
// some functions as 'const', without requiring users of this macro // without requiring users of this macro to care "libc_const_extern_fn".
// to care about the "const-extern-fn" feature.
// //
// When 'const-extern-fn' is enabled, we emit the captured 'const' keyword // When 'libc_const_extern_fn' is enabled, we emit the captured 'const' keyword in the expanded
// in the expanded function. // function.
// //
// When 'const-extern-fn' is disabled, we always emit a plain 'pub unsafe extern fn'. // When 'libc_const_extern_fn' is disabled, we always emit a plain 'pub unsafe extern fn'.
// Note that the expression matched by the macro is exactly the same - this allows // Note that the expression matched by the macro is exactly the same - this allows
// users of this macro to work whether or not 'const-extern-fn' is enabled // users of this macro to work whether or not 'libc_const_extern_fn' is enabled
// //
// Unfortunately, we need to duplicate most of this macro between the 'cfg_if' blocks. // Unfortunately, we need to duplicate most of this macro between the 'cfg_if' blocks.
// This is because 'const unsafe extern fn' won't even parse on older compilers, // This is because 'const unsafe extern fn' won't even parse on older compilers,
// so we need to avoid emitting it at all of 'const-extern-fn'. // so we need to avoid emitting it at all of 'libc_const_extern_fn'.
// //
// Specifically, moving the 'cfg_if' into the macro body will *not* work. // Specifically, moving the 'cfg_if' into the macro body will *not* work. Doing so would cause the
// Doing so would cause the '#[cfg(feature = "const-extern-fn")]' to be emitted // '#[cfg(libc_const_extern_fn)]' to be emitted into user code. The 'cfg' gate will not stop Rust
// into user code. The 'cfg' gate will not stop Rust from trying to parse the // from trying to parse the 'pub const unsafe extern fn', so users would get a compiler error even
// 'pub const unsafe extern fn', so users would get a compiler error even when // when the 'libc_const_extern_fn' feature is disabled.
// the 'const-extern-fn' feature is disabled
// // FIXME(ctest): ctest can't handle `const extern` functions, we should be able to remove this
// Note that users of this macro need to place 'const' in a weird position // cfg completely.
// (after the closing ')' for the arguments, but before the return type). // FIXME(ctest): ctest can't handle `$(,)?` so we use `$(,)*` which isn't quite correct.
// This was the only way I could satisfy the following two requirements:
// 1. Avoid ambiguity errors from 'macro_rules!' (which happen when writing '$foo:ident fn'
// 2. Allow users of this macro to mix 'pub fn foo' and 'pub const fn bar' within the same
// 'f!' block
cfg_if! { cfg_if! {
if #[cfg(libc_const_extern_fn)] { if #[cfg(libc_const_extern_fn)] {
/// Define an `unsafe` function that is const as long as `libc_const_extern_fn` is enabled.
macro_rules! f { macro_rules! f {
($($(#[$attr:meta])* pub $({$constness:ident})* fn $i:ident( ($(
$($arg:ident: $argty:ty),* $(#[$attr:meta])*
) -> $ret:ty { pub $({$constness:ident})* fn $i:ident($($arg:ident: $argty:ty),* $(,)*) -> $ret:ty
$($body:stmt);* $body:block
})*) => ($( )*) => ($(
#[inline] #[inline]
$(#[$attr])* $(#[$attr])*
pub $($constness)* unsafe extern fn $i($($arg: $argty),* pub $($constness)* unsafe extern "C" fn $i($($arg: $argty),*) -> $ret
) -> $ret { $body
$($body);*
}
)*) )*)
} }
/// Define a safe function that is const as long as `libc_const_extern_fn` is enabled.
macro_rules! safe_f { macro_rules! safe_f {
($($(#[$attr:meta])* pub $({$constness:ident})* fn $i:ident( ($(
$($arg:ident: $argty:ty),* $(#[$attr:meta])*
) -> $ret:ty { pub $({$constness:ident})* fn $i:ident($($arg:ident: $argty:ty),* $(,)*) -> $ret:ty
$($body:stmt);* $body:block
})*) => ($( )*) => ($(
#[inline] #[inline]
$(#[$attr])* $(#[$attr])*
pub $($constness)* extern fn $i($($arg: $argty),* pub $($constness)* extern "C" fn $i($($arg: $argty),*) -> $ret
) -> $ret { $body
$($body);*
}
)*) )*)
} }
/// A nonpublic function that is const as long as `libc_const_extern_fn` is enabled.
macro_rules! const_fn { macro_rules! const_fn {
($($(#[$attr:meta])* $({$constness:ident})* fn $i:ident( ($(
$($arg:ident: $argty:ty),* $(#[$attr:meta])*
) -> $ret:ty { $({$constness:ident})* fn $i:ident($($arg:ident: $argty:ty),* $(,)*) -> $ret:ty
$($body:stmt);* $body:block
})*) => ($( )*) => ($(
#[inline] #[inline]
$(#[$attr])* $(#[$attr])*
$($constness)* fn $i($($arg: $argty),* $($constness)* fn $i($($arg: $argty),*) -> $ret
) -> $ret { $body
$($body);*
}
)*) )*)
} }
} else { } else {
/// Define an `unsafe` function that is const as long as `libc_const_extern_fn` is enabled.
macro_rules! f { macro_rules! f {
($($(#[$attr:meta])* pub $({$constness:ident})* fn $i:ident( ($(
$($arg:ident: $argty:ty),* $(#[$attr:meta])*
) -> $ret:ty { pub $({$constness:ident})* fn $i:ident($($arg:ident: $argty:ty),* $(,)*) -> $ret:ty
$($body:stmt);* $body:block
})*) => ($( )*) => ($(
#[inline] #[inline]
$(#[$attr])* $(#[$attr])*
pub unsafe extern fn $i($($arg: $argty),* pub unsafe extern "C" fn $i($($arg: $argty),*) -> $ret
) -> $ret { $body
$($body);*
}
)*) )*)
} }
/// Define a safe function that is const as long as `libc_const_extern_fn` is enabled.
macro_rules! safe_f { macro_rules! safe_f {
($($(#[$attr:meta])* pub $({$constness:ident})* fn $i:ident( ($(
$($arg:ident: $argty:ty),* $(#[$attr:meta])*
) -> $ret:ty { pub $({$constness:ident})* fn $i:ident($($arg:ident: $argty:ty),* $(,)*) -> $ret:ty
$($body:stmt);* $body:block
})*) => ($( )*) => ($(
#[inline] #[inline]
$(#[$attr])* $(#[$attr])*
pub extern fn $i($($arg: $argty),* pub extern "C" fn $i($($arg: $argty),*) -> $ret
) -> $ret { $body
$($body);*
}
)*) )*)
} }
/// A nonpublic function that is const as long as `libc_const_extern_fn` is enabled.
macro_rules! const_fn { macro_rules! const_fn {
($($(#[$attr:meta])* $({$constness:ident})* fn $i:ident( ($(
$($arg:ident: $argty:ty),* $(#[$attr:meta])*
) -> $ret:ty { $({$constness:ident})* fn $i:ident($($arg:ident: $argty:ty),* $(,)*) -> $ret:ty
$($body:stmt);* $body:block
})*) => ($( )*) => ($(
#[inline] #[inline]
$(#[$attr])* $(#[$attr])*
fn $i($($arg: $argty),* fn $i($($arg: $argty),*) -> $ret
) -> $ret { $body
$($body);*
}
)*) )*)
} }
} }
@@ -282,24 +326,6 @@ macro_rules! __item {
}; };
} }
macro_rules! align_const {
($($(#[$attr:meta])*
pub const $name:ident : $t1:ty
= $t2:ident { $($field:tt)* };)*) => ($(
#[cfg(libc_align)]
$(#[$attr])*
pub const $name : $t1 = $t2 {
$($field)*
};
#[cfg(not(libc_align))]
$(#[$attr])*
pub const $name : $t1 = $t2 {
$($field)*
__align: [],
};
)*)
}
// This macro is used to deprecate items that should be accessed via the mach2 crate // This macro is used to deprecate items that should be accessed via the mach2 crate
macro_rules! deprecated_mach { macro_rules! deprecated_mach {
(pub const $id:ident: $ty:ty = $expr:expr;) => { (pub const $id:ident: $ty:ty = $expr:expr;) => {
@@ -333,17 +359,3 @@ macro_rules! deprecated_mach {
)* )*
} }
} }
#[cfg(not(libc_ptr_addr_of))]
macro_rules! ptr_addr_of {
($place:expr) => {
&$place
};
}
#[cfg(libc_ptr_addr_of)]
macro_rules! ptr_addr_of {
($place:expr) => {
::core::ptr::addr_of!($place)
};
}

166
third_party/rust/libc/src/primitives.rs vendored Normal file
View File

@@ -0,0 +1,166 @@
//! This module contains type aliases for C's platform-specific types
//! and fixed-width integer types.
//!
//! The platform-specific types definitions were taken from rust-lang/rust in
//! library/core/src/ffi/primitives.rs
//!
//! The fixed-width integer aliases are deprecated: use the Rust types instead.
pub type c_schar = i8;
pub type c_uchar = u8;
pub type c_short = i16;
pub type c_ushort = u16;
pub type c_longlong = i64;
pub type c_ulonglong = u64;
pub type c_float = f32;
pub type c_double = f64;
cfg_if! {
if #[cfg(all(
not(windows),
// FIXME(ctest): just use `target_vendor` = "apple"` once `ctest` supports it
not(any(
target_os = "macos",
target_os = "ios",
target_os = "tvos",
target_os = "watchos",
target_os = "visionos",
)),
not(target_os = "vita"),
any(
target_arch = "aarch64",
target_arch = "arm",
target_arch = "csky",
target_arch = "hexagon",
target_arch = "msp430",
target_arch = "powerpc",
target_arch = "powerpc64",
target_arch = "riscv32",
target_arch = "riscv64",
target_arch = "s390x",
target_arch = "xtensa",
)
))] {
pub type c_char = u8;
} else {
// On every other target, c_char is signed.
pub type c_char = i8;
}
}
cfg_if! {
if #[cfg(any(target_arch = "avr", target_arch = "msp430"))] {
pub type c_int = i16;
pub type c_uint = u16;
} else {
pub type c_int = i32;
pub type c_uint = u32;
}
}
cfg_if! {
if #[cfg(all(target_pointer_width = "64", not(windows)))] {
pub type c_long = i64;
pub type c_ulong = u64;
} else {
// The minimal size of `long` in the C standard is 32 bits
pub type c_long = i32;
pub type c_ulong = u32;
}
}
#[deprecated(since = "0.2.55", note = "Use i8 instead.")]
pub type int8_t = i8;
#[deprecated(since = "0.2.55", note = "Use i16 instead.")]
pub type int16_t = i16;
#[deprecated(since = "0.2.55", note = "Use i32 instead.")]
pub type int32_t = i32;
#[deprecated(since = "0.2.55", note = "Use i64 instead.")]
pub type int64_t = i64;
#[deprecated(since = "0.2.55", note = "Use u8 instead.")]
pub type uint8_t = u8;
#[deprecated(since = "0.2.55", note = "Use u16 instead.")]
pub type uint16_t = u16;
#[deprecated(since = "0.2.55", note = "Use u32 instead.")]
pub type uint32_t = u32;
#[deprecated(since = "0.2.55", note = "Use u64 instead.")]
pub type uint64_t = u64;
cfg_if! {
if #[cfg(all(target_arch = "aarch64", not(target_os = "windows")))] {
// This introduces partial support for FFI with __int128 and
// equivalent types on platforms where Rust's definition is validated
// to match the standard C ABI of that platform.
//
// Rust does not guarantee u128/i128 are sound for FFI, and its
// definitions are in fact known to be incompatible. [0]
//
// However these problems aren't fundamental, and are just platform
// inconsistencies. Specifically at the time of this writing:
//
// * For x64 SysV ABIs (everything but Windows), the types are underaligned.
// * For all Windows ABIs, Microsoft doesn't actually officially define __int128,
// and as a result different implementations don't actually agree on its ABI.
//
// But on the other major aarch64 platforms (android, linux, ios, macos) we have
// validated that rustc has the right ABI for these types. This is important because
// aarch64 uses these types in some fundamental OS types like user_fpsimd_struct,
// which represents saved simd registers.
//
// Any API which uses these types will need to `#[ignore(improper_ctypes)]`
// until the upstream rust issue is resolved, but this at least lets us make
// progress on platforms where this type is important.
//
// The list of supported architectures and OSes is intentionally very restricted,
// as careful work needs to be done to verify that a particular platform
// has a conformant ABI.
//
// [0]: https://github.com/rust-lang/rust/issues/54341
/// C `__int128` (a GCC extension that's part of many ABIs)
pub type __int128 = i128;
/// C `unsigned __int128` (a GCC extension that's part of many ABIs)
pub type __uint128 = u128;
/// C __int128_t (alternate name for [__int128][])
pub type __int128_t = i128;
/// C __uint128_t (alternate name for [__uint128][])
pub type __uint128_t = u128;
// NOTE: if you add more platforms to here, you may need to cfg
// these consts. They should always match the platform's values
// for `sizeof(__int128)` and `_Alignof(__int128)`.
const _SIZE_128: usize = 16;
const _ALIGN_128: usize = 16;
// FIXME(ctest): ctest doesn't handle `_` as an identifier so these tests are temporarily
// disabled.
// macro_rules! static_assert_eq {
// ($a:expr, $b:expr) => {
// const _: [(); $a] = [(); $b];
// };
// }
//
// // Since Rust doesn't officially guarantee that these types
// // have compatible ABIs, we const assert that these values have the
// // known size/align of the target platform's libc. If rustc ever
// // tries to regress things, it will cause a compilation error.
// //
// // This isn't a bullet-proof solution because e.g. it doesn't
// // catch the fact that llvm and gcc disagree on how x64 __int128
// // is actually *passed* on the stack (clang underaligns it for
// // the same reason that rustc *never* properly aligns it).
// static_assert_eq!(core::mem::size_of::<__int128>(), _SIZE_128);
// static_assert_eq!(core::mem::align_of::<__int128>(), _ALIGN_128);
// static_assert_eq!(core::mem::size_of::<__uint128>(), _SIZE_128);
// static_assert_eq!(core::mem::align_of::<__uint128>(), _ALIGN_128);
// static_assert_eq!(core::mem::size_of::<__int128_t>(), _SIZE_128);
// static_assert_eq!(core::mem::align_of::<__int128_t>(), _ALIGN_128);
// static_assert_eq!(core::mem::size_of::<__uint128_t>(), _SIZE_128);
// static_assert_eq!(core::mem::align_of::<__uint128_t>(), _ALIGN_128);
}
}

View File

@@ -4,16 +4,8 @@
//! by the linker. Crates that use these definitions must, somewhere in the //! by the linker. Crates that use these definitions must, somewhere in the
//! crate graph, include a stub provider crate such as the `psp` crate. //! crate graph, include a stub provider crate such as the `psp` crate.
pub type c_schar = i8; use crate::prelude::*;
pub type c_uchar = u8;
pub type c_short = i16;
pub type c_ushort = u16;
pub type c_int = i32;
pub type c_uint = u32;
pub type c_float = f32;
pub type c_double = f64;
pub type c_longlong = i64;
pub type c_ulonglong = u64;
pub type intmax_t = i64; pub type intmax_t = i64;
pub type uintmax_t = u64; pub type uintmax_t = u64;
@@ -23,30 +15,6 @@ pub type intptr_t = isize;
pub type uintptr_t = usize; pub type uintptr_t = usize;
pub type ssize_t = isize; pub type ssize_t = isize;
pub type c_char = u8;
pub type c_long = i64;
pub type c_ulong = u64;
cfg_if! {
if #[cfg(libc_core_cvoid)] {
pub use ::ffi::c_void;
} else {
// Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help
// enable more optimization opportunities around it recognizing things
// like malloc/free.
#[repr(u8)]
#[allow(missing_copy_implementations)]
#[allow(missing_debug_implementations)]
pub enum c_void {
// Two dummy variants so the #[repr] attribute can be used.
#[doc(hidden)]
__variant1,
#[doc(hidden)]
__variant2,
}
}
}
pub type SceKernelVTimerHandler = unsafe extern "C" fn( pub type SceKernelVTimerHandler = unsafe extern "C" fn(
uid: SceUid, uid: SceUid,
arg1: *mut SceKernelSysClock, arg1: *mut SceKernelSysClock,
@@ -74,16 +42,16 @@ pub type IoPermissions = i32;
pub type UmdCallback = fn(unknown: i32, event: i32) -> i32; pub type UmdCallback = fn(unknown: i32, event: i32) -> i32;
pub type SceMpegRingbufferCb = pub type SceMpegRingbufferCb =
::Option<unsafe extern "C" fn(data: *mut c_void, num_packets: i32, param: *mut c_void) -> i32>; Option<unsafe extern "C" fn(data: *mut c_void, num_packets: i32, param: *mut c_void) -> i32>;
pub type GuCallback = ::Option<extern "C" fn(id: i32, arg: *mut c_void)>; pub type GuCallback = Option<extern "C" fn(id: i32, arg: *mut c_void)>;
pub type GuSwapBuffersCallback = pub type GuSwapBuffersCallback =
::Option<extern "C" fn(display: *mut *mut c_void, render: *mut *mut c_void)>; Option<extern "C" fn(display: *mut *mut c_void, render: *mut *mut c_void)>;
pub type SceNetAdhocctlHandler = pub type SceNetAdhocctlHandler =
::Option<unsafe extern "C" fn(flag: i32, error: i32, unknown: *mut c_void)>; Option<unsafe extern "C" fn(flag: i32, error: i32, unknown: *mut c_void)>;
pub type AdhocMatchingCallback = ::Option< pub type AdhocMatchingCallback = Option<
unsafe extern "C" fn( unsafe extern "C" fn(
matching_id: i32, matching_id: i32,
event: i32, event: i32,
@@ -93,15 +61,15 @@ pub type AdhocMatchingCallback = ::Option<
), ),
>; >;
pub type SceNetApctlHandler = ::Option< pub type SceNetApctlHandler = Option<
unsafe extern "C" fn(oldState: i32, newState: i32, event: i32, error: i32, pArg: *mut c_void), unsafe extern "C" fn(oldState: i32, newState: i32, event: i32, error: i32, pArg: *mut c_void),
>; >;
pub type HttpMallocFunction = ::Option<unsafe extern "C" fn(size: usize) -> *mut c_void>; pub type HttpMallocFunction = Option<unsafe extern "C" fn(size: usize) -> *mut c_void>;
pub type HttpReallocFunction = pub type HttpReallocFunction =
::Option<unsafe extern "C" fn(p: *mut c_void, size: usize) -> *mut c_void>; Option<unsafe extern "C" fn(p: *mut c_void, size: usize) -> *mut c_void>;
pub type HttpFreeFunction = ::Option<unsafe extern "C" fn(p: *mut c_void)>; pub type HttpFreeFunction = Option<unsafe extern "C" fn(p: *mut c_void)>;
pub type HttpPasswordCB = ::Option< pub type HttpPasswordCB = Option<
unsafe extern "C" fn( unsafe extern "C" fn(
request: i32, request: i32,
auth_type: HttpAuthType, auth_type: HttpAuthType,
@@ -1401,7 +1369,7 @@ s! {
pub struct sockaddr { pub struct sockaddr {
pub sa_len: u8, pub sa_len: u8,
pub sa_family: u8, pub sa_family: u8,
pub sa_data: [u8;14], pub sa_data: [u8; 14],
} }
pub struct in_addr { pub struct in_addr {
@@ -1448,9 +1416,9 @@ s! {
} }
pub struct GeCallbackData { pub struct GeCallbackData {
pub signal_func: ::Option<extern "C" fn(id: i32, arg: *mut c_void)>, pub signal_func: Option<extern "C" fn(id: i32, arg: *mut c_void)>,
pub signal_arg: *mut c_void, pub signal_arg: *mut c_void,
pub finish_func: ::Option<extern "C" fn(id: i32, arg: *mut c_void)>, pub finish_func: Option<extern "C" fn(id: i32, arg: *mut c_void)>,
pub finish_arg: *mut c_void, pub finish_arg: *mut c_void,
} }

View File

@@ -1,15 +1,7 @@
//! SGX C types definition //! SGX C types definition
pub type c_schar = i8; use crate::prelude::*;
pub type c_uchar = u8;
pub type c_short = i16;
pub type c_ushort = u16;
pub type c_int = i32;
pub type c_uint = u32;
pub type c_float = f32;
pub type c_double = f64;
pub type c_longlong = i64;
pub type c_ulonglong = u64;
pub type intmax_t = i64; pub type intmax_t = i64;
pub type uintmax_t = u64; pub type uintmax_t = u64;
@@ -19,29 +11,5 @@ pub type intptr_t = isize;
pub type uintptr_t = usize; pub type uintptr_t = usize;
pub type ssize_t = isize; pub type ssize_t = isize;
pub type c_char = i8;
pub type c_long = i64;
pub type c_ulong = u64;
pub const INT_MIN: c_int = -2147483648; pub const INT_MIN: c_int = -2147483648;
pub const INT_MAX: c_int = 2147483647; pub const INT_MAX: c_int = 2147483647;
cfg_if! {
if #[cfg(libc_core_cvoid)] {
pub use ::ffi::c_void;
} else {
// Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help
// enable more optimization opportunities around it recognizing things
// like malloc/free.
#[repr(u8)]
#[allow(missing_copy_implementations)]
#[allow(missing_debug_implementations)]
pub enum c_void {
// Two dummy variants so the #[repr] attribute can be used.
#[doc(hidden)]
__variant1,
#[doc(hidden)]
__variant2,
}
}
}

View File

@@ -1,4 +1 @@
pub type c_char = i8;
pub type wchar_t = u32; pub type wchar_t = u32;
pub type c_long = i64;
pub type c_ulong = u64;

View File

@@ -1,4 +1 @@
pub type c_char = i8;
pub type wchar_t = u32; pub type wchar_t = u32;
pub type c_long = i32;
pub type c_ulong = u32;

View File

@@ -2,24 +2,16 @@
//! //!
//! [SOLID]: https://solid.kmckk.com/ //! [SOLID]: https://solid.kmckk.com/
pub type c_schar = i8; use crate::prelude::*;
pub type c_uchar = u8;
pub type c_short = i16;
pub type c_ushort = u16;
pub type c_int = i32;
pub type c_uint = u32;
pub type c_float = f32;
pub type c_double = f64;
pub type c_longlong = i64;
pub type c_ulonglong = u64;
pub type intmax_t = i64; pub type intmax_t = i64;
pub type uintmax_t = u64; pub type uintmax_t = u64;
pub type uintptr_t = usize; pub type uintptr_t = usize;
pub type intptr_t = isize; pub type intptr_t = isize;
pub type ptrdiff_t = isize; pub type ptrdiff_t = isize;
pub type size_t = ::uintptr_t; pub type size_t = crate::uintptr_t;
pub type ssize_t = ::intptr_t; pub type ssize_t = intptr_t;
pub type clock_t = c_uint; pub type clock_t = c_uint;
pub type time_t = i64; pub type time_t = i64;
@@ -209,15 +201,15 @@ pub const O_EXCL: c_int = 0x400;
pub const O_TEXT: c_int = 0x100; pub const O_TEXT: c_int = 0x100;
pub const O_BINARY: c_int = 0x200; pub const O_BINARY: c_int = 0x200;
pub const O_TRUNC: c_int = 0x20; pub const O_TRUNC: c_int = 0x20;
pub const S_IEXEC: c_short = 0x0040; pub const S_IEXEC: c_short = 0o0100;
pub const S_IWRITE: c_short = 0x0080; pub const S_IWRITE: c_short = 0o0200;
pub const S_IREAD: c_short = 0x0100; pub const S_IREAD: c_short = 0o0400;
pub const S_IFCHR: c_short = 0x2000; pub const S_IFCHR: c_short = 0o2_0000;
pub const S_IFDIR: c_short = 0x4000; pub const S_IFDIR: c_short = 0o4_0000;
pub const S_IFMT: c_short = 0o160000; pub const S_IFMT: c_short = 0o16_0000;
pub const S_IFIFO: c_short = 0o0010000; pub const S_IFIFO: c_short = 0o1_0000;
pub const S_IFBLK: c_short = 0o0060000; pub const S_IFBLK: c_short = 0o6_0000;
pub const S_IFREG: c_short = 0o0100000; pub const S_IFREG: c_short = 0o10_0000;
pub const LC_ALL: c_int = 0; pub const LC_ALL: c_int = 0;
pub const LC_COLLATE: c_int = 1; pub const LC_COLLATE: c_int = 1;
@@ -405,16 +397,16 @@ pub const SIGPWR: c_int = 32;
#[cfg_attr(feature = "extra_traits", derive(Debug))] #[cfg_attr(feature = "extra_traits", derive(Debug))]
pub enum FILE {} pub enum FILE {}
impl ::Copy for FILE {} impl Copy for FILE {}
impl ::Clone for FILE { impl Clone for FILE {
fn clone(&self) -> FILE { fn clone(&self) -> FILE {
*self *self
} }
} }
#[cfg_attr(feature = "extra_traits", derive(Debug))] #[cfg_attr(feature = "extra_traits", derive(Debug))]
pub enum fpos_t {} pub enum fpos_t {}
impl ::Copy for fpos_t {} impl Copy for fpos_t {}
impl ::Clone for fpos_t { impl Clone for fpos_t {
fn clone(&self) -> fpos_t { fn clone(&self) -> fpos_t {
*self *self
} }
@@ -538,7 +530,7 @@ extern "C" {
pub fn _Exit(arg1: c_int) -> !; pub fn _Exit(arg1: c_int) -> !;
pub fn abort() -> !; pub fn abort() -> !;
pub fn abs(arg1: c_int) -> c_int; pub fn abs(arg1: c_int) -> c_int;
pub fn atexit(arg1: ::Option<unsafe extern "C" fn()>) -> c_int; pub fn atexit(arg1: Option<unsafe extern "C" fn()>) -> c_int;
pub fn atoi(arg1: *const c_char) -> c_int; pub fn atoi(arg1: *const c_char) -> c_int;
pub fn atol(arg1: *const c_char) -> c_long; pub fn atol(arg1: *const c_char) -> c_long;
pub fn itoa(arg1: c_int, arg2: *mut c_char, arg3: c_int) -> *mut c_char; pub fn itoa(arg1: c_int, arg2: *mut c_char, arg3: c_int) -> *mut c_char;
@@ -549,7 +541,7 @@ extern "C" {
arg2: *const c_void, arg2: *const c_void,
arg3: size_t, arg3: size_t,
arg4: size_t, arg4: size_t,
arg5: ::Option<unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int>, arg5: Option<unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int>,
) -> *mut c_void; ) -> *mut c_void;
pub fn calloc(arg1: size_t, arg2: size_t) -> *mut c_void; pub fn calloc(arg1: size_t, arg2: size_t) -> *mut c_void;
pub fn div(arg1: c_int, arg2: c_int) -> div_t; pub fn div(arg1: c_int, arg2: c_int) -> div_t;
@@ -563,7 +555,7 @@ extern "C" {
arg1: *mut c_void, arg1: *mut c_void,
arg2: size_t, arg2: size_t,
arg3: size_t, arg3: size_t,
arg4: ::Option<unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int>, arg4: Option<unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int>,
); );
pub fn rand() -> c_int; pub fn rand() -> c_int;
pub fn realloc(arg1: *mut c_void, arg2: size_t) -> *mut c_void; pub fn realloc(arg1: *mut c_void, arg2: size_t) -> *mut c_void;
@@ -601,7 +593,7 @@ extern "C" {
pub fn strtoll(arg1: *const c_char, arg2: *mut *mut c_char, arg3: c_int) -> c_longlong; pub fn strtoll(arg1: *const c_char, arg2: *mut *mut c_char, arg3: c_int) -> c_longlong;
pub fn strtoull(arg1: *const c_char, arg2: *mut *mut c_char, arg3: c_int) -> c_ulonglong; pub fn strtoull(arg1: *const c_char, arg2: *mut *mut c_char, arg3: c_int) -> c_ulonglong;
pub fn aligned_alloc(arg1: size_t, arg2: size_t) -> *mut c_void; pub fn aligned_alloc(arg1: size_t, arg2: size_t) -> *mut c_void;
pub fn at_quick_exit(arg1: ::Option<unsafe extern "C" fn()>) -> c_int; pub fn at_quick_exit(arg1: Option<unsafe extern "C" fn()>) -> c_int;
pub fn quick_exit(arg1: c_int); pub fn quick_exit(arg1: c_int);
pub fn setenv(arg1: *const c_char, arg2: *const c_char, arg3: c_int) -> c_int; pub fn setenv(arg1: *const c_char, arg2: *const c_char, arg3: c_int) -> c_int;
pub fn unsetenv(arg1: *const c_char) -> c_int; pub fn unsetenv(arg1: *const c_char) -> c_int;
@@ -619,13 +611,13 @@ extern "C" {
arg1: *mut c_void, arg1: *mut c_void,
arg2: size_t, arg2: size_t,
arg3: size_t, arg3: size_t,
arg4: ::Option<unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int>, arg4: Option<unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int>,
) -> c_int; ) -> c_int;
pub fn mergesort( pub fn mergesort(
arg1: *mut c_void, arg1: *mut c_void,
arg2: size_t, arg2: size_t,
arg3: size_t, arg3: size_t,
arg4: ::Option<unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int>, arg4: Option<unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int>,
) -> c_int; ) -> c_int;
pub fn radixsort( pub fn radixsort(
arg1: *mut *const c_uchar, arg1: *mut *const c_uchar,
@@ -861,36 +853,16 @@ extern "C" {
pub fn newlocale(arg1: c_int, arg2: *const c_char, arg3: locale_t) -> locale_t; pub fn newlocale(arg1: c_int, arg2: *const c_char, arg3: locale_t) -> locale_t;
// langinfo.h // langinfo.h
pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char; pub fn nl_langinfo(item: crate::nl_item) -> *mut c_char;
pub fn nl_langinfo_l(item: ::nl_item, locale: locale_t) -> *mut ::c_char; pub fn nl_langinfo_l(item: crate::nl_item, locale: locale_t) -> *mut c_char;
// malloc.h // malloc.h
pub fn memalign(align: ::size_t, size: ::size_t) -> *mut ::c_void; pub fn memalign(align: size_t, size: size_t) -> *mut c_void;
// sys/types.h // sys/types.h
pub fn lseek(arg1: c_int, arg2: __off_t, arg3: c_int) -> __off_t; pub fn lseek(arg1: c_int, arg2: __off_t, arg3: c_int) -> __off_t;
} }
cfg_if! {
if #[cfg(libc_core_cvoid)] {
pub use ::ffi::c_void;
} else {
// Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help
// enable more optimization opportunities around it recognizing things
// like malloc/free.
#[repr(u8)]
#[allow(missing_copy_implementations)]
#[allow(missing_debug_implementations)]
pub enum c_void {
// Two dummy variants so the #[repr] attribute can be used.
#[doc(hidden)]
__variant1,
#[doc(hidden)]
__variant2,
}
}
}
cfg_if! { cfg_if! {
if #[cfg(target_arch = "aarch64")] { if #[cfg(target_arch = "aarch64")] {
mod aarch64; mod aarch64;

View File

@@ -1,15 +1,5 @@
//! Switch C type definitions //! Switch C type definitions
pub type c_schar = i8;
pub type c_uchar = u8;
pub type c_short = i16;
pub type c_ushort = u16;
pub type c_int = i32;
pub type c_uint = u32;
pub type c_float = f32;
pub type c_double = f64;
pub type c_longlong = i64;
pub type c_ulonglong = u64;
pub type intmax_t = i64; pub type intmax_t = i64;
pub type uintmax_t = u64; pub type uintmax_t = u64;
@@ -20,30 +10,7 @@ pub type uintptr_t = usize;
pub type ssize_t = isize; pub type ssize_t = isize;
pub type off_t = i64; pub type off_t = i64;
pub type c_char = u8;
pub type c_long = i64;
pub type c_ulong = u64;
pub type wchar_t = u32; pub type wchar_t = u32;
pub const INT_MIN: c_int = -2147483648; pub const INT_MIN: c_int = -2147483648;
pub const INT_MAX: c_int = 2147483647; pub const INT_MAX: c_int = 2147483647;
cfg_if! {
if #[cfg(libc_core_cvoid)] {
pub use ::ffi::c_void;
} else {
// Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help
// enable more optimization opportunities around it recognizing things
// like malloc/free.
#[repr(u8)]
#[allow(missing_copy_implementations)]
#[allow(missing_debug_implementations)]
pub enum c_void {
// Two dummy variants so the #[repr] attribute can be used.
#[doc(hidden)]
__variant1,
#[doc(hidden)]
__variant2,
}
}
}

View File

@@ -5,33 +5,10 @@
#![allow(non_camel_case_types)] #![allow(non_camel_case_types)]
#![allow(non_snake_case)] #![allow(non_snake_case)]
// only supported on Rust > 1.59, so we can directly reexport c_void from core. use crate::prelude::*;
pub use core::ffi::c_void;
use Option;
pub type c_schar = i8;
pub type c_uchar = u8;
pub type c_short = i16;
pub type c_ushort = u16;
pub type c_int = i32;
pub type c_uint = u32;
pub type c_bool = i32; pub type c_bool = i32;
pub type c_float = f32;
pub type c_double = f64;
pub type c_longlong = i64;
pub type c_ulonglong = u64;
pub type intmax_t = i64; pub type intmax_t = i64;
pub type uintmax_t = u64; pub type uintmax_t = u64;
@@ -48,22 +25,12 @@ pub type ssize_t = isize;
pub type pid_t = c_int; pub type pid_t = c_int;
// aarch64 specifc
pub type c_char = u8;
pub type wchar_t = u32; pub type wchar_t = u32;
pub type c_long = i64;
pub type c_ulong = u64;
#[repr(align(16))]
pub struct _CLongDouble(pub u128);
// long double in C means A float point value, which has 128bit length. // long double in C means A float point value, which has 128bit length.
// but some bit maybe not used, so the really length of long double could be 80(x86) or 128(power pc/IEEE) // but some bit maybe not used, so the real length of long double could be 80(x86) or 128(power pc/IEEE)
// this is different from f128(not stable and not included default) in Rust, so we use u128 for FFI(Rust to C). // this is different from f128(not stable and not included default) in Rust, so we use u128 for FFI(Rust to C).
// this is unstable and will couse to memfault/data abort. // this is unstable and will cause to memfault/data abort.
pub type c_longdouble = _CLongDouble; pub type c_longdouble = _CLongDouble;
pub type pthread_t = c_ulong; pub type pthread_t = c_ulong;
@@ -94,6 +61,9 @@ pub type wctype_t = c_ulong;
pub type cmpfunc = extern "C" fn(x: *const c_void, y: *const c_void) -> c_int; pub type cmpfunc = extern "C" fn(x: *const c_void, y: *const c_void) -> c_int;
#[repr(align(16))]
pub struct _CLongDouble(pub u128);
#[repr(align(8))] #[repr(align(8))]
#[repr(C)] #[repr(C)]
pub struct pthread_cond_t { pub struct pthread_cond_t {
@@ -1109,8 +1079,8 @@ extern "C" {
pub fn pthread_cond_timedwait( pub fn pthread_cond_timedwait(
cond: *mut pthread_cond_t, cond: *mut pthread_cond_t,
lock: *mut pthread_mutex_t, lock: *mut pthread_mutex_t,
abstime: *const ::timespec, abstime: *const timespec,
) -> ::c_int; ) -> c_int;
pub fn pthread_mutexattr_setrobust(attr: *mut pthread_mutexattr_t, robustness: c_int) -> c_int; pub fn pthread_mutexattr_setrobust(attr: *mut pthread_mutexattr_t, robustness: c_int) -> c_int;

72
third_party/rust/libc/src/trusty.rs vendored Normal file
View File

@@ -0,0 +1,72 @@
use crate::prelude::*;
pub type size_t = usize;
pub type ssize_t = isize;
pub type off_t = i64;
pub type c_uint8_t = u8;
pub type c_uint16_t = u16;
pub type c_uint32_t = u32;
pub type c_uint64_t = u64;
pub type c_int8_t = i8;
pub type c_int16_t = i16;
pub type c_int32_t = i32;
pub type c_int64_t = i64;
pub type intptr_t = isize;
pub type uintptr_t = usize;
pub type time_t = c_long;
pub type clockid_t = c_int;
s! {
pub struct iovec {
pub iov_base: *mut c_void,
pub iov_len: size_t,
}
pub struct timespec {
pub tv_sec: time_t,
pub tv_nsec: c_long,
}
}
pub const PROT_READ: i32 = 1;
pub const PROT_WRITE: i32 = 2;
// Trusty only supports `CLOCK_BOOTTIME`.
pub const CLOCK_BOOTTIME: clockid_t = 7;
pub const STDOUT_FILENO: c_int = 1;
pub const STDERR_FILENO: c_int = 2;
pub const AT_PAGESZ: c_ulong = 6;
pub const MAP_FAILED: *mut c_void = !0 as *mut c_void;
extern "C" {
pub fn calloc(nobj: size_t, size: size_t) -> *mut c_void;
pub fn malloc(size: size_t) -> *mut c_void;
pub fn realloc(p: *mut c_void, size: size_t) -> *mut c_void;
pub fn free(p: *mut c_void);
pub fn memalign(align: size_t, size: size_t) -> *mut c_void;
pub fn posix_memalign(memptr: *mut *mut c_void, align: size_t, size: size_t) -> c_int;
pub fn write(fd: c_int, buf: *const c_void, count: size_t) -> ssize_t;
pub fn writev(fd: c_int, iov: *const crate::iovec, iovcnt: c_int) -> ssize_t;
pub fn close(fd: c_int) -> c_int;
pub fn strlen(cs: *const c_char) -> size_t;
pub fn getauxval(type_: c_ulong) -> c_ulong;
pub fn mmap(
addr: *mut c_void,
len: size_t,
prot: c_int,
flags: c_int,
fd: c_int,
offset: off_t,
) -> *mut c_void;
pub fn munmap(addr: *mut c_void, len: size_t) -> c_int;
pub fn clock_gettime(clk_id: crate::clockid_t, tp: *mut crate::timespec) -> c_int;
pub fn nanosleep(rqtp: *const crate::timespec, rmtp: *mut crate::timespec) -> c_int;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
pub type c_long = i64; use crate::off_t;
pub type c_ulong = u64; use crate::prelude::*;
s! { s! {
pub struct sigset_t { pub struct sigset_t {
@@ -11,287 +11,290 @@ s! {
} }
pub struct flock { pub struct flock {
pub l_type: ::c_short, pub l_type: c_short,
pub l_whence: ::c_short, pub l_whence: c_short,
pub l_sysid: ::c_uint, pub l_sysid: c_uint,
pub l_pid: ::pid_t, pub l_pid: crate::pid_t,
pub l_vfs: ::c_int, pub l_vfs: c_int,
pub l_start: ::off_t, pub l_start: off_t,
pub l_len: ::off_t, pub l_len: off_t,
} }
pub struct statvfs { pub struct statvfs {
pub f_bsize: ::c_ulong, pub f_bsize: c_ulong,
pub f_frsize: ::c_ulong, pub f_frsize: c_ulong,
pub f_blocks: ::fsblkcnt_t, pub f_blocks: crate::fsblkcnt_t,
pub f_bfree: ::fsblkcnt_t, pub f_bfree: crate::fsblkcnt_t,
pub f_bavail: ::fsblkcnt_t, pub f_bavail: crate::fsblkcnt_t,
pub f_files: ::fsfilcnt_t, pub f_files: crate::fsfilcnt_t,
pub f_ffree: ::fsfilcnt_t, pub f_ffree: crate::fsfilcnt_t,
pub f_favail: ::fsfilcnt_t, pub f_favail: crate::fsfilcnt_t,
pub f_fsid: ::c_ulong, pub f_fsid: c_ulong,
pub f_basetype: [::c_char; 16], pub f_basetype: [c_char; 16],
pub f_flag: ::c_ulong, pub f_flag: c_ulong,
pub f_namemax: ::c_ulong, pub f_namemax: c_ulong,
pub f_fstr: [::c_char; 32], pub f_fstr: [c_char; 32],
pub f_filler: [::c_ulong; 16] pub f_filler: [c_ulong; 16],
} }
pub struct pthread_rwlock_t { pub struct pthread_rwlock_t {
__rw_word: [::c_long; 10], __rw_word: [c_long; 10],
} }
pub struct pthread_cond_t { pub struct pthread_cond_t {
__cv_word: [::c_long; 6], __cv_word: [c_long; 6],
} }
pub struct pthread_mutex_t { pub struct pthread_mutex_t {
__mt_word: [::c_long; 8], __mt_word: [c_long; 8],
} }
pub struct stat { pub struct stat {
pub st_dev: ::dev_t, pub st_dev: crate::dev_t,
pub st_ino: ::ino_t, pub st_ino: crate::ino_t,
pub st_mode: ::mode_t, pub st_mode: crate::mode_t,
pub st_nlink: ::nlink_t, pub st_nlink: crate::nlink_t,
pub st_flag: ::c_ushort, pub st_flag: c_ushort,
pub st_uid: ::uid_t, pub st_uid: crate::uid_t,
pub st_gid: ::gid_t, pub st_gid: crate::gid_t,
pub st_rdev: ::dev_t, pub st_rdev: crate::dev_t,
pub st_ssize: ::c_int, pub st_ssize: c_int,
pub st_atime: ::st_timespec, pub st_atime: crate::st_timespec,
pub st_mtime: ::st_timespec, pub st_mtime: crate::st_timespec,
pub st_ctime: ::st_timespec, pub st_ctime: crate::st_timespec,
pub st_blksize: ::blksize_t, pub st_blksize: crate::blksize_t,
pub st_blocks: ::blkcnt_t, pub st_blocks: crate::blkcnt_t,
pub st_vfstype: ::c_int, pub st_vfstype: c_int,
pub st_vfs: ::c_uint, pub st_vfs: c_uint,
pub st_type: ::c_uint, pub st_type: c_uint,
pub st_gen: ::c_uint, pub st_gen: c_uint,
pub st_reserved: [::c_uint; 9], pub st_reserved: [c_uint; 9],
pub st_padto_ll: ::c_uint, pub st_padto_ll: c_uint,
pub st_size: ::off_t, pub st_size: off_t,
} }
pub struct statfs { pub struct statfs {
pub f_version: ::c_int, pub f_version: c_int,
pub f_type: ::c_int, pub f_type: c_int,
pub f_bsize: ::c_ulong, pub f_bsize: c_ulong,
pub f_blocks: ::fsblkcnt_t, pub f_blocks: crate::fsblkcnt_t,
pub f_bfree: ::fsblkcnt_t, pub f_bfree: crate::fsblkcnt_t,
pub f_bavail: ::fsblkcnt_t, pub f_bavail: crate::fsblkcnt_t,
pub f_files: ::fsblkcnt_t, pub f_files: crate::fsblkcnt_t,
pub f_ffree: ::fsblkcnt_t, pub f_ffree: crate::fsblkcnt_t,
pub f_fsid: ::fsid64_t, pub f_fsid: crate::fsid64_t,
pub f_vfstype: ::c_int, pub f_vfstype: c_int,
pub f_fsize: ::c_ulong, pub f_fsize: c_ulong,
pub f_vfsnumber: ::c_int, pub f_vfsnumber: c_int,
pub f_vfsoff: ::c_int, pub f_vfsoff: c_int,
pub f_vfslen: ::c_int, pub f_vfslen: c_int,
pub f_vfsvers: ::c_int, pub f_vfsvers: c_int,
pub f_fname: [::c_char; 32], pub f_fname: [c_char; 32],
pub f_fpack: [::c_char; 32], pub f_fpack: [c_char; 32],
pub f_name_max: ::c_int, pub f_name_max: c_int,
} }
pub struct aiocb { pub struct aiocb {
pub aio_lio_opcode: ::c_int, pub aio_lio_opcode: c_int,
pub aio_fildes: ::c_int, pub aio_fildes: c_int,
pub aio_word1: ::c_int, pub aio_word1: c_int,
pub aio_offset: ::off_t, pub aio_offset: off_t,
pub aio_buf: *mut ::c_void, pub aio_buf: *mut c_void,
pub aio_return: ::ssize_t, pub aio_return: ssize_t,
pub aio_errno: ::c_int, pub aio_errno: c_int,
pub aio_nbytes: ::size_t, pub aio_nbytes: size_t,
pub aio_reqprio: ::c_int, pub aio_reqprio: c_int,
pub aio_sigevent: ::sigevent, pub aio_sigevent: crate::sigevent,
pub aio_word2: ::c_int, pub aio_word2: c_int,
pub aio_fp: ::c_int, pub aio_fp: c_int,
pub aio_handle: *mut aiocb, pub aio_handle: *mut aiocb,
pub aio_reserved: [::c_uint; 2], pub aio_reserved: [c_uint; 2],
pub aio_sigev_tid: c_long, pub aio_sigev_tid: c_long,
} }
pub struct ucontext_t { pub struct ucontext_t {
pub __sc_onstack: ::c_int, pub __sc_onstack: c_int,
pub uc_sigmask: ::sigset_t, pub uc_sigmask: crate::sigset_t,
pub __sc_uerror: ::c_int, pub __sc_uerror: c_int,
pub uc_mcontext: ::mcontext_t, pub uc_mcontext: crate::mcontext_t,
pub uc_link: *mut ucontext_t, pub uc_link: *mut ucontext_t,
pub uc_stack: ::stack_t, pub uc_stack: crate::stack_t,
// Should be pointer to __extctx_t // Should be pointer to __extctx_t
pub __extctx: *mut ::c_void, pub __extctx: *mut c_void,
pub __extctx_magic: ::c_int, pub __extctx_magic: c_int,
pub __pad: [::c_int; 1], pub __pad: [c_int; 1],
} }
pub struct mcontext_t { pub struct mcontext_t {
pub gpr: [::c_ulonglong; 32], pub gpr: [c_ulonglong; 32],
pub msr: ::c_ulonglong, pub msr: c_ulonglong,
pub iar: ::c_ulonglong, pub iar: c_ulonglong,
pub lr: ::c_ulonglong, pub lr: c_ulonglong,
pub ctr: ::c_ulonglong, pub ctr: c_ulonglong,
pub cr: ::c_uint, pub cr: c_uint,
pub xer: ::c_uint, pub xer: c_uint,
pub fpscr: ::c_uint, pub fpscr: c_uint,
pub fpscrx: ::c_uint, pub fpscrx: c_uint,
pub except: [::c_ulonglong; 1], pub except: [c_ulonglong; 1],
// Should be array of double type // Should be array of double type
pub fpr: [::uint64_t; 32], pub fpr: [crate::uint64_t; 32],
pub fpeu: ::c_char, pub fpeu: c_char,
pub fpinfo: ::c_char, pub fpinfo: c_char,
pub fpscr24_31: ::c_char, pub fpscr24_31: c_char,
pub pad: [::c_char; 1], pub pad: [c_char; 1],
pub excp_type: ::c_int, pub excp_type: c_int,
} }
pub struct utmpx { pub struct utmpx {
pub ut_user: [::c_char; 256], pub ut_user: [c_char; 256],
pub ut_id: [::c_char; 14], pub ut_id: [c_char; 14],
pub ut_line: [::c_char; 64], pub ut_line: [c_char; 64],
pub ut_pid: ::pid_t, pub ut_pid: crate::pid_t,
pub ut_type: ::c_short, pub ut_type: c_short,
pub ut_tv: ::timeval, pub ut_tv: crate::timeval,
pub ut_host: [::c_char; 256], pub ut_host: [c_char; 256],
pub __dbl_word_pad: ::c_int, pub __dbl_word_pad: c_int,
pub __reservedA: [::c_int; 2], pub __reservedA: [c_int; 2],
pub __reservedV: [::c_int; 6], pub __reservedV: [c_int; 6],
} }
pub struct pthread_spinlock_t { pub struct pthread_spinlock_t {
pub __sp_word: [::c_long; 3], pub __sp_word: [c_long; 3],
} }
pub struct pthread_barrier_t { pub struct pthread_barrier_t {
pub __br_word: [::c_long; 5], pub __br_word: [c_long; 5],
} }
pub struct msqid_ds { pub struct msqid_ds {
pub msg_perm: ::ipc_perm, pub msg_perm: crate::ipc_perm,
pub msg_first: ::c_uint, pub msg_first: c_uint,
pub msg_last: ::c_uint, pub msg_last: c_uint,
pub msg_cbytes: ::c_uint, pub msg_cbytes: c_uint,
pub msg_qnum: ::c_uint, pub msg_qnum: c_uint,
pub msg_qbytes: ::c_ulong, pub msg_qbytes: c_ulong,
pub msg_lspid: ::pid_t, pub msg_lspid: crate::pid_t,
pub msg_lrpid: ::pid_t, pub msg_lrpid: crate::pid_t,
pub msg_stime: ::time_t, pub msg_stime: crate::time_t,
pub msg_rtime: ::time_t, pub msg_rtime: crate::time_t,
pub msg_ctime: ::time_t, pub msg_ctime: crate::time_t,
pub msg_rwait: ::c_int, pub msg_rwait: c_int,
pub msg_wwait: ::c_int, pub msg_wwait: c_int,
pub msg_reqevents: ::c_ushort, pub msg_reqevents: c_ushort,
} }
} }
s_no_extra_traits! { s_no_extra_traits! {
pub struct siginfo_t { pub struct siginfo_t {
pub si_signo: ::c_int, pub si_signo: c_int,
pub si_errno: ::c_int, pub si_errno: c_int,
pub si_code: ::c_int, pub si_code: c_int,
pub si_pid: ::pid_t, pub si_pid: crate::pid_t,
pub si_uid: ::uid_t, pub si_uid: crate::uid_t,
pub si_status: ::c_int, pub si_status: c_int,
pub si_addr: *mut ::c_void, pub si_addr: *mut c_void,
pub si_band: ::c_long, pub si_band: c_long,
pub si_value: ::sigval, pub si_value: crate::sigval,
pub __si_flags: ::c_int, pub __si_flags: c_int,
pub __pad: [::c_int; 3], pub __pad: [c_int; 3],
} }
#[cfg(libc_union)]
pub union _kernel_simple_lock { pub union _kernel_simple_lock {
pub _slock: ::c_long, pub _slock: c_long,
// Should be pointer to 'lock_data_instrumented' // Should be pointer to 'lock_data_instrumented'
pub _slockp: *mut ::c_void, pub _slockp: *mut c_void,
} }
pub struct fileops_t { pub struct fileops_t {
pub fo_rw: extern fn(file: *mut file, rw: ::uio_rw, io: *mut ::c_void, ext: ::c_long, pub fo_rw: extern "C" fn(
secattr: *mut ::c_void) -> ::c_int, file: *mut file,
pub fo_ioctl: extern fn(file: *mut file, a: ::c_long, b: ::caddr_t, c: ::c_long, rw: crate::uio_rw,
d: ::c_long) -> ::c_int, io: *mut c_void,
pub fo_select: extern fn(file: *mut file, a: ::c_int, b: *mut ::c_ushort, ext: c_long,
c: extern fn()) -> ::c_int, secattr: *mut c_void,
pub fo_close: extern fn(file: *mut file) -> ::c_int, ) -> c_int,
pub fo_fstat: extern fn(file: *mut file, sstat: *mut ::stat) -> ::c_int, pub fo_ioctl: extern "C" fn(
file: *mut file,
a: c_long,
b: crate::caddr_t,
c: c_long,
d: c_long,
) -> c_int,
pub fo_select:
extern "C" fn(file: *mut file, a: c_int, b: *mut c_ushort, c: extern "C" fn()) -> c_int,
pub fo_close: extern "C" fn(file: *mut file) -> c_int,
pub fo_fstat: extern "C" fn(file: *mut file, sstat: *mut crate::stat) -> c_int,
} }
pub struct file { pub struct file {
pub f_flag: ::c_long, pub f_flag: c_long,
pub f_count: ::c_int, pub f_count: c_int,
pub f_options: ::c_short, pub f_options: c_short,
pub f_type: ::c_short, pub f_type: c_short,
// Should be pointer to 'vnode' // Should be pointer to 'vnode'
pub f_data: *mut ::c_void, pub f_data: *mut c_void,
pub f_offset: ::c_longlong, pub f_offset: c_longlong,
pub f_dir_off: ::c_long, pub f_dir_off: c_long,
// Should be pointer to 'cred' // Should be pointer to 'cred'
pub f_cred: *mut ::c_void, pub f_cred: *mut c_void,
#[cfg(libc_union)]
pub f_lock: _kernel_simple_lock, pub f_lock: _kernel_simple_lock,
#[cfg(libc_union)]
pub f_offset_lock: _kernel_simple_lock, pub f_offset_lock: _kernel_simple_lock,
pub f_vinfo: ::caddr_t, pub f_vinfo: crate::caddr_t,
pub f_ops: *mut fileops_t, pub f_ops: *mut fileops_t,
pub f_parentp: ::caddr_t, pub f_parentp: crate::caddr_t,
pub f_fnamep: ::caddr_t, pub f_fnamep: crate::caddr_t,
pub f_fdata: [::c_char; 160], pub f_fdata: [c_char; 160],
} }
#[cfg(libc_union)]
pub union __ld_info_file { pub union __ld_info_file {
pub _ldinfo_fd: ::c_int, pub _ldinfo_fd: c_int,
pub _ldinfo_fp: *mut file, pub _ldinfo_fp: *mut file,
pub _core_offset: ::c_long, pub _core_offset: c_long,
} }
pub struct ld_info { pub struct ld_info {
pub ldinfo_next: ::c_uint, pub ldinfo_next: c_uint,
pub ldinfo_flags: ::c_uint, pub ldinfo_flags: c_uint,
#[cfg(libc_union)]
pub _file: __ld_info_file, pub _file: __ld_info_file,
pub ldinfo_textorg: *mut ::c_void, pub ldinfo_textorg: *mut c_void,
pub ldinfo_textsize: ::c_ulong, pub ldinfo_textsize: c_ulong,
pub ldinfo_dataorg: *mut ::c_void, pub ldinfo_dataorg: *mut c_void,
pub ldinfo_datasize: ::c_ulong, pub ldinfo_datasize: c_ulong,
pub ldinfo_filename: [::c_char; 2], pub ldinfo_filename: [c_char; 2],
} }
#[cfg(libc_union)]
pub union __pollfd_ext_u { pub union __pollfd_ext_u {
pub addr: *mut ::c_void, pub addr: *mut c_void,
pub data32: u32, pub data32: u32,
pub data: u64, pub data: u64,
} }
pub struct pollfd_ext { pub struct pollfd_ext {
pub fd: ::c_int, pub fd: c_int,
pub events: ::c_ushort, pub events: c_ushort,
pub revents: ::c_ushort, pub revents: c_ushort,
#[cfg(libc_union)]
pub data: __pollfd_ext_u, pub data: __pollfd_ext_u,
} }
} }
impl siginfo_t { impl siginfo_t {
pub unsafe fn si_addr(&self) -> *mut ::c_void { pub unsafe fn si_addr(&self) -> *mut c_void {
self.si_addr self.si_addr
} }
pub unsafe fn si_value(&self) -> ::sigval { pub unsafe fn si_value(&self) -> crate::sigval {
self.si_value self.si_value
} }
pub unsafe fn si_pid(&self) -> ::pid_t { pub unsafe fn si_pid(&self) -> crate::pid_t {
self.si_pid self.si_pid
} }
pub unsafe fn si_uid(&self) -> ::uid_t { pub unsafe fn si_uid(&self) -> crate::uid_t {
self.si_uid self.si_uid
} }
pub unsafe fn si_status(&self) -> ::c_int { pub unsafe fn si_status(&self) -> c_int {
self.si_status self.si_status
} }
} }
@@ -300,10 +303,6 @@ cfg_if! {
if #[cfg(feature = "extra_traits")] { if #[cfg(feature = "extra_traits")] {
impl PartialEq for siginfo_t { impl PartialEq for siginfo_t {
fn eq(&self, other: &siginfo_t) -> bool { fn eq(&self, other: &siginfo_t) -> bool {
#[cfg(libc_union)]
let value_eq = self.si_value == other.si_value;
#[cfg(not(libc_union))]
let value_eq = true;
self.si_signo == other.si_signo self.si_signo == other.si_signo
&& self.si_errno == other.si_errno && self.si_errno == other.si_errno
&& self.si_code == other.si_code && self.si_code == other.si_code
@@ -313,29 +312,28 @@ cfg_if! {
&& self.si_addr == other.si_addr && self.si_addr == other.si_addr
&& self.si_band == other.si_band && self.si_band == other.si_band
&& self.__si_flags == other.__si_flags && self.__si_flags == other.__si_flags
&& value_eq && self.si_value == other.si_value
} }
} }
impl Eq for siginfo_t {} impl Eq for siginfo_t {}
impl ::fmt::Debug for siginfo_t { impl fmt::Debug for siginfo_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let mut struct_formatter = f.debug_struct("siginfo_t"); f.debug_struct("siginfo_t")
struct_formatter.field("si_signo", &self.si_signo); .field("si_signo", &self.si_signo)
struct_formatter.field("si_errno", &self.si_errno); .field("si_errno", &self.si_errno)
struct_formatter.field("si_code", &self.si_code); .field("si_code", &self.si_code)
struct_formatter.field("si_pid", &self.si_pid); .field("si_pid", &self.si_pid)
struct_formatter.field("si_uid", &self.si_uid); .field("si_uid", &self.si_uid)
struct_formatter.field("si_status", &self.si_status); .field("si_status", &self.si_status)
struct_formatter.field("si_addr", &self.si_addr); .field("si_addr", &self.si_addr)
struct_formatter.field("si_band", &self.si_band); .field("si_band", &self.si_band)
#[cfg(libc_union)] .field("si_value", &self.si_value)
struct_formatter.field("si_value", &self.si_value); .field("__si_flags", &self.__si_flags)
struct_formatter.field("__si_flags", &self.__si_flags); .finish()
struct_formatter.finish()
} }
} }
impl ::hash::Hash for siginfo_t { impl hash::Hash for siginfo_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.si_signo.hash(state); self.si_signo.hash(state);
self.si_errno.hash(state); self.si_errno.hash(state);
self.si_code.hash(state); self.si_code.hash(state);
@@ -344,35 +342,19 @@ cfg_if! {
self.si_status.hash(state); self.si_status.hash(state);
self.si_addr.hash(state); self.si_addr.hash(state);
self.si_band.hash(state); self.si_band.hash(state);
#[cfg(libc_union)]
self.si_value.hash(state); self.si_value.hash(state);
self.__si_flags.hash(state); self.__si_flags.hash(state);
} }
} }
#[cfg(libc_union)]
impl PartialEq for _kernel_simple_lock { impl PartialEq for _kernel_simple_lock {
fn eq(&self, other: &_kernel_simple_lock) -> bool { fn eq(&self, other: &_kernel_simple_lock) -> bool {
unsafe { unsafe { self._slock == other._slock && self._slockp == other._slockp }
self._slock == other._slock
&& self._slockp == other._slockp
}
} }
} }
#[cfg(libc_union)]
impl Eq for _kernel_simple_lock {} impl Eq for _kernel_simple_lock {}
#[cfg(libc_union)] impl hash::Hash for _kernel_simple_lock {
impl ::fmt::Debug for _kernel_simple_lock { fn hash<H: hash::Hasher>(&self, state: &mut H) {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
f.debug_struct("_kernel_simple_lock")
.field("_slock", unsafe { &self._slock })
.field("_slockp", unsafe { &self._slockp })
.finish()
}
}
#[cfg(libc_union)]
impl ::hash::Hash for _kernel_simple_lock {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
unsafe { unsafe {
self._slock.hash(state); self._slock.hash(state);
self._slockp.hash(state); self._slockp.hash(state);
@@ -390,19 +372,19 @@ cfg_if! {
} }
} }
impl Eq for fileops_t {} impl Eq for fileops_t {}
impl ::fmt::Debug for fileops_t { impl fmt::Debug for fileops_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let mut struct_formatter = f.debug_struct("fileops_t"); f.debug_struct("fileops_t")
struct_formatter.field("fo_rw", &self.fo_rw); .field("fo_rw", &self.fo_rw)
struct_formatter.field("fo_ioctl", &self.fo_ioctl); .field("fo_ioctl", &self.fo_ioctl)
struct_formatter.field("fo_select", &self.fo_select); .field("fo_select", &self.fo_select)
struct_formatter.field("fo_close", &self.fo_close); .field("fo_close", &self.fo_close)
struct_formatter.field("fo_fstat", &self.fo_fstat); .field("fo_fstat", &self.fo_fstat)
struct_formatter.finish() .finish()
} }
} }
impl ::hash::Hash for fileops_t { impl hash::Hash for fileops_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.fo_rw.hash(state); self.fo_rw.hash(state);
self.fo_ioctl.hash(state); self.fo_ioctl.hash(state);
self.fo_select.hash(state); self.fo_select.hash(state);
@@ -413,11 +395,6 @@ cfg_if! {
impl PartialEq for file { impl PartialEq for file {
fn eq(&self, other: &file) -> bool { fn eq(&self, other: &file) -> bool {
#[cfg(libc_union)]
let lock_eq = self.f_lock == other.f_lock
&& self.f_offset_lock == other.f_offset_lock;
#[cfg(not(libc_union))]
let lock_eq = true;
self.f_flag == other.f_flag self.f_flag == other.f_flag
&& self.f_count == other.f_count && self.f_count == other.f_count
&& self.f_options == other.f_options && self.f_options == other.f_options
@@ -431,35 +408,34 @@ cfg_if! {
&& self.f_parentp == other.f_parentp && self.f_parentp == other.f_parentp
&& self.f_fnamep == other.f_fnamep && self.f_fnamep == other.f_fnamep
&& self.f_fdata == other.f_fdata && self.f_fdata == other.f_fdata
&& lock_eq && self.f_lock == other.f_lock
&& self.f_offset_lock == other.f_offset_lock
} }
} }
impl Eq for file {} impl Eq for file {}
impl ::fmt::Debug for file { impl fmt::Debug for file {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let mut struct_formatter = f.debug_struct("file"); f.debug_struct("file")
struct_formatter.field("f_flag", &self.f_flag); .field("f_flag", &self.f_flag)
struct_formatter.field("f_count", &self.f_count); .field("f_count", &self.f_count)
struct_formatter.field("f_options", &self.f_options); .field("f_options", &self.f_options)
struct_formatter.field("f_type", &self.f_type); .field("f_type", &self.f_type)
struct_formatter.field("f_data", &self.f_data); .field("f_data", &self.f_data)
struct_formatter.field("f_offset", &self.f_offset); .field("f_offset", &self.f_offset)
struct_formatter.field("f_dir_off", &self.f_dir_off); .field("f_dir_off", &self.f_dir_off)
struct_formatter.field("f_cred", &self.f_cred); .field("f_cred", &self.f_cred)
#[cfg(libc_union)] .field("f_lock", &self.f_lock)
struct_formatter.field("f_lock", &self.f_lock); .field("f_offset_lock", &self.f_offset_lock)
#[cfg(libc_union)] .field("f_vinfo", &self.f_vinfo)
struct_formatter.field("f_offset_lock", &self.f_offset_lock); .field("f_ops", &self.f_ops)
struct_formatter.field("f_vinfo", &self.f_vinfo); .field("f_parentp", &self.f_parentp)
struct_formatter.field("f_ops", &self.f_ops); .field("f_fnamep", &self.f_fnamep)
struct_formatter.field("f_parentp", &self.f_parentp); .field("f_fdata", &self.f_fdata)
struct_formatter.field("f_fnamep", &self.f_fnamep); .finish()
struct_formatter.field("f_fdata", &self.f_fdata);
struct_formatter.finish()
} }
} }
impl ::hash::Hash for file { impl hash::Hash for file {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.f_flag.hash(state); self.f_flag.hash(state);
self.f_count.hash(state); self.f_count.hash(state);
self.f_options.hash(state); self.f_options.hash(state);
@@ -468,9 +444,7 @@ cfg_if! {
self.f_offset.hash(state); self.f_offset.hash(state);
self.f_dir_off.hash(state); self.f_dir_off.hash(state);
self.f_cred.hash(state); self.f_cred.hash(state);
#[cfg(libc_union)]
self.f_lock.hash(state); self.f_lock.hash(state);
#[cfg(libc_union)]
self.f_offset_lock.hash(state); self.f_offset_lock.hash(state);
self.f_vinfo.hash(state); self.f_vinfo.hash(state);
self.f_ops.hash(state); self.f_ops.hash(state);
@@ -480,7 +454,6 @@ cfg_if! {
} }
} }
#[cfg(libc_union)]
impl PartialEq for __ld_info_file { impl PartialEq for __ld_info_file {
fn eq(&self, other: &__ld_info_file) -> bool { fn eq(&self, other: &__ld_info_file) -> bool {
unsafe { unsafe {
@@ -490,21 +463,9 @@ cfg_if! {
} }
} }
} }
#[cfg(libc_union)]
impl Eq for __ld_info_file {} impl Eq for __ld_info_file {}
#[cfg(libc_union)] impl hash::Hash for __ld_info_file {
impl ::fmt::Debug for __ld_info_file { fn hash<H: hash::Hasher>(&self, state: &mut H) {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
f.debug_struct("__ld_info_file")
.field("_ldinfo_fd", unsafe { &self._ldinfo_fd })
.field("_ldinfo_fp", unsafe { &self._ldinfo_fp })
.field("_core_offset", unsafe { &self._core_offset })
.finish()
}
}
#[cfg(libc_union)]
impl ::hash::Hash for __ld_info_file {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
unsafe { unsafe {
self._ldinfo_fd.hash(state); self._ldinfo_fd.hash(state);
self._ldinfo_fp.hash(state); self._ldinfo_fp.hash(state);
@@ -515,10 +476,6 @@ cfg_if! {
impl PartialEq for ld_info { impl PartialEq for ld_info {
fn eq(&self, other: &ld_info) -> bool { fn eq(&self, other: &ld_info) -> bool {
#[cfg(libc_union)]
let file_eq = self._file == other._file;
#[cfg(not(libc_union))]
let file_eq = true;
self.ldinfo_next == other.ldinfo_next self.ldinfo_next == other.ldinfo_next
&& self.ldinfo_flags == other.ldinfo_flags && self.ldinfo_flags == other.ldinfo_flags
&& self.ldinfo_textorg == other.ldinfo_textorg && self.ldinfo_textorg == other.ldinfo_textorg
@@ -526,27 +483,26 @@ cfg_if! {
&& self.ldinfo_dataorg == other.ldinfo_dataorg && self.ldinfo_dataorg == other.ldinfo_dataorg
&& self.ldinfo_datasize == other.ldinfo_datasize && self.ldinfo_datasize == other.ldinfo_datasize
&& self.ldinfo_filename == other.ldinfo_filename && self.ldinfo_filename == other.ldinfo_filename
&& file_eq && self._file == other._file
} }
} }
impl Eq for ld_info {} impl Eq for ld_info {}
impl ::fmt::Debug for ld_info { impl fmt::Debug for ld_info {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let mut struct_formatter = f.debug_struct("ld_info"); f.debug_struct("ld_info")
struct_formatter.field("ldinfo_next", &self.ldinfo_next); .field("ldinfo_next", &self.ldinfo_next)
struct_formatter.field("ldinfo_flags", &self.ldinfo_flags); .field("ldinfo_flags", &self.ldinfo_flags)
struct_formatter.field("ldinfo_textorg", &self.ldinfo_textorg); .field("ldinfo_textorg", &self.ldinfo_textorg)
struct_formatter.field("ldinfo_textsize", &self.ldinfo_textsize); .field("ldinfo_textsize", &self.ldinfo_textsize)
struct_formatter.field("ldinfo_dataorg", &self.ldinfo_dataorg); .field("ldinfo_dataorg", &self.ldinfo_dataorg)
struct_formatter.field("ldinfo_datasize", &self.ldinfo_datasize); .field("ldinfo_datasize", &self.ldinfo_datasize)
struct_formatter.field("ldinfo_filename", &self.ldinfo_filename); .field("ldinfo_filename", &self.ldinfo_filename)
#[cfg(libc_union)] .field("_file", &self._file)
struct_formatter.field("_file", &self._file); .finish()
struct_formatter.finish()
} }
} }
impl ::hash::Hash for ld_info { impl hash::Hash for ld_info {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.ldinfo_next.hash(state); self.ldinfo_next.hash(state);
self.ldinfo_flags.hash(state); self.ldinfo_flags.hash(state);
self.ldinfo_textorg.hash(state); self.ldinfo_textorg.hash(state);
@@ -554,12 +510,10 @@ cfg_if! {
self.ldinfo_dataorg.hash(state); self.ldinfo_dataorg.hash(state);
self.ldinfo_datasize.hash(state); self.ldinfo_datasize.hash(state);
self.ldinfo_filename.hash(state); self.ldinfo_filename.hash(state);
#[cfg(libc_union)]
self._file.hash(state); self._file.hash(state);
} }
} }
#[cfg(libc_union)]
impl PartialEq for __pollfd_ext_u { impl PartialEq for __pollfd_ext_u {
fn eq(&self, other: &__pollfd_ext_u) -> bool { fn eq(&self, other: &__pollfd_ext_u) -> bool {
unsafe { unsafe {
@@ -569,21 +523,9 @@ cfg_if! {
} }
} }
} }
#[cfg(libc_union)]
impl Eq for __pollfd_ext_u {} impl Eq for __pollfd_ext_u {}
#[cfg(libc_union)] impl hash::Hash for __pollfd_ext_u {
impl ::fmt::Debug for __pollfd_ext_u { fn hash<H: hash::Hasher>(&self, state: &mut H) {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
f.debug_struct("__pollfd_ext_u")
.field("addr", unsafe { &self.addr })
.field("data32", unsafe { &self.data32 })
.field("data", unsafe { &self.data })
.finish()
}
}
#[cfg(libc_union)]
impl ::hash::Hash for __pollfd_ext_u {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
unsafe { unsafe {
self.addr.hash(state); self.addr.hash(state);
self.data.hash(state); self.data.hash(state);
@@ -594,34 +536,28 @@ cfg_if! {
impl PartialEq for pollfd_ext { impl PartialEq for pollfd_ext {
fn eq(&self, other: &pollfd_ext) -> bool { fn eq(&self, other: &pollfd_ext) -> bool {
#[cfg(libc_union)]
let data_eq = self.data == other.data;
#[cfg(not(libc_union))]
let data_eq = true;
self.fd == other.fd self.fd == other.fd
&& self.events == other.events && self.events == other.events
&& self.revents == other.revents && self.revents == other.revents
&& data_eq && self.data == other.data
} }
} }
impl Eq for pollfd_ext {} impl Eq for pollfd_ext {}
impl ::fmt::Debug for pollfd_ext { impl fmt::Debug for pollfd_ext {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let mut struct_formatter = f.debug_struct("pollfd_ext"); f.debug_struct("pollfd_ext")
struct_formatter.field("fd", &self.fd); .field("fd", &self.fd)
struct_formatter.field("events", &self.events); .field("events", &self.events)
struct_formatter.field("revents", &self.revents); .field("revents", &self.revents)
#[cfg(libc_union)] .field("data", &self.data)
struct_formatter.field("data", &self.data); .finish()
struct_formatter.finish()
} }
} }
impl ::hash::Hash for pollfd_ext { impl hash::Hash for pollfd_ext {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.fd.hash(state); self.fd.hash(state);
self.events.hash(state); self.events.hash(state);
self.revents.hash(state); self.revents.hash(state);
#[cfg(libc_union)]
self.data.hash(state); self.data.hash(state);
} }
} }
@@ -637,8 +573,8 @@ pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t {
pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t { pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t {
__rw_word: [2, 0, 0, 0, 0, 0, 0, 0, 0, 0], __rw_word: [2, 0, 0, 0, 0, 0, 0, 0, 0, 0],
}; };
pub const RLIM_INFINITY: ::c_ulong = 0x7fffffffffffffff; pub const RLIM_INFINITY: c_ulong = 0x7fffffffffffffff;
extern "C" { extern "C" {
pub fn getsystemcfg(label: ::c_int) -> ::c_ulong; pub fn getsystemcfg(label: c_int) -> c_ulong;
} }

View File

@@ -1,14 +0,0 @@
s! {
#[repr(align(4))]
pub struct in6_addr {
pub s6_addr: [u8; 16],
}
}
pub const IN6ADDR_LOOPBACK_INIT: in6_addr = in6_addr {
s6_addr: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
};
pub const IN6ADDR_ANY_INIT: in6_addr = in6_addr {
s6_addr: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
};

View File

@@ -1,7 +0,0 @@
s_no_extra_traits! {
#[allow(missing_debug_implementations)]
#[repr(align(16))]
pub struct max_align_t {
priv_: [f64; 2]
}
}

View File

@@ -1,19 +1,19 @@
//! 32-bit specific Apple (ios/darwin) definitions //! 32-bit specific Apple (ios/darwin) definitions
pub type c_long = i32; use crate::prelude::*;
pub type c_ulong = u32;
pub type boolean_t = ::c_int; pub type boolean_t = c_int;
s! { s! {
pub struct if_data { pub struct if_data {
pub ifi_type: ::c_uchar, pub ifi_type: c_uchar,
pub ifi_typelen: ::c_uchar, pub ifi_typelen: c_uchar,
pub ifi_physical: ::c_uchar, pub ifi_physical: c_uchar,
pub ifi_addrlen: ::c_uchar, pub ifi_addrlen: c_uchar,
pub ifi_hdrlen: ::c_uchar, pub ifi_hdrlen: c_uchar,
pub ifi_recvquota: ::c_uchar, pub ifi_recvquota: c_uchar,
pub ifi_xmitquota: ::c_uchar, pub ifi_xmitquota: c_uchar,
pub ifi_unused1: ::c_uchar, pub ifi_unused1: c_uchar,
pub ifi_mtu: u32, pub ifi_mtu: u32,
pub ifi_metric: u32, pub ifi_metric: u32,
pub ifi_baudrate: u32, pub ifi_baudrate: u32,
@@ -30,7 +30,7 @@ s! {
pub ifi_noproto: u32, pub ifi_noproto: u32,
pub ifi_recvtiming: u32, pub ifi_recvtiming: u32,
pub ifi_xmittiming: u32, pub ifi_xmittiming: u32,
pub ifi_lastchange: ::timeval, pub ifi_lastchange: crate::timeval,
pub ifi_unused2: u32, pub ifi_unused2: u32,
pub ifi_hwassist: u32, pub ifi_hwassist: u32,
pub ifi_reserved1: u32, pub ifi_reserved1: u32,
@@ -38,26 +38,32 @@ s! {
} }
pub struct bpf_hdr { pub struct bpf_hdr {
pub bh_tstamp: ::timeval, pub bh_tstamp: crate::timeval,
pub bh_caplen: u32, pub bh_caplen: u32,
pub bh_datalen: u32, pub bh_datalen: u32,
pub bh_hdrlen: ::c_ushort, pub bh_hdrlen: c_ushort,
} }
pub struct malloc_zone_t { pub struct malloc_zone_t {
__private: [::uintptr_t; 18], // FIXME: keeping private for now __private: [crate::uintptr_t; 18], // FIXME(macos): keeping private for now
} }
} }
s_no_extra_traits! { s_no_extra_traits! {
pub struct pthread_attr_t { pub struct pthread_attr_t {
__sig: c_long, __sig: c_long,
__opaque: [::c_char; 36] __opaque: [c_char; 36],
} }
pub struct pthread_once_t { pub struct pthread_once_t {
__sig: c_long, __sig: c_long,
__opaque: [::c_char; ::__PTHREAD_ONCE_SIZE__], __opaque: [c_char; crate::__PTHREAD_ONCE_SIZE__],
}
#[allow(missing_debug_implementations)]
#[repr(align(16))]
pub struct max_align_t {
priv_: [f64; 2],
} }
} }
@@ -66,23 +72,24 @@ cfg_if! {
impl PartialEq for pthread_attr_t { impl PartialEq for pthread_attr_t {
fn eq(&self, other: &pthread_attr_t) -> bool { fn eq(&self, other: &pthread_attr_t) -> bool {
self.__sig == other.__sig self.__sig == other.__sig
&& self.__opaque && self
.iter() .__opaque
.zip(other.__opaque.iter()) .iter()
.all(|(a,b)| a == b) .zip(other.__opaque.iter())
.all(|(a, b)| a == b)
} }
} }
impl Eq for pthread_attr_t {} impl Eq for pthread_attr_t {}
impl ::fmt::Debug for pthread_attr_t { impl fmt::Debug for pthread_attr_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("pthread_attr_t") f.debug_struct("pthread_attr_t")
.field("__sig", &self.__sig) .field("__sig", &self.__sig)
// FIXME: .field("__opaque", &self.__opaque) // FIXME(debug): .field("__opaque", &self.__opaque)
.finish() .finish()
} }
} }
impl ::hash::Hash for pthread_attr_t { impl hash::Hash for pthread_attr_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.__sig.hash(state); self.__sig.hash(state);
self.__opaque.hash(state); self.__opaque.hash(state);
} }
@@ -90,22 +97,23 @@ cfg_if! {
impl PartialEq for pthread_once_t { impl PartialEq for pthread_once_t {
fn eq(&self, other: &pthread_once_t) -> bool { fn eq(&self, other: &pthread_once_t) -> bool {
self.__sig == other.__sig self.__sig == other.__sig
&& self.__opaque && self
.iter() .__opaque
.zip(other.__opaque.iter()) .iter()
.all(|(a,b)| a == b) .zip(other.__opaque.iter())
.all(|(a, b)| a == b)
} }
} }
impl Eq for pthread_once_t {} impl Eq for pthread_once_t {}
impl ::fmt::Debug for pthread_once_t { impl fmt::Debug for pthread_once_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("pthread_once_t") f.debug_struct("pthread_once_t")
.field("__sig", &self.__sig) .field("__sig", &self.__sig)
.finish() .finish()
} }
} }
impl ::hash::Hash for pthread_once_t { impl hash::Hash for pthread_once_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.__sig.hash(state); self.__sig.hash(state);
self.__opaque.hash(state); self.__opaque.hash(state);
} }
@@ -115,7 +123,7 @@ cfg_if! {
#[doc(hidden)] #[doc(hidden)]
#[deprecated(since = "0.2.55")] #[deprecated(since = "0.2.55")]
pub const NET_RT_MAXID: ::c_int = 10; pub const NET_RT_MAXID: c_int = 10;
pub const __PTHREAD_MUTEX_SIZE__: usize = 40; pub const __PTHREAD_MUTEX_SIZE__: usize = 40;
pub const __PTHREAD_COND_SIZE__: usize = 24; pub const __PTHREAD_COND_SIZE__: usize = 24;
@@ -124,31 +132,20 @@ pub const __PTHREAD_ONCE_SIZE__: usize = 4;
pub const __PTHREAD_RWLOCK_SIZE__: usize = 124; pub const __PTHREAD_RWLOCK_SIZE__: usize = 124;
pub const __PTHREAD_RWLOCKATTR_SIZE__: usize = 12; pub const __PTHREAD_RWLOCKATTR_SIZE__: usize = 12;
pub const TIOCTIMESTAMP: ::c_ulong = 0x40087459; pub const TIOCTIMESTAMP: c_ulong = 0x40087459;
pub const TIOCDCDTIMESTAMP: ::c_ulong = 0x40087458; pub const TIOCDCDTIMESTAMP: c_ulong = 0x40087458;
pub const BIOCSETF: ::c_ulong = 0x80084267; pub const BIOCSETF: c_ulong = 0x80084267;
pub const BIOCSRTIMEOUT: ::c_ulong = 0x8008426d; pub const BIOCSRTIMEOUT: c_ulong = 0x8008426d;
pub const BIOCGRTIMEOUT: ::c_ulong = 0x4008426e; pub const BIOCGRTIMEOUT: c_ulong = 0x4008426e;
pub const BIOCSETFNR: ::c_ulong = 0x8008427e; pub const BIOCSETFNR: c_ulong = 0x8008427e;
const _PTHREAD_ONCE_SIG_INIT: c_long = 0x30B1BCBA; const _PTHREAD_ONCE_SIG_INIT: c_long = 0x30B1BCBA;
pub const PTHREAD_ONCE_INIT: ::pthread_once_t = ::pthread_once_t { pub const PTHREAD_ONCE_INIT: crate::pthread_once_t = crate::pthread_once_t {
__sig: _PTHREAD_ONCE_SIG_INIT, __sig: _PTHREAD_ONCE_SIG_INIT,
__opaque: [0; 4], __opaque: [0; 4],
}; };
extern "C" { extern "C" {
pub fn exchangedata( pub fn exchangedata(path1: *const c_char, path2: *const c_char, options: c_ulong) -> c_int;
path1: *const ::c_char,
path2: *const ::c_char,
options: ::c_ulong,
) -> ::c_int;
}
cfg_if! {
if #[cfg(libc_align)] {
mod align;
pub use self::align::*;
}
} }

View File

@@ -1,55 +0,0 @@
pub type mcontext_t = *mut __darwin_mcontext64;
s_no_extra_traits! {
#[allow(missing_debug_implementations)]
pub struct max_align_t {
priv_: f64
}
}
s! {
pub struct ucontext_t {
pub uc_onstack: ::c_int,
pub uc_sigmask: ::sigset_t,
pub uc_stack: ::stack_t,
pub uc_link: *mut ::ucontext_t,
pub uc_mcsize: usize,
pub uc_mcontext: mcontext_t,
}
pub struct __darwin_mcontext64 {
pub __es: __darwin_arm_exception_state64,
pub __ss: __darwin_arm_thread_state64,
pub __ns: __darwin_arm_neon_state64,
}
pub struct __darwin_arm_exception_state64 {
pub __far: u64,
pub __esr: u32,
pub __exception: u32,
}
pub struct __darwin_arm_thread_state64 {
pub __x: [u64; 29],
pub __fp: u64,
pub __lr: u64,
pub __sp: u64,
pub __pc: u64,
pub __cpsr: u32,
pub __pad: u32,
}
// This type natively uses a uint128, but for a while we hacked
// it in with repr(align) and `[u64; 2]`. uint128 isn't available
// all the way back to our earliest supported versions so we
// preserver the old shim.
#[cfg_attr(not(libc_int128), repr(align(16)))]
pub struct __darwin_arm_neon_state64 {
#[cfg(libc_int128)]
pub __v: [::__uint128_t; 32],
#[cfg(not(libc_int128))]
pub __v: [[u64; 2]; 32],
pub __fpsr: u32,
pub __fpcr: u32,
}
}

View File

@@ -1,14 +1,54 @@
pub type boolean_t = ::c_int; use crate::prelude::*;
pub type boolean_t = c_int;
pub type mcontext_t = *mut __darwin_mcontext64;
s! { s! {
pub struct malloc_zone_t { pub struct malloc_zone_t {
__private: [::uintptr_t; 18], // FIXME: needs arm64 auth pointers support __private: [crate::uintptr_t; 18], // FIXME(macos): needs arm64 auth pointers support
}
pub struct ucontext_t {
pub uc_onstack: c_int,
pub uc_sigmask: crate::sigset_t,
pub uc_stack: crate::stack_t,
pub uc_link: *mut crate::ucontext_t,
pub uc_mcsize: usize,
pub uc_mcontext: mcontext_t,
}
pub struct __darwin_mcontext64 {
pub __es: __darwin_arm_exception_state64,
pub __ss: __darwin_arm_thread_state64,
pub __ns: __darwin_arm_neon_state64,
}
pub struct __darwin_arm_exception_state64 {
pub __far: u64,
pub __esr: u32,
pub __exception: u32,
}
pub struct __darwin_arm_thread_state64 {
pub __x: [u64; 29],
pub __fp: u64,
pub __lr: u64,
pub __sp: u64,
pub __pc: u64,
pub __cpsr: u32,
pub __pad: u32,
}
pub struct __darwin_arm_neon_state64 {
pub __v: [crate::__uint128_t; 32],
pub __fpsr: u32,
pub __fpcr: u32,
} }
} }
cfg_if! { s_no_extra_traits! {
if #[cfg(libc_align)] { #[allow(missing_debug_implementations)]
mod align; pub struct max_align_t {
pub use self::align::*; priv_: f64,
} }
} }

View File

@@ -1,7 +0,0 @@
s_no_extra_traits! {
#[allow(missing_debug_implementations)]
#[repr(align(16))]
pub struct max_align_t {
priv_: [f64; 2]
}
}

View File

@@ -1,7 +1,6 @@
//! 64-bit specific Apple (ios/darwin) definitions //! 64-bit specific Apple (ios/darwin) definitions
pub type c_long = i64; use crate::prelude::*;
pub type c_ulong = u64;
s! { s! {
pub struct timeval32 { pub struct timeval32 {
@@ -10,14 +9,14 @@ s! {
} }
pub struct if_data { pub struct if_data {
pub ifi_type: ::c_uchar, pub ifi_type: c_uchar,
pub ifi_typelen: ::c_uchar, pub ifi_typelen: c_uchar,
pub ifi_physical: ::c_uchar, pub ifi_physical: c_uchar,
pub ifi_addrlen: ::c_uchar, pub ifi_addrlen: c_uchar,
pub ifi_hdrlen: ::c_uchar, pub ifi_hdrlen: c_uchar,
pub ifi_recvquota: ::c_uchar, pub ifi_recvquota: c_uchar,
pub ifi_xmitquota: ::c_uchar, pub ifi_xmitquota: c_uchar,
pub ifi_unused1: ::c_uchar, pub ifi_unused1: c_uchar,
pub ifi_mtu: u32, pub ifi_mtu: u32,
pub ifi_metric: u32, pub ifi_metric: u32,
pub ifi_baudrate: u32, pub ifi_baudrate: u32,
@@ -42,22 +41,22 @@ s! {
} }
pub struct bpf_hdr { pub struct bpf_hdr {
pub bh_tstamp: ::timeval32, pub bh_tstamp: crate::timeval32,
pub bh_caplen: u32, pub bh_caplen: u32,
pub bh_datalen: u32, pub bh_datalen: u32,
pub bh_hdrlen: ::c_ushort, pub bh_hdrlen: c_ushort,
} }
} }
s_no_extra_traits! { s_no_extra_traits! {
pub struct pthread_attr_t { pub struct pthread_attr_t {
__sig: c_long, __sig: c_long,
__opaque: [::c_char; 56] __opaque: [c_char; 56],
} }
pub struct pthread_once_t { pub struct pthread_once_t {
__sig: c_long, __sig: c_long,
__opaque: [::c_char; __PTHREAD_ONCE_SIZE__], __opaque: [c_char; __PTHREAD_ONCE_SIZE__],
} }
} }
@@ -66,23 +65,24 @@ cfg_if! {
impl PartialEq for pthread_attr_t { impl PartialEq for pthread_attr_t {
fn eq(&self, other: &pthread_attr_t) -> bool { fn eq(&self, other: &pthread_attr_t) -> bool {
self.__sig == other.__sig self.__sig == other.__sig
&& self.__opaque && self
.iter() .__opaque
.zip(other.__opaque.iter()) .iter()
.all(|(a,b)| a == b) .zip(other.__opaque.iter())
.all(|(a, b)| a == b)
} }
} }
impl Eq for pthread_attr_t {} impl Eq for pthread_attr_t {}
impl ::fmt::Debug for pthread_attr_t { impl fmt::Debug for pthread_attr_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("pthread_attr_t") f.debug_struct("pthread_attr_t")
.field("__sig", &self.__sig) .field("__sig", &self.__sig)
// FIXME: .field("__opaque", &self.__opaque) // FIXME(debug): .field("__opaque", &self.__opaque)
.finish() .finish()
} }
} }
impl ::hash::Hash for pthread_attr_t { impl hash::Hash for pthread_attr_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.__sig.hash(state); self.__sig.hash(state);
self.__opaque.hash(state); self.__opaque.hash(state);
} }
@@ -90,22 +90,23 @@ cfg_if! {
impl PartialEq for pthread_once_t { impl PartialEq for pthread_once_t {
fn eq(&self, other: &pthread_once_t) -> bool { fn eq(&self, other: &pthread_once_t) -> bool {
self.__sig == other.__sig self.__sig == other.__sig
&& self.__opaque && self
.iter() .__opaque
.zip(other.__opaque.iter()) .iter()
.all(|(a,b)| a == b) .zip(other.__opaque.iter())
.all(|(a, b)| a == b)
} }
} }
impl Eq for pthread_once_t {} impl Eq for pthread_once_t {}
impl ::fmt::Debug for pthread_once_t { impl fmt::Debug for pthread_once_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("pthread_once_t") f.debug_struct("pthread_once_t")
.field("__sig", &self.__sig) .field("__sig", &self.__sig)
.finish() .finish()
} }
} }
impl ::hash::Hash for pthread_once_t { impl hash::Hash for pthread_once_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.__sig.hash(state); self.__sig.hash(state);
self.__opaque.hash(state); self.__opaque.hash(state);
} }
@@ -115,7 +116,7 @@ cfg_if! {
#[doc(hidden)] #[doc(hidden)]
#[deprecated(since = "0.2.55")] #[deprecated(since = "0.2.55")]
pub const NET_RT_MAXID: ::c_int = 11; pub const NET_RT_MAXID: c_int = 11;
pub const __PTHREAD_MUTEX_SIZE__: usize = 56; pub const __PTHREAD_MUTEX_SIZE__: usize = 56;
pub const __PTHREAD_COND_SIZE__: usize = 40; pub const __PTHREAD_COND_SIZE__: usize = 40;
@@ -124,26 +125,22 @@ pub const __PTHREAD_ONCE_SIZE__: usize = 8;
pub const __PTHREAD_RWLOCK_SIZE__: usize = 192; pub const __PTHREAD_RWLOCK_SIZE__: usize = 192;
pub const __PTHREAD_RWLOCKATTR_SIZE__: usize = 16; pub const __PTHREAD_RWLOCKATTR_SIZE__: usize = 16;
pub const TIOCTIMESTAMP: ::c_ulong = 0x40107459; pub const TIOCTIMESTAMP: c_ulong = 0x40107459;
pub const TIOCDCDTIMESTAMP: ::c_ulong = 0x40107458; pub const TIOCDCDTIMESTAMP: c_ulong = 0x40107458;
pub const BIOCSETF: ::c_ulong = 0x80104267; pub const BIOCSETF: c_ulong = 0x80104267;
pub const BIOCSRTIMEOUT: ::c_ulong = 0x8010426d; pub const BIOCSRTIMEOUT: c_ulong = 0x8010426d;
pub const BIOCGRTIMEOUT: ::c_ulong = 0x4010426e; pub const BIOCGRTIMEOUT: c_ulong = 0x4010426e;
pub const BIOCSETFNR: ::c_ulong = 0x8010427e; pub const BIOCSETFNR: c_ulong = 0x8010427e;
const _PTHREAD_ONCE_SIG_INIT: c_long = 0x30B1BCBA; const _PTHREAD_ONCE_SIG_INIT: c_long = 0x30B1BCBA;
pub const PTHREAD_ONCE_INIT: ::pthread_once_t = ::pthread_once_t { pub const PTHREAD_ONCE_INIT: crate::pthread_once_t = crate::pthread_once_t {
__sig: _PTHREAD_ONCE_SIG_INIT, __sig: _PTHREAD_ONCE_SIG_INIT,
__opaque: [0; 8], __opaque: [0; 8],
}; };
extern "C" { extern "C" {
pub fn exchangedata( pub fn exchangedata(path1: *const c_char, path2: *const c_char, options: c_uint) -> c_int;
path1: *const ::c_char,
path2: *const ::c_char,
options: ::c_uint,
) -> ::c_int;
} }
cfg_if! { cfg_if! {

View File

@@ -1,7 +0,0 @@
s_no_extra_traits! {
#[allow(missing_debug_implementations)]
#[repr(align(16))]
pub struct max_align_t {
priv_: [f64; 2]
}
}

View File

@@ -1,12 +1,14 @@
pub type boolean_t = ::c_uint; use crate::prelude::*;
pub type boolean_t = c_uint;
pub type mcontext_t = *mut __darwin_mcontext64; pub type mcontext_t = *mut __darwin_mcontext64;
s! { s! {
pub struct ucontext_t { pub struct ucontext_t {
pub uc_onstack: ::c_int, pub uc_onstack: c_int,
pub uc_sigmask: ::sigset_t, pub uc_sigmask: crate::sigset_t,
pub uc_stack: ::stack_t, pub uc_stack: crate::stack_t,
pub uc_link: *mut ::ucontext_t, pub uc_link: *mut crate::ucontext_t,
pub uc_mcsize: usize, pub uc_mcsize: usize,
pub uc_mcontext: mcontext_t, pub uc_mcontext: mcontext_t,
} }
@@ -49,9 +51,9 @@ s! {
} }
pub struct __darwin_x86_float_state64 { pub struct __darwin_x86_float_state64 {
pub __fpu_reserved: [::c_int; 2], pub __fpu_reserved: [c_int; 2],
__fpu_fcw: ::c_short, __fpu_fcw: c_short,
__fpu_fsw: ::c_short, __fpu_fsw: c_short,
pub __fpu_ftw: u8, pub __fpu_ftw: u8,
pub __fpu_rsrv1: u8, pub __fpu_rsrv1: u8,
pub __fpu_fop: u16, pub __fpu_fop: u16,
@@ -91,90 +93,86 @@ s! {
// allows us to auto-implement traits for it since the length of the // allows us to auto-implement traits for it since the length of the
// array is less than 32 // array is less than 32
__fpu_rsrv4: [u32; 24], __fpu_rsrv4: [u32; 24],
pub __fpu_reserved1: ::c_int, pub __fpu_reserved1: c_int,
} }
pub struct __darwin_mmst_reg { pub struct __darwin_mmst_reg {
pub __mmst_reg: [::c_char; 10], pub __mmst_reg: [c_char; 10],
pub __mmst_rsrv: [::c_char; 6], pub __mmst_rsrv: [c_char; 6],
} }
pub struct __darwin_xmm_reg { pub struct __darwin_xmm_reg {
pub __xmm_reg: [::c_char; 16], pub __xmm_reg: [c_char; 16],
} }
pub struct malloc_introspection_t { pub struct malloc_introspection_t {
_private: [::uintptr_t; 16], // FIXME: keeping private for now _private: [crate::uintptr_t; 16], // FIXME(macos): keeping private for now
} }
pub struct malloc_zone_t { pub struct malloc_zone_t {
_reserved1: *mut ::c_void, _reserved1: *mut c_void,
_reserved2: *mut ::c_void, _reserved2: *mut c_void,
pub size: ::Option<unsafe extern "C" fn( pub size:
zone: *mut malloc_zone_t, Option<unsafe extern "C" fn(zone: *mut malloc_zone_t, ptr: *const c_void) -> size_t>,
ptr: *const ::c_void, pub malloc:
) -> ::size_t>, Option<unsafe extern "C" fn(zone: *mut malloc_zone_t, size: size_t) -> *mut c_void>,
pub malloc: ::Option<unsafe extern "C" fn( pub calloc: Option<
zone: *mut malloc_zone_t, unsafe extern "C" fn(
size: ::size_t, zone: *mut malloc_zone_t,
) -> *mut ::c_void>, num_items: size_t,
pub calloc: ::Option<unsafe extern "C" fn( size: size_t,
zone: *mut malloc_zone_t, ) -> *mut c_void,
num_items: ::size_t, >,
size: ::size_t, pub valloc:
) -> *mut ::c_void>, Option<unsafe extern "C" fn(zone: *mut malloc_zone_t, size: size_t) -> *mut c_void>,
pub valloc: ::Option<unsafe extern "C" fn( pub free: Option<unsafe extern "C" fn(zone: *mut malloc_zone_t, ptr: *mut c_void)>,
zone: *mut malloc_zone_t, pub realloc: Option<
size: ::size_t unsafe extern "C" fn(
) -> *mut ::c_void>, zone: *mut malloc_zone_t,
pub free: ::Option<unsafe extern "C" fn( ptr: *mut c_void,
zone: *mut malloc_zone_t, size: size_t,
ptr: *mut ::c_void ) -> *mut c_void,
)>, >,
pub realloc: ::Option<unsafe extern "C" fn( pub destroy: Option<unsafe extern "C" fn(zone: *mut malloc_zone_t)>,
zone: *mut malloc_zone_t, pub zone_name: *const c_char,
ptr: *mut ::c_void, pub batch_malloc: Option<
size: ::size_t, unsafe extern "C" fn(
) -> *mut ::c_void>, zone: *mut malloc_zone_t,
pub destroy: ::Option<unsafe extern "C" fn(zone: *mut malloc_zone_t)>, size: size_t,
pub zone_name: *const ::c_char, results: *mut *mut c_void,
pub batch_malloc: ::Option<unsafe extern "C" fn( num_requested: c_uint,
zone: *mut malloc_zone_t, ) -> c_uint,
size: ::size_t, >,
results: *mut *mut ::c_void, pub batch_free: Option<
num_requested: ::c_uint, unsafe extern "C" fn(
) -> ::c_uint>, zone: *mut malloc_zone_t,
pub batch_free: ::Option<unsafe extern "C" fn( to_be_freed: *mut *mut c_void,
zone: *mut malloc_zone_t, num_to_be_freed: c_uint,
to_be_freed: *mut *mut ::c_void, ),
num_to_be_freed: ::c_uint, >,
)>,
pub introspect: *mut malloc_introspection_t, pub introspect: *mut malloc_introspection_t,
pub version: ::c_uint, pub version: c_uint,
pub memalign: ::Option<unsafe extern "C" fn( pub memalign: Option<
zone: *mut malloc_zone_t, unsafe extern "C" fn(
alignment: ::size_t, zone: *mut malloc_zone_t,
size: ::size_t, alignment: size_t,
) -> *mut ::c_void>, size: size_t,
pub free_definite_size: ::Option<unsafe extern "C" fn( ) -> *mut c_void,
zone: *mut malloc_zone_t, >,
ptr: *mut ::c_void, pub free_definite_size:
size: ::size_t Option<unsafe extern "C" fn(zone: *mut malloc_zone_t, ptr: *mut c_void, size: size_t)>,
)>, pub pressure_relief:
pub pressure_relief: ::Option<unsafe extern "C" fn( Option<unsafe extern "C" fn(zone: *mut malloc_zone_t, goal: size_t) -> size_t>,
zone: *mut malloc_zone_t, pub claimed_address: Option<
goal: ::size_t, unsafe extern "C" fn(zone: *mut malloc_zone_t, ptr: *mut c_void) -> crate::boolean_t,
) -> ::size_t>, >,
pub claimed_address: ::Option<unsafe extern "C" fn(
zone: *mut malloc_zone_t,
ptr: *mut ::c_void,
) -> ::boolean_t>,
} }
} }
cfg_if! { s_no_extra_traits! {
if #[cfg(libc_align)] { #[allow(missing_debug_implementations)]
mod align; #[repr(align(16))]
pub use self::align::*; pub struct max_align_t {
priv_: [f64; 2],
} }
} }

View File

@@ -1,8 +0,0 @@
s! {
pub struct ctl_info {
pub ctl_id: u32,
pub ctl_name: [::c_char; MAX_KCTL_NAME],
}
}
pub const MAX_KCTL_NAME: usize = 96;

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +1,17 @@
use crate::prelude::*;
/* DIFF(main): module removed in de76fee6 */
// DragonFlyBSD's __error function is declared with "static inline", so it must // DragonFlyBSD's __error function is declared with "static inline", so it must
// be implemented in the libc crate, as a pointer to a static thread_local. // be implemented in the libc crate, as a pointer to a static thread_local.
f! { f! {
#[deprecated(since = "0.2.77", note = "Use `__errno_location()` instead")] #[deprecated(since = "0.2.77", note = "Use `__errno_location()` instead")]
pub fn __error() -> *mut ::c_int { pub fn __error() -> *mut c_int {
&mut errno &mut errno
} }
} }
extern "C" { extern "C" {
#[thread_local] #[thread_local]
pub static mut errno: ::c_int; pub static mut errno: c_int;
} }

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
pub type c_char = u8; use crate::prelude::*;
pub type c_long = i64;
pub type c_ulong = u64; pub type clock_t = i32;
pub type wchar_t = u32; pub type wchar_t = u32;
pub type time_t = i64; pub type time_t = i64;
pub type suseconds_t = i64; pub type suseconds_t = i64;
@@ -8,57 +8,48 @@ pub type register_t = i64;
s_no_extra_traits! { s_no_extra_traits! {
pub struct gpregs { pub struct gpregs {
pub gp_x: [::register_t; 30], pub gp_x: [crate::register_t; 30],
pub gp_lr: ::register_t, pub gp_lr: crate::register_t,
pub gp_sp: ::register_t, pub gp_sp: crate::register_t,
pub gp_elr: ::register_t, pub gp_elr: crate::register_t,
pub gp_spsr: u32, pub gp_spsr: u32,
pub gp_pad: ::c_int, pub gp_pad: c_int,
} }
pub struct fpregs { pub struct fpregs {
pub fp_q: u128, pub fp_q: u128,
pub fp_sr: u32, pub fp_sr: u32,
pub fp_cr: u32, pub fp_cr: u32,
pub fp_flags: ::c_int, pub fp_flags: c_int,
pub fp_pad: ::c_int, pub fp_pad: c_int,
} }
pub struct mcontext_t { pub struct mcontext_t {
pub mc_gpregs: gpregs, pub mc_gpregs: gpregs,
pub mc_fpregs: fpregs, pub mc_fpregs: fpregs,
pub mc_flags: ::c_int, pub mc_flags: c_int,
pub mc_pad: ::c_int, pub mc_pad: c_int,
pub mc_spare: [u64; 8], pub mc_spare: [u64; 8],
} }
} }
// should be pub(crate), but that requires Rust 1.18.0 pub(crate) const _ALIGNBYTES: usize = mem::size_of::<c_longlong>() - 1;
cfg_if! {
if #[cfg(libc_const_size_of)] {
#[doc(hidden)]
pub const _ALIGNBYTES: usize = ::mem::size_of::<::c_longlong>() - 1;
} else {
#[doc(hidden)]
pub const _ALIGNBYTES: usize = 8 - 1;
}
}
cfg_if! { cfg_if! {
if #[cfg(feature = "extra_traits")] { if #[cfg(feature = "extra_traits")] {
impl PartialEq for gpregs { impl PartialEq for gpregs {
fn eq(&self, other: &gpregs) -> bool { fn eq(&self, other: &gpregs) -> bool {
self.gp_x.iter().zip(other.gp_x.iter()).all(|(a, b)| a == b) && self.gp_x.iter().zip(other.gp_x.iter()).all(|(a, b)| a == b)
self.gp_lr == other.gp_lr && && self.gp_lr == other.gp_lr
self.gp_sp == other.gp_sp && && self.gp_sp == other.gp_sp
self.gp_elr == other.gp_elr && && self.gp_elr == other.gp_elr
self.gp_spsr == other.gp_spsr && && self.gp_spsr == other.gp_spsr
self.gp_pad == other.gp_pad && self.gp_pad == other.gp_pad
} }
} }
impl Eq for gpregs {} impl Eq for gpregs {}
impl ::fmt::Debug for gpregs { impl fmt::Debug for gpregs {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("gpregs") f.debug_struct("gpregs")
.field("gp_x", &self.gp_x) .field("gp_x", &self.gp_x)
.field("gp_lr", &self.gp_lr) .field("gp_lr", &self.gp_lr)
@@ -69,8 +60,8 @@ cfg_if! {
.finish() .finish()
} }
} }
impl ::hash::Hash for gpregs { impl hash::Hash for gpregs {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.gp_x.hash(state); self.gp_x.hash(state);
self.gp_lr.hash(state); self.gp_lr.hash(state);
self.gp_sp.hash(state); self.gp_sp.hash(state);
@@ -81,16 +72,16 @@ cfg_if! {
} }
impl PartialEq for fpregs { impl PartialEq for fpregs {
fn eq(&self, other: &fpregs) -> bool { fn eq(&self, other: &fpregs) -> bool {
self.fp_q == other.fp_q && self.fp_q == other.fp_q
self.fp_sr == other.fp_sr && && self.fp_sr == other.fp_sr
self.fp_cr == other.fp_cr && && self.fp_cr == other.fp_cr
self.fp_flags == other.fp_flags && && self.fp_flags == other.fp_flags
self.fp_pad == other.fp_pad && self.fp_pad == other.fp_pad
} }
} }
impl Eq for fpregs {} impl Eq for fpregs {}
impl ::fmt::Debug for fpregs { impl fmt::Debug for fpregs {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("fpregs") f.debug_struct("fpregs")
.field("fp_q", &self.fp_q) .field("fp_q", &self.fp_q)
.field("fp_sr", &self.fp_sr) .field("fp_sr", &self.fp_sr)
@@ -100,8 +91,8 @@ cfg_if! {
.finish() .finish()
} }
} }
impl ::hash::Hash for fpregs { impl hash::Hash for fpregs {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.fp_q.hash(state); self.fp_q.hash(state);
self.fp_sr.hash(state); self.fp_sr.hash(state);
self.fp_cr.hash(state); self.fp_cr.hash(state);
@@ -111,16 +102,20 @@ cfg_if! {
} }
impl PartialEq for mcontext_t { impl PartialEq for mcontext_t {
fn eq(&self, other: &mcontext_t) -> bool { fn eq(&self, other: &mcontext_t) -> bool {
self.mc_gpregs == other.mc_gpregs && self.mc_gpregs == other.mc_gpregs
self.mc_fpregs == other.mc_fpregs && && self.mc_fpregs == other.mc_fpregs
self.mc_flags == other.mc_flags && && self.mc_flags == other.mc_flags
self.mc_pad == other.mc_pad && && self.mc_pad == other.mc_pad
self.mc_spare.iter().zip(other.mc_spare.iter()).all(|(a, b)| a == b) && self
.mc_spare
.iter()
.zip(other.mc_spare.iter())
.all(|(a, b)| a == b)
} }
} }
impl Eq for mcontext_t {} impl Eq for mcontext_t {}
impl ::fmt::Debug for mcontext_t { impl fmt::Debug for mcontext_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("mcontext_t") f.debug_struct("mcontext_t")
.field("mc_gpregs", &self.mc_gpregs) .field("mc_gpregs", &self.mc_gpregs)
.field("mc_fpregs", &self.mc_fpregs) .field("mc_fpregs", &self.mc_fpregs)
@@ -130,8 +125,8 @@ cfg_if! {
.finish() .finish()
} }
} }
impl ::hash::Hash for mcontext_t { impl hash::Hash for mcontext_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.mc_gpregs.hash(state); self.mc_gpregs.hash(state);
self.mc_fpregs.hash(state); self.mc_fpregs.hash(state);
self.mc_flags.hash(state); self.mc_flags.hash(state);
@@ -142,5 +137,8 @@ cfg_if! {
} }
} }
pub const MAP_32BIT: ::c_int = 0x00080000; pub const BIOCSRTIMEOUT: c_ulong = 0x8010426d;
pub const MINSIGSTKSZ: ::size_t = 4096; // 1024 * 4 pub const BIOCGRTIMEOUT: c_ulong = 0x4010426e;
pub const MAP_32BIT: c_int = 0x00080000;
pub const MINSIGSTKSZ: size_t = 4096; // 1024 * 4
pub const TIOCTIMESTAMP: c_ulong = 0x40107459;

View File

@@ -1,20 +1,63 @@
pub type c_char = u8; use crate::prelude::*;
pub type c_long = i32;
pub type c_ulong = u32; pub type clock_t = u32;
pub type wchar_t = u32; pub type wchar_t = u32;
pub type time_t = i64; pub type time_t = i64;
pub type suseconds_t = i32; pub type suseconds_t = i32;
pub type register_t = i32; pub type register_t = i32;
pub type __greg_t = c_uint;
pub type __gregset_t = [crate::__greg_t; 17];
// should be pub(crate), but that requires Rust 1.18.0 s_no_extra_traits! {
cfg_if! { pub struct mcontext_t {
if #[cfg(libc_const_size_of)] { pub __gregs: crate::__gregset_t,
#[doc(hidden)] pub mc_vfp_size: usize,
pub const _ALIGNBYTES: usize = ::mem::size_of::<::c_int>() - 1; pub mc_vfp_ptr: *mut c_void,
} else { pub mc_spare: [c_uint; 33],
#[doc(hidden)]
pub const _ALIGNBYTES: usize = 4 - 1;
} }
} }
pub const MAP_32BIT: ::c_int = 0x00080000;
pub const MINSIGSTKSZ: ::size_t = 4096; // 1024 * 4 cfg_if! {
if #[cfg(feature = "extra_traits")] {
impl PartialEq for mcontext_t {
fn eq(&self, other: &mcontext_t) -> bool {
self.__gregs == other.__gregs
&& self.mc_vfp_size == other.mc_vfp_size
&& self.mc_vfp_ptr == other.mc_vfp_ptr
&& self
.mc_spare
.iter()
.zip(other.mc_spare.iter())
.all(|(a, b)| a == b)
}
}
impl Eq for mcontext_t {}
impl fmt::Debug for mcontext_t {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("mcontext_t")
.field("__gregs", &self.__gregs)
.field("mc_vfp_size", &self.mc_vfp_size)
.field("mc_vfp_ptr", &self.mc_vfp_ptr)
.field("mc_spare", &self.mc_spare)
.finish()
}
}
impl hash::Hash for mcontext_t {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.__gregs.hash(state);
self.mc_vfp_size.hash(state);
self.mc_vfp_ptr.hash(state);
self.mc_spare.hash(state);
}
}
}
}
pub(crate) const _ALIGNBYTES: usize = mem::size_of::<c_int>() - 1;
pub const BIOCSRTIMEOUT: c_ulong = 0x8010426d;
pub const BIOCGRTIMEOUT: c_ulong = 0x4010426e;
pub const MAP_32BIT: c_int = 0x00080000;
pub const MINSIGSTKSZ: size_t = 4096; // 1024 * 4
pub const TIOCTIMESTAMP: c_ulong = 0x40107459;

View File

@@ -1,33 +1,36 @@
use crate::off_t;
use crate::prelude::*;
#[repr(C)] #[repr(C)]
#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))] #[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))]
pub struct stat { pub struct stat {
pub st_dev: ::dev_t, pub st_dev: crate::dev_t,
pub st_ino: ::ino_t, pub st_ino: crate::ino_t,
pub st_mode: ::mode_t, pub st_mode: crate::mode_t,
pub st_nlink: ::nlink_t, pub st_nlink: crate::nlink_t,
pub st_uid: ::uid_t, pub st_uid: crate::uid_t,
pub st_gid: ::gid_t, pub st_gid: crate::gid_t,
pub st_rdev: ::dev_t, pub st_rdev: crate::dev_t,
pub st_atime: ::time_t, pub st_atime: crate::time_t,
pub st_atime_nsec: ::c_long, pub st_atime_nsec: c_long,
pub st_mtime: ::time_t, pub st_mtime: crate::time_t,
pub st_mtime_nsec: ::c_long, pub st_mtime_nsec: c_long,
pub st_ctime: ::time_t, pub st_ctime: crate::time_t,
pub st_ctime_nsec: ::c_long, pub st_ctime_nsec: c_long,
pub st_size: ::off_t, pub st_size: off_t,
pub st_blocks: ::blkcnt_t, pub st_blocks: crate::blkcnt_t,
pub st_blksize: ::blksize_t, pub st_blksize: crate::blksize_t,
pub st_flags: ::fflags_t, pub st_flags: crate::fflags_t,
pub st_gen: u32, pub st_gen: u32,
pub st_lspare: i32, pub st_lspare: i32,
pub st_birthtime: ::time_t, pub st_birthtime: crate::time_t,
pub st_birthtime_nsec: ::c_long, pub st_birthtime_nsec: c_long,
__unused: [u8; 8], __unused: [u8; 8],
} }
impl ::Copy for ::stat {} impl Copy for crate::stat {}
impl ::Clone for ::stat { impl Clone for crate::stat {
fn clone(&self) -> ::stat { fn clone(&self) -> crate::stat {
*self *self
} }
} }

View File

@@ -1,32 +1,35 @@
use crate::off_t;
use crate::prelude::*;
#[repr(C)] #[repr(C)]
#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))] #[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))]
pub struct stat { pub struct stat {
pub st_dev: ::dev_t, pub st_dev: crate::dev_t,
pub st_ino: ::ino_t, pub st_ino: crate::ino_t,
pub st_mode: ::mode_t, pub st_mode: crate::mode_t,
pub st_nlink: ::nlink_t, pub st_nlink: crate::nlink_t,
pub st_uid: ::uid_t, pub st_uid: crate::uid_t,
pub st_gid: ::gid_t, pub st_gid: crate::gid_t,
pub st_rdev: ::dev_t, pub st_rdev: crate::dev_t,
pub st_atime: ::time_t, pub st_atime: crate::time_t,
pub st_atime_nsec: ::c_long, pub st_atime_nsec: c_long,
pub st_mtime: ::time_t, pub st_mtime: crate::time_t,
pub st_mtime_nsec: ::c_long, pub st_mtime_nsec: c_long,
pub st_ctime: ::time_t, pub st_ctime: crate::time_t,
pub st_ctime_nsec: ::c_long, pub st_ctime_nsec: c_long,
pub st_size: ::off_t, pub st_size: off_t,
pub st_blocks: ::blkcnt_t, pub st_blocks: crate::blkcnt_t,
pub st_blksize: ::blksize_t, pub st_blksize: crate::blksize_t,
pub st_flags: ::fflags_t, pub st_flags: crate::fflags_t,
pub st_gen: u32, pub st_gen: u32,
pub st_lspare: i32, pub st_lspare: i32,
pub st_birthtime: ::time_t, pub st_birthtime: crate::time_t,
pub st_birthtime_nsec: ::c_long, pub st_birthtime_nsec: c_long,
} }
impl ::Copy for ::stat {} impl Copy for crate::stat {}
impl ::Clone for ::stat { impl Clone for crate::stat {
fn clone(&self) -> ::stat { fn clone(&self) -> crate::stat {
*self *self
} }
} }

View File

@@ -1,3 +1,5 @@
use crate::prelude::*;
// APIs that were changed after FreeBSD 11 // APIs that were changed after FreeBSD 11
// The type of `nlink_t` changed from `u16` to `u64` in FreeBSD 12: // The type of `nlink_t` changed from `u16` to `u64` in FreeBSD 12:
@@ -9,216 +11,216 @@ pub type ino_t = u32;
s! { s! {
pub struct kevent { pub struct kevent {
pub ident: ::uintptr_t, pub ident: crate::uintptr_t,
pub filter: ::c_short, pub filter: c_short,
pub flags: ::c_ushort, pub flags: c_ushort,
pub fflags: ::c_uint, pub fflags: c_uint,
pub data: ::intptr_t, pub data: intptr_t,
pub udata: *mut ::c_void, pub udata: *mut c_void,
} }
pub struct shmid_ds { pub struct shmid_ds {
pub shm_perm: ::ipc_perm, pub shm_perm: crate::ipc_perm,
pub shm_segsz: ::size_t, pub shm_segsz: size_t,
pub shm_lpid: ::pid_t, pub shm_lpid: crate::pid_t,
pub shm_cpid: ::pid_t, pub shm_cpid: crate::pid_t,
// Type of shm_nattc changed from `int` to `shmatt_t` (aka `unsigned // Type of shm_nattc changed from `int` to `shmatt_t` (aka `unsigned
// int`) in FreeBSD 12: // int`) in FreeBSD 12:
pub shm_nattch: ::c_int, pub shm_nattch: c_int,
pub shm_atime: ::time_t, pub shm_atime: crate::time_t,
pub shm_dtime: ::time_t, pub shm_dtime: crate::time_t,
pub shm_ctime: ::time_t, pub shm_ctime: crate::time_t,
} }
pub struct kinfo_proc { pub struct kinfo_proc {
/// Size of this structure. /// Size of this structure.
pub ki_structsize: ::c_int, pub ki_structsize: c_int,
/// Reserved: layout identifier. /// Reserved: layout identifier.
pub ki_layout: ::c_int, pub ki_layout: c_int,
/// Address of command arguments. /// Address of command arguments.
pub ki_args: *mut ::pargs, pub ki_args: *mut crate::pargs,
// This is normally "struct proc". // This is normally "struct proc".
/// Address of proc. /// Address of proc.
pub ki_paddr: *mut ::c_void, pub ki_paddr: *mut c_void,
// This is normally "struct user". // This is normally "struct user".
/// Kernel virtual address of u-area. /// Kernel virtual address of u-area.
pub ki_addr: *mut ::c_void, pub ki_addr: *mut c_void,
// This is normally "struct vnode". // This is normally "struct vnode".
/// Pointer to trace file. /// Pointer to trace file.
pub ki_tracep: *mut ::c_void, pub ki_tracep: *mut c_void,
// This is normally "struct vnode". // This is normally "struct vnode".
/// Pointer to executable file. /// Pointer to executable file.
pub ki_textvp: *mut ::c_void, pub ki_textvp: *mut c_void,
// This is normally "struct filedesc". // This is normally "struct filedesc".
/// Pointer to open file info. /// Pointer to open file info.
pub ki_fd: *mut ::c_void, pub ki_fd: *mut c_void,
// This is normally "struct vmspace". // This is normally "struct vmspace".
/// Pointer to kernel vmspace struct. /// Pointer to kernel vmspace struct.
pub ki_vmspace: *mut ::c_void, pub ki_vmspace: *mut c_void,
/// Sleep address. /// Sleep address.
pub ki_wchan: *mut ::c_void, pub ki_wchan: *mut c_void,
/// Process identifier. /// Process identifier.
pub ki_pid: ::pid_t, pub ki_pid: crate::pid_t,
/// Parent process ID. /// Parent process ID.
pub ki_ppid: ::pid_t, pub ki_ppid: crate::pid_t,
/// Process group ID. /// Process group ID.
pub ki_pgid: ::pid_t, pub ki_pgid: crate::pid_t,
/// tty process group ID. /// tty process group ID.
pub ki_tpgid: ::pid_t, pub ki_tpgid: crate::pid_t,
/// Process session ID. /// Process session ID.
pub ki_sid: ::pid_t, pub ki_sid: crate::pid_t,
/// Terminal session ID. /// Terminal session ID.
pub ki_tsid: ::pid_t, pub ki_tsid: crate::pid_t,
/// Job control counter. /// Job control counter.
pub ki_jobc: ::c_short, pub ki_jobc: c_short,
/// Unused (just here for alignment). /// Unused (just here for alignment).
pub ki_spare_short1: ::c_short, pub ki_spare_short1: c_short,
/// Controlling tty dev. /// Controlling tty dev.
pub ki_tdev: ::dev_t, pub ki_tdev: crate::dev_t,
/// Signals arrived but not delivered. /// Signals arrived but not delivered.
pub ki_siglist: ::sigset_t, pub ki_siglist: crate::sigset_t,
/// Current signal mask. /// Current signal mask.
pub ki_sigmask: ::sigset_t, pub ki_sigmask: crate::sigset_t,
/// Signals being ignored. /// Signals being ignored.
pub ki_sigignore: ::sigset_t, pub ki_sigignore: crate::sigset_t,
/// Signals being caught by user. /// Signals being caught by user.
pub ki_sigcatch: ::sigset_t, pub ki_sigcatch: crate::sigset_t,
/// Effective user ID. /// Effective user ID.
pub ki_uid: ::uid_t, pub ki_uid: crate::uid_t,
/// Real user ID. /// Real user ID.
pub ki_ruid: ::uid_t, pub ki_ruid: crate::uid_t,
/// Saved effective user ID. /// Saved effective user ID.
pub ki_svuid: ::uid_t, pub ki_svuid: crate::uid_t,
/// Real group ID. /// Real group ID.
pub ki_rgid: ::gid_t, pub ki_rgid: crate::gid_t,
/// Saved effective group ID. /// Saved effective group ID.
pub ki_svgid: ::gid_t, pub ki_svgid: crate::gid_t,
/// Number of groups. /// Number of groups.
pub ki_ngroups: ::c_short, pub ki_ngroups: c_short,
/// Unused (just here for alignment). /// Unused (just here for alignment).
pub ki_spare_short2: ::c_short, pub ki_spare_short2: c_short,
/// Groups. /// Groups.
pub ki_groups: [::gid_t; ::KI_NGROUPS], pub ki_groups: [crate::gid_t; crate::KI_NGROUPS],
/// Virtual size. /// Virtual size.
pub ki_size: ::vm_size_t, pub ki_size: crate::vm_size_t,
/// Current resident set size in pages. /// Current resident set size in pages.
pub ki_rssize: ::segsz_t, pub ki_rssize: crate::segsz_t,
/// Resident set size before last swap. /// Resident set size before last swap.
pub ki_swrss: ::segsz_t, pub ki_swrss: crate::segsz_t,
/// Text size (pages) XXX. /// Text size (pages) XXX.
pub ki_tsize: ::segsz_t, pub ki_tsize: crate::segsz_t,
/// Data size (pages) XXX. /// Data size (pages) XXX.
pub ki_dsize: ::segsz_t, pub ki_dsize: crate::segsz_t,
/// Stack size (pages). /// Stack size (pages).
pub ki_ssize: ::segsz_t, pub ki_ssize: crate::segsz_t,
/// Exit status for wait & stop signal. /// Exit status for wait & stop signal.
pub ki_xstat: ::u_short, pub ki_xstat: crate::u_short,
/// Accounting flags. /// Accounting flags.
pub ki_acflag: ::u_short, pub ki_acflag: crate::u_short,
/// %cpu for process during `ki_swtime`. /// %cpu for process during `ki_swtime`.
pub ki_pctcpu: ::fixpt_t, pub ki_pctcpu: crate::fixpt_t,
/// Time averaged value of `ki_cpticks`. /// Time averaged value of `ki_cpticks`.
pub ki_estcpu: ::u_int, pub ki_estcpu: crate::u_int,
/// Time since last blocked. /// Time since last blocked.
pub ki_slptime: ::u_int, pub ki_slptime: crate::u_int,
/// Time swapped in or out. /// Time swapped in or out.
pub ki_swtime: ::u_int, pub ki_swtime: crate::u_int,
/// Number of copy-on-write faults. /// Number of copy-on-write faults.
pub ki_cow: ::u_int, pub ki_cow: crate::u_int,
/// Real time in microsec. /// Real time in microsec.
pub ki_runtime: u64, pub ki_runtime: u64,
/// Starting time. /// Starting time.
pub ki_start: ::timeval, pub ki_start: crate::timeval,
/// Time used by process children. /// Time used by process children.
pub ki_childtime: ::timeval, pub ki_childtime: crate::timeval,
/// P_* flags. /// P_* flags.
pub ki_flag: ::c_long, pub ki_flag: c_long,
/// KI_* flags (below). /// KI_* flags (below).
pub ki_kiflag: ::c_long, pub ki_kiflag: c_long,
/// Kernel trace points. /// Kernel trace points.
pub ki_traceflag: ::c_int, pub ki_traceflag: c_int,
/// S* process status. /// S* process status.
pub ki_stat: ::c_char, pub ki_stat: c_char,
/// Process "nice" value. /// Process "nice" value.
pub ki_nice: i8, // signed char pub ki_nice: i8, // signed char
/// Process lock (prevent swap) count. /// Process lock (prevent swap) count.
pub ki_lock: ::c_char, pub ki_lock: c_char,
/// Run queue index. /// Run queue index.
pub ki_rqindex: ::c_char, pub ki_rqindex: c_char,
/// Which cpu we are on. /// Which cpu we are on.
pub ki_oncpu_old: ::c_uchar, pub ki_oncpu_old: c_uchar,
/// Last cpu we were on. /// Last cpu we were on.
pub ki_lastcpu_old: ::c_uchar, pub ki_lastcpu_old: c_uchar,
/// Thread name. /// Thread name.
pub ki_tdname: [::c_char; ::TDNAMLEN + 1], pub ki_tdname: [c_char; crate::TDNAMLEN + 1],
/// Wchan message. /// Wchan message.
pub ki_wmesg: [::c_char; ::WMESGLEN + 1], pub ki_wmesg: [c_char; crate::WMESGLEN + 1],
/// Setlogin name. /// Setlogin name.
pub ki_login: [::c_char; ::LOGNAMELEN + 1], pub ki_login: [c_char; crate::LOGNAMELEN + 1],
/// Lock name. /// Lock name.
pub ki_lockname: [::c_char; ::LOCKNAMELEN + 1], pub ki_lockname: [c_char; crate::LOCKNAMELEN + 1],
/// Command name. /// Command name.
pub ki_comm: [::c_char; ::COMMLEN + 1], pub ki_comm: [c_char; crate::COMMLEN + 1],
/// Emulation name. /// Emulation name.
pub ki_emul: [::c_char; ::KI_EMULNAMELEN + 1], pub ki_emul: [c_char; crate::KI_EMULNAMELEN + 1],
/// Login class. /// Login class.
pub ki_loginclass: [::c_char; ::LOGINCLASSLEN + 1], pub ki_loginclass: [c_char; crate::LOGINCLASSLEN + 1],
/// More thread name. /// More thread name.
pub ki_moretdname: [::c_char; ::MAXCOMLEN - ::TDNAMLEN + 1], pub ki_moretdname: [c_char; crate::MAXCOMLEN - crate::TDNAMLEN + 1],
/// Spare string space. /// Spare string space.
pub ki_sparestrings: [[::c_char; 23]; 2], // little hack to allow PartialEq pub ki_sparestrings: [[c_char; 23]; 2], // little hack to allow PartialEq
/// Spare room for growth. /// Spare room for growth.
pub ki_spareints: [::c_int; ::KI_NSPARE_INT], pub ki_spareints: [c_int; crate::KI_NSPARE_INT],
/// Which cpu we are on. /// Which cpu we are on.
pub ki_oncpu: ::c_int, pub ki_oncpu: c_int,
/// Last cpu we were on. /// Last cpu we were on.
pub ki_lastcpu: ::c_int, pub ki_lastcpu: c_int,
/// PID of tracing process. /// PID of tracing process.
pub ki_tracer: ::c_int, pub ki_tracer: c_int,
/// P2_* flags. /// P2_* flags.
pub ki_flag2: ::c_int, pub ki_flag2: c_int,
/// Default FIB number. /// Default FIB number.
pub ki_fibnum: ::c_int, pub ki_fibnum: c_int,
/// Credential flags. /// Credential flags.
pub ki_cr_flags: ::u_int, pub ki_cr_flags: crate::u_int,
/// Process jail ID. /// Process jail ID.
pub ki_jid: ::c_int, pub ki_jid: c_int,
/// Number of threads in total. /// Number of threads in total.
pub ki_numthreads: ::c_int, pub ki_numthreads: c_int,
/// Thread ID. /// Thread ID.
pub ki_tid: ::lwpid_t, pub ki_tid: crate::lwpid_t,
/// Process priority. /// Process priority.
pub ki_pri: ::priority, pub ki_pri: crate::priority,
/// Process rusage statistics. /// Process rusage statistics.
pub ki_rusage: ::rusage, pub ki_rusage: crate::rusage,
/// rusage of children processes. /// rusage of children processes.
pub ki_rusage_ch: ::rusage, pub ki_rusage_ch: crate::rusage,
// This is normally "struct pcb". // This is normally "struct pcb".
/// Kernel virtual addr of pcb. /// Kernel virtual addr of pcb.
pub ki_pcb: *mut ::c_void, pub ki_pcb: *mut c_void,
/// Kernel virtual addr of stack. /// Kernel virtual addr of stack.
pub ki_kstack: *mut ::c_void, pub ki_kstack: *mut c_void,
/// User convenience pointer. /// User convenience pointer.
pub ki_udata: *mut ::c_void, pub ki_udata: *mut c_void,
// This is normally "struct thread". // This is normally "struct thread".
pub ki_tdaddr: *mut ::c_void, pub ki_tdaddr: *mut c_void,
pub ki_spareptrs: [*mut ::c_void; ::KI_NSPARE_PTR], pub ki_spareptrs: [*mut c_void; crate::KI_NSPARE_PTR],
pub ki_sparelongs: [::c_long; ::KI_NSPARE_LONG], pub ki_sparelongs: [c_long; crate::KI_NSPARE_LONG],
/// PS_* flags. /// PS_* flags.
pub ki_sflag: ::c_long, pub ki_sflag: c_long,
/// kthread flag. /// kthread flag.
pub ki_tdflags: ::c_long, pub ki_tdflags: c_long,
} }
} }
s_no_extra_traits! { s_no_extra_traits! {
pub struct dirent { pub struct dirent {
pub d_fileno: ::ino_t, pub d_fileno: crate::ino_t,
pub d_reclen: u16, pub d_reclen: u16,
pub d_type: u8, pub d_type: u8,
// Type of `d_namlen` changed from `char` to `u16` in FreeBSD 12: // Type of `d_namlen` changed from `char` to `u16` in FreeBSD 12:
pub d_namlen: u8, pub d_namlen: u8,
pub d_name: [::c_char; 256], pub d_name: [c_char; 256],
} }
pub struct statfs { pub struct statfs {
@@ -238,25 +240,25 @@ s_no_extra_traits! {
pub f_asyncreads: u64, pub f_asyncreads: u64,
f_spare: [u64; 10], f_spare: [u64; 10],
pub f_namemax: u32, pub f_namemax: u32,
pub f_owner: ::uid_t, pub f_owner: crate::uid_t,
pub f_fsid: ::fsid_t, pub f_fsid: crate::fsid_t,
f_charspare: [::c_char; 80], f_charspare: [c_char; 80],
pub f_fstypename: [::c_char; 16], pub f_fstypename: [c_char; 16],
// Array length changed from 88 to 1024 in FreeBSD 12: // Array length changed from 88 to 1024 in FreeBSD 12:
pub f_mntfromname: [::c_char; 88], pub f_mntfromname: [c_char; 88],
// Array length changed from 88 to 1024 in FreeBSD 12: // Array length changed from 88 to 1024 in FreeBSD 12:
pub f_mntonname: [::c_char; 88], pub f_mntonname: [c_char; 88],
} }
pub struct vnstat { pub struct vnstat {
pub vn_fileid: u64, pub vn_fileid: u64,
pub vn_size: u64, pub vn_size: u64,
pub vn_mntdir: *mut ::c_char, pub vn_mntdir: *mut c_char,
pub vn_dev: u32, pub vn_dev: u32,
pub vn_fsid: u32, pub vn_fsid: u32,
pub vn_type: ::c_int, pub vn_type: c_int,
pub vn_mode: u16, pub vn_mode: u16,
pub vn_devname: [::c_char; ::SPECNAMELEN as usize + 1], pub vn_devname: [c_char; crate::SPECNAMELEN as usize + 1],
} }
} }
@@ -283,20 +285,20 @@ cfg_if! {
&& self.f_fsid == other.f_fsid && self.f_fsid == other.f_fsid
&& self.f_fstypename == other.f_fstypename && self.f_fstypename == other.f_fstypename
&& self && self
.f_mntfromname .f_mntfromname
.iter() .iter()
.zip(other.f_mntfromname.iter()) .zip(other.f_mntfromname.iter())
.all(|(a,b)| a == b) .all(|(a, b)| a == b)
&& self && self
.f_mntonname .f_mntonname
.iter() .iter()
.zip(other.f_mntonname.iter()) .zip(other.f_mntonname.iter())
.all(|(a,b)| a == b) .all(|(a, b)| a == b)
} }
} }
impl Eq for statfs {} impl Eq for statfs {}
impl ::fmt::Debug for statfs { impl fmt::Debug for statfs {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("statfs") f.debug_struct("statfs")
.field("f_bsize", &self.f_bsize) .field("f_bsize", &self.f_bsize)
.field("f_iosize", &self.f_iosize) .field("f_iosize", &self.f_iosize)
@@ -318,8 +320,8 @@ cfg_if! {
.finish() .finish()
} }
} }
impl ::hash::Hash for statfs { impl hash::Hash for statfs {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.f_version.hash(state); self.f_version.hash(state);
self.f_type.hash(state); self.f_type.hash(state);
self.f_flags.hash(state); self.f_flags.hash(state);
@@ -349,16 +351,15 @@ cfg_if! {
&& self.d_reclen == other.d_reclen && self.d_reclen == other.d_reclen
&& self.d_type == other.d_type && self.d_type == other.d_type
&& self.d_namlen == other.d_namlen && self.d_namlen == other.d_namlen
&& self && self.d_name[..self.d_namlen as _]
.d_name[..self.d_namlen as _] .iter()
.iter() .zip(other.d_name.iter())
.zip(other.d_name.iter()) .all(|(a, b)| a == b)
.all(|(a,b)| a == b)
} }
} }
impl Eq for dirent {} impl Eq for dirent {}
impl ::fmt::Debug for dirent { impl fmt::Debug for dirent {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("dirent") f.debug_struct("dirent")
.field("d_fileno", &self.d_fileno) .field("d_fileno", &self.d_fileno)
.field("d_reclen", &self.d_reclen) .field("d_reclen", &self.d_reclen)
@@ -368,8 +369,8 @@ cfg_if! {
.finish() .finish()
} }
} }
impl ::hash::Hash for dirent { impl hash::Hash for dirent {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.d_fileno.hash(state); self.d_fileno.hash(state);
self.d_reclen.hash(state); self.d_reclen.hash(state);
self.d_type.hash(state); self.d_type.hash(state);
@@ -380,23 +381,23 @@ cfg_if! {
impl PartialEq for vnstat { impl PartialEq for vnstat {
fn eq(&self, other: &vnstat) -> bool { fn eq(&self, other: &vnstat) -> bool {
let self_vn_devname: &[::c_char] = &self.vn_devname; let self_vn_devname: &[c_char] = &self.vn_devname;
let other_vn_devname: &[::c_char] = &other.vn_devname; let other_vn_devname: &[c_char] = &other.vn_devname;
self.vn_fileid == other.vn_fileid && self.vn_fileid == other.vn_fileid
self.vn_size == other.vn_size && && self.vn_size == other.vn_size
self.vn_mntdir == other.vn_mntdir && && self.vn_mntdir == other.vn_mntdir
self.vn_dev == other.vn_dev && && self.vn_dev == other.vn_dev
self.vn_fsid == other.vn_fsid && && self.vn_fsid == other.vn_fsid
self.vn_type == other.vn_type && && self.vn_type == other.vn_type
self.vn_mode == other.vn_mode && && self.vn_mode == other.vn_mode
self_vn_devname == other_vn_devname && self_vn_devname == other_vn_devname
} }
} }
impl Eq for vnstat {} impl Eq for vnstat {}
impl ::fmt::Debug for vnstat { impl fmt::Debug for vnstat {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let self_vn_devname: &[::c_char] = &self.vn_devname; let self_vn_devname: &[c_char] = &self.vn_devname;
f.debug_struct("vnstat") f.debug_struct("vnstat")
.field("vn_fileid", &self.vn_fileid) .field("vn_fileid", &self.vn_fileid)
@@ -410,9 +411,9 @@ cfg_if! {
.finish() .finish()
} }
} }
impl ::hash::Hash for vnstat { impl hash::Hash for vnstat {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
let self_vn_devname: &[::c_char] = &self.vn_devname; let self_vn_devname: &[c_char] = &self.vn_devname;
self.vn_fileid.hash(state); self.vn_fileid.hash(state);
self.vn_size.hash(state); self.vn_size.hash(state);
@@ -427,55 +428,53 @@ cfg_if! {
} }
} }
pub const ELAST: ::c_int = 96; pub const ELAST: c_int = 96;
pub const RAND_MAX: ::c_int = 0x7fff_fffd; pub const RAND_MAX: c_int = 0x7fff_fffd;
pub const KI_NSPARE_PTR: usize = 6; pub const KI_NSPARE_PTR: usize = 6;
pub const MINCORE_SUPER: ::c_int = 0x20; pub const MINCORE_SUPER: c_int = 0x20;
/// max length of devicename /// max length of devicename
pub const SPECNAMELEN: ::c_int = 63; pub const SPECNAMELEN: c_int = 63;
safe_f! { safe_f! {
pub {const} fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t { pub {const} fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
let major = major as ::dev_t; let major = major as crate::dev_t;
let minor = minor as ::dev_t; let minor = minor as crate::dev_t;
(major << 8) | minor (major << 8) | minor
} }
}
f! { pub {const} fn major(dev: crate::dev_t) -> c_int {
pub fn major(dev: ::dev_t) -> ::c_int { ((dev >> 8) & 0xff) as c_int
((dev >> 8) & 0xff) as ::c_int
} }
pub fn minor(dev: ::dev_t) -> ::c_int { pub {const} fn minor(dev: crate::dev_t) -> c_int {
(dev & 0xffff00ff) as ::c_int (dev & 0xffff00ff) as c_int
} }
} }
extern "C" { extern "C" {
// Return type ::c_int was removed in FreeBSD 12 // Return type c_int was removed in FreeBSD 12
pub fn setgrent() -> ::c_int; pub fn setgrent() -> c_int;
// Type of `addr` argument changed from `const void*` to `void*` // Type of `addr` argument changed from `const void*` to `void*`
// in FreeBSD 12 // in FreeBSD 12
pub fn mprotect(addr: *const ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int; pub fn mprotect(addr: *const c_void, len: size_t, prot: c_int) -> c_int;
// Return type ::c_int was removed in FreeBSD 12 // Return type c_int was removed in FreeBSD 12
pub fn freelocale(loc: ::locale_t) -> ::c_int; pub fn freelocale(loc: crate::locale_t) -> c_int;
// Return type ::c_int changed to ::ssize_t in FreeBSD 12: // Return type c_int changed to ssize_t in FreeBSD 12:
pub fn msgrcv( pub fn msgrcv(
msqid: ::c_int, msqid: c_int,
msgp: *mut ::c_void, msgp: *mut c_void,
msgsz: ::size_t, msgsz: size_t,
msgtyp: ::c_long, msgtyp: c_long,
msgflg: ::c_int, msgflg: c_int,
) -> ::c_int; ) -> c_int;
// Type of `path` argument changed from `const void*` to `void*` // Type of `path` argument changed from `const void*` to `void*`
// in FreeBSD 12 // in FreeBSD 12
pub fn dirname(path: *const ::c_char) -> *mut ::c_char; pub fn dirname(path: *const c_char) -> *mut c_char;
pub fn basename(path: *const ::c_char) -> *mut ::c_char; pub fn basename(path: *const c_char) -> *mut c_char;
} }
cfg_if! { cfg_if! {

View File

@@ -1,254 +1,257 @@
use crate::off_t;
use crate::prelude::*;
// APIs in FreeBSD 12 that have changed since 11. // APIs in FreeBSD 12 that have changed since 11.
pub type nlink_t = u64; pub type nlink_t = u64;
pub type dev_t = u64; pub type dev_t = u64;
pub type ino_t = u64; pub type ino_t = u64;
pub type shmatt_t = ::c_uint; pub type shmatt_t = c_uint;
s! { s! {
pub struct shmid_ds { pub struct shmid_ds {
pub shm_perm: ::ipc_perm, pub shm_perm: crate::ipc_perm,
pub shm_segsz: ::size_t, pub shm_segsz: size_t,
pub shm_lpid: ::pid_t, pub shm_lpid: crate::pid_t,
pub shm_cpid: ::pid_t, pub shm_cpid: crate::pid_t,
pub shm_nattch: ::shmatt_t, pub shm_nattch: crate::shmatt_t,
pub shm_atime: ::time_t, pub shm_atime: crate::time_t,
pub shm_dtime: ::time_t, pub shm_dtime: crate::time_t,
pub shm_ctime: ::time_t, pub shm_ctime: crate::time_t,
} }
pub struct kevent { pub struct kevent {
pub ident: ::uintptr_t, pub ident: crate::uintptr_t,
pub filter: ::c_short, pub filter: c_short,
pub flags: ::c_ushort, pub flags: c_ushort,
pub fflags: ::c_uint, pub fflags: c_uint,
pub data: i64, pub data: i64,
pub udata: *mut ::c_void, pub udata: *mut c_void,
pub ext: [u64; 4], pub ext: [u64; 4],
} }
pub struct kvm_page { pub struct kvm_page {
pub version: ::c_uint, pub version: c_uint,
pub paddr: ::c_ulong, pub paddr: c_ulong,
pub kmap_vaddr: ::c_ulong, pub kmap_vaddr: c_ulong,
pub dmap_vaddr: ::c_ulong, pub dmap_vaddr: c_ulong,
pub prot: ::vm_prot_t, pub prot: crate::vm_prot_t,
pub offset: ::u_long, pub offset: crate::u_long,
pub len: ::size_t, pub len: size_t,
} }
pub struct kinfo_proc { pub struct kinfo_proc {
/// Size of this structure. /// Size of this structure.
pub ki_structsize: ::c_int, pub ki_structsize: c_int,
/// Reserved: layout identifier. /// Reserved: layout identifier.
pub ki_layout: ::c_int, pub ki_layout: c_int,
/// Address of command arguments. /// Address of command arguments.
pub ki_args: *mut ::pargs, pub ki_args: *mut crate::pargs,
// This is normally "struct proc". // This is normally "struct proc".
/// Address of proc. /// Address of proc.
pub ki_paddr: *mut ::c_void, pub ki_paddr: *mut c_void,
// This is normally "struct user". // This is normally "struct user".
/// Kernel virtual address of u-area. /// Kernel virtual address of u-area.
pub ki_addr: *mut ::c_void, pub ki_addr: *mut c_void,
// This is normally "struct vnode". // This is normally "struct vnode".
/// Pointer to trace file. /// Pointer to trace file.
pub ki_tracep: *mut ::c_void, pub ki_tracep: *mut c_void,
// This is normally "struct vnode". // This is normally "struct vnode".
/// Pointer to executable file. /// Pointer to executable file.
pub ki_textvp: *mut ::c_void, pub ki_textvp: *mut c_void,
// This is normally "struct filedesc". // This is normally "struct filedesc".
/// Pointer to open file info. /// Pointer to open file info.
pub ki_fd: *mut ::c_void, pub ki_fd: *mut c_void,
// This is normally "struct vmspace". // This is normally "struct vmspace".
/// Pointer to kernel vmspace struct. /// Pointer to kernel vmspace struct.
pub ki_vmspace: *mut ::c_void, pub ki_vmspace: *mut c_void,
/// Sleep address. /// Sleep address.
pub ki_wchan: *mut ::c_void, pub ki_wchan: *mut c_void,
/// Process identifier. /// Process identifier.
pub ki_pid: ::pid_t, pub ki_pid: crate::pid_t,
/// Parent process ID. /// Parent process ID.
pub ki_ppid: ::pid_t, pub ki_ppid: crate::pid_t,
/// Process group ID. /// Process group ID.
pub ki_pgid: ::pid_t, pub ki_pgid: crate::pid_t,
/// tty process group ID. /// tty process group ID.
pub ki_tpgid: ::pid_t, pub ki_tpgid: crate::pid_t,
/// Process session ID. /// Process session ID.
pub ki_sid: ::pid_t, pub ki_sid: crate::pid_t,
/// Terminal session ID. /// Terminal session ID.
pub ki_tsid: ::pid_t, pub ki_tsid: crate::pid_t,
/// Job control counter. /// Job control counter.
pub ki_jobc: ::c_short, pub ki_jobc: c_short,
/// Unused (just here for alignment). /// Unused (just here for alignment).
pub ki_spare_short1: ::c_short, pub ki_spare_short1: c_short,
/// Controlling tty dev. /// Controlling tty dev.
pub ki_tdev_freebsd11: u32, pub ki_tdev_freebsd11: u32,
/// Signals arrived but not delivered. /// Signals arrived but not delivered.
pub ki_siglist: ::sigset_t, pub ki_siglist: crate::sigset_t,
/// Current signal mask. /// Current signal mask.
pub ki_sigmask: ::sigset_t, pub ki_sigmask: crate::sigset_t,
/// Signals being ignored. /// Signals being ignored.
pub ki_sigignore: ::sigset_t, pub ki_sigignore: crate::sigset_t,
/// Signals being caught by user. /// Signals being caught by user.
pub ki_sigcatch: ::sigset_t, pub ki_sigcatch: crate::sigset_t,
/// Effective user ID. /// Effective user ID.
pub ki_uid: ::uid_t, pub ki_uid: crate::uid_t,
/// Real user ID. /// Real user ID.
pub ki_ruid: ::uid_t, pub ki_ruid: crate::uid_t,
/// Saved effective user ID. /// Saved effective user ID.
pub ki_svuid: ::uid_t, pub ki_svuid: crate::uid_t,
/// Real group ID. /// Real group ID.
pub ki_rgid: ::gid_t, pub ki_rgid: crate::gid_t,
/// Saved effective group ID. /// Saved effective group ID.
pub ki_svgid: ::gid_t, pub ki_svgid: crate::gid_t,
/// Number of groups. /// Number of groups.
pub ki_ngroups: ::c_short, pub ki_ngroups: c_short,
/// Unused (just here for alignment). /// Unused (just here for alignment).
pub ki_spare_short2: ::c_short, pub ki_spare_short2: c_short,
/// Groups. /// Groups.
pub ki_groups: [::gid_t; ::KI_NGROUPS], pub ki_groups: [crate::gid_t; crate::KI_NGROUPS],
/// Virtual size. /// Virtual size.
pub ki_size: ::vm_size_t, pub ki_size: crate::vm_size_t,
/// Current resident set size in pages. /// Current resident set size in pages.
pub ki_rssize: ::segsz_t, pub ki_rssize: crate::segsz_t,
/// Resident set size before last swap. /// Resident set size before last swap.
pub ki_swrss: ::segsz_t, pub ki_swrss: crate::segsz_t,
/// Text size (pages) XXX. /// Text size (pages) XXX.
pub ki_tsize: ::segsz_t, pub ki_tsize: crate::segsz_t,
/// Data size (pages) XXX. /// Data size (pages) XXX.
pub ki_dsize: ::segsz_t, pub ki_dsize: crate::segsz_t,
/// Stack size (pages). /// Stack size (pages).
pub ki_ssize: ::segsz_t, pub ki_ssize: crate::segsz_t,
/// Exit status for wait & stop signal. /// Exit status for wait & stop signal.
pub ki_xstat: ::u_short, pub ki_xstat: crate::u_short,
/// Accounting flags. /// Accounting flags.
pub ki_acflag: ::u_short, pub ki_acflag: crate::u_short,
/// %cpu for process during `ki_swtime`. /// %cpu for process during `ki_swtime`.
pub ki_pctcpu: ::fixpt_t, pub ki_pctcpu: crate::fixpt_t,
/// Time averaged value of `ki_cpticks`. /// Time averaged value of `ki_cpticks`.
pub ki_estcpu: ::u_int, pub ki_estcpu: crate::u_int,
/// Time since last blocked. /// Time since last blocked.
pub ki_slptime: ::u_int, pub ki_slptime: crate::u_int,
/// Time swapped in or out. /// Time swapped in or out.
pub ki_swtime: ::u_int, pub ki_swtime: crate::u_int,
/// Number of copy-on-write faults. /// Number of copy-on-write faults.
pub ki_cow: ::u_int, pub ki_cow: crate::u_int,
/// Real time in microsec. /// Real time in microsec.
pub ki_runtime: u64, pub ki_runtime: u64,
/// Starting time. /// Starting time.
pub ki_start: ::timeval, pub ki_start: crate::timeval,
/// Time used by process children. /// Time used by process children.
pub ki_childtime: ::timeval, pub ki_childtime: crate::timeval,
/// P_* flags. /// P_* flags.
pub ki_flag: ::c_long, pub ki_flag: c_long,
/// KI_* flags (below). /// KI_* flags (below).
pub ki_kiflag: ::c_long, pub ki_kiflag: c_long,
/// Kernel trace points. /// Kernel trace points.
pub ki_traceflag: ::c_int, pub ki_traceflag: c_int,
/// S* process status. /// S* process status.
pub ki_stat: ::c_char, pub ki_stat: c_char,
/// Process "nice" value. /// Process "nice" value.
pub ki_nice: i8, // signed char pub ki_nice: i8, // signed char
/// Process lock (prevent swap) count. /// Process lock (prevent swap) count.
pub ki_lock: ::c_char, pub ki_lock: c_char,
/// Run queue index. /// Run queue index.
pub ki_rqindex: ::c_char, pub ki_rqindex: c_char,
/// Which cpu we are on. /// Which cpu we are on.
pub ki_oncpu_old: ::c_uchar, pub ki_oncpu_old: c_uchar,
/// Last cpu we were on. /// Last cpu we were on.
pub ki_lastcpu_old: ::c_uchar, pub ki_lastcpu_old: c_uchar,
/// Thread name. /// Thread name.
pub ki_tdname: [::c_char; ::TDNAMLEN + 1], pub ki_tdname: [c_char; crate::TDNAMLEN + 1],
/// Wchan message. /// Wchan message.
pub ki_wmesg: [::c_char; ::WMESGLEN + 1], pub ki_wmesg: [c_char; crate::WMESGLEN + 1],
/// Setlogin name. /// Setlogin name.
pub ki_login: [::c_char; ::LOGNAMELEN + 1], pub ki_login: [c_char; crate::LOGNAMELEN + 1],
/// Lock name. /// Lock name.
pub ki_lockname: [::c_char; ::LOCKNAMELEN + 1], pub ki_lockname: [c_char; crate::LOCKNAMELEN + 1],
/// Command name. /// Command name.
pub ki_comm: [::c_char; ::COMMLEN + 1], pub ki_comm: [c_char; crate::COMMLEN + 1],
/// Emulation name. /// Emulation name.
pub ki_emul: [::c_char; ::KI_EMULNAMELEN + 1], pub ki_emul: [c_char; crate::KI_EMULNAMELEN + 1],
/// Login class. /// Login class.
pub ki_loginclass: [::c_char; ::LOGINCLASSLEN + 1], pub ki_loginclass: [c_char; crate::LOGINCLASSLEN + 1],
/// More thread name. /// More thread name.
pub ki_moretdname: [::c_char; ::MAXCOMLEN - ::TDNAMLEN + 1], pub ki_moretdname: [c_char; crate::MAXCOMLEN - crate::TDNAMLEN + 1],
/// Spare string space. /// Spare string space.
pub ki_sparestrings: [[::c_char; 23]; 2], // little hack to allow PartialEq pub ki_sparestrings: [[c_char; 23]; 2], // little hack to allow PartialEq
/// Spare room for growth. /// Spare room for growth.
pub ki_spareints: [::c_int; ::KI_NSPARE_INT], pub ki_spareints: [c_int; crate::KI_NSPARE_INT],
/// Controlling tty dev. /// Controlling tty dev.
pub ki_tdev: ::dev_t, pub ki_tdev: crate::dev_t,
/// Which cpu we are on. /// Which cpu we are on.
pub ki_oncpu: ::c_int, pub ki_oncpu: c_int,
/// Last cpu we were on. /// Last cpu we were on.
pub ki_lastcpu: ::c_int, pub ki_lastcpu: c_int,
/// PID of tracing process. /// PID of tracing process.
pub ki_tracer: ::c_int, pub ki_tracer: c_int,
/// P2_* flags. /// P2_* flags.
pub ki_flag2: ::c_int, pub ki_flag2: c_int,
/// Default FIB number. /// Default FIB number.
pub ki_fibnum: ::c_int, pub ki_fibnum: c_int,
/// Credential flags. /// Credential flags.
pub ki_cr_flags: ::u_int, pub ki_cr_flags: crate::u_int,
/// Process jail ID. /// Process jail ID.
pub ki_jid: ::c_int, pub ki_jid: c_int,
/// Number of threads in total. /// Number of threads in total.
pub ki_numthreads: ::c_int, pub ki_numthreads: c_int,
/// Thread ID. /// Thread ID.
pub ki_tid: ::lwpid_t, pub ki_tid: crate::lwpid_t,
/// Process priority. /// Process priority.
pub ki_pri: ::priority, pub ki_pri: crate::priority,
/// Process rusage statistics. /// Process rusage statistics.
pub ki_rusage: ::rusage, pub ki_rusage: crate::rusage,
/// rusage of children processes. /// rusage of children processes.
pub ki_rusage_ch: ::rusage, pub ki_rusage_ch: crate::rusage,
// This is normally "struct pcb". // This is normally "struct pcb".
/// Kernel virtual addr of pcb. /// Kernel virtual addr of pcb.
pub ki_pcb: *mut ::c_void, pub ki_pcb: *mut c_void,
/// Kernel virtual addr of stack. /// Kernel virtual addr of stack.
pub ki_kstack: *mut ::c_void, pub ki_kstack: *mut c_void,
/// User convenience pointer. /// User convenience pointer.
pub ki_udata: *mut ::c_void, pub ki_udata: *mut c_void,
// This is normally "struct thread". // This is normally "struct thread".
pub ki_tdaddr: *mut ::c_void, pub ki_tdaddr: *mut c_void,
pub ki_spareptrs: [*mut ::c_void; ::KI_NSPARE_PTR], pub ki_spareptrs: [*mut c_void; crate::KI_NSPARE_PTR],
pub ki_sparelongs: [::c_long; ::KI_NSPARE_LONG], pub ki_sparelongs: [c_long; crate::KI_NSPARE_LONG],
/// PS_* flags. /// PS_* flags.
pub ki_sflag: ::c_long, pub ki_sflag: c_long,
/// kthread flag. /// kthread flag.
pub ki_tdflags: ::c_long, pub ki_tdflags: c_long,
} }
pub struct stat { pub struct stat {
pub st_dev: ::dev_t, pub st_dev: crate::dev_t,
pub st_ino: ::ino_t, pub st_ino: crate::ino_t,
pub st_nlink: ::nlink_t, pub st_nlink: crate::nlink_t,
pub st_mode: ::mode_t, pub st_mode: crate::mode_t,
st_padding0: i16, st_padding0: i16,
pub st_uid: ::uid_t, pub st_uid: crate::uid_t,
pub st_gid: ::gid_t, pub st_gid: crate::gid_t,
st_padding1: i32, st_padding1: i32,
pub st_rdev: ::dev_t, pub st_rdev: crate::dev_t,
#[cfg(target_arch = "x86")] #[cfg(target_arch = "x86")]
st_atim_ext: i32, st_atim_ext: i32,
pub st_atime: ::time_t, pub st_atime: crate::time_t,
pub st_atime_nsec: ::c_long, pub st_atime_nsec: c_long,
#[cfg(target_arch = "x86")] #[cfg(target_arch = "x86")]
st_mtim_ext: i32, st_mtim_ext: i32,
pub st_mtime: ::time_t, pub st_mtime: crate::time_t,
pub st_mtime_nsec: ::c_long, pub st_mtime_nsec: c_long,
#[cfg(target_arch = "x86")] #[cfg(target_arch = "x86")]
st_ctim_ext: i32, st_ctim_ext: i32,
pub st_ctime: ::time_t, pub st_ctime: crate::time_t,
pub st_ctime_nsec: ::c_long, pub st_ctime_nsec: c_long,
#[cfg(target_arch = "x86")] #[cfg(target_arch = "x86")]
st_btim_ext: i32, st_btim_ext: i32,
pub st_birthtime: ::time_t, pub st_birthtime: crate::time_t,
pub st_birthtime_nsec: ::c_long, pub st_birthtime_nsec: c_long,
pub st_size: ::off_t, pub st_size: off_t,
pub st_blocks: ::blkcnt_t, pub st_blocks: crate::blkcnt_t,
pub st_blksize: ::blksize_t, pub st_blksize: crate::blksize_t,
pub st_flags: ::fflags_t, pub st_flags: crate::fflags_t,
pub st_gen: u64, pub st_gen: u64,
pub st_spare: [u64; 10], pub st_spare: [u64; 10],
} }
@@ -256,14 +259,14 @@ s! {
s_no_extra_traits! { s_no_extra_traits! {
pub struct dirent { pub struct dirent {
pub d_fileno: ::ino_t, pub d_fileno: crate::ino_t,
pub d_off: ::off_t, pub d_off: off_t,
pub d_reclen: u16, pub d_reclen: u16,
pub d_type: u8, pub d_type: u8,
d_pad0: u8, d_pad0: u8,
pub d_namlen: u16, pub d_namlen: u16,
d_pad1: u16, d_pad1: u16,
pub d_name: [::c_char; 256], pub d_name: [c_char; 256],
} }
pub struct statfs { pub struct statfs {
@@ -283,12 +286,12 @@ s_no_extra_traits! {
pub f_asyncreads: u64, pub f_asyncreads: u64,
f_spare: [u64; 10], f_spare: [u64; 10],
pub f_namemax: u32, pub f_namemax: u32,
pub f_owner: ::uid_t, pub f_owner: crate::uid_t,
pub f_fsid: ::fsid_t, pub f_fsid: crate::fsid_t,
f_charspare: [::c_char; 80], f_charspare: [c_char; 80],
pub f_fstypename: [::c_char; 16], pub f_fstypename: [c_char; 16],
pub f_mntfromname: [::c_char; 1024], pub f_mntfromname: [c_char; 1024],
pub f_mntonname: [::c_char; 1024], pub f_mntonname: [c_char; 1024],
} }
pub struct vnstat { pub struct vnstat {
@@ -296,10 +299,10 @@ s_no_extra_traits! {
pub vn_size: u64, pub vn_size: u64,
pub vn_dev: u64, pub vn_dev: u64,
pub vn_fsid: u64, pub vn_fsid: u64,
pub vn_mntdir: *mut ::c_char, pub vn_mntdir: *mut c_char,
pub vn_type: ::c_int, pub vn_type: c_int,
pub vn_mode: u16, pub vn_mode: u16,
pub vn_devname: [::c_char; ::SPECNAMELEN as usize + 1], pub vn_devname: [c_char; crate::SPECNAMELEN as usize + 1],
} }
} }
@@ -326,20 +329,20 @@ cfg_if! {
&& self.f_fsid == other.f_fsid && self.f_fsid == other.f_fsid
&& self.f_fstypename == other.f_fstypename && self.f_fstypename == other.f_fstypename
&& self && self
.f_mntfromname .f_mntfromname
.iter() .iter()
.zip(other.f_mntfromname.iter()) .zip(other.f_mntfromname.iter())
.all(|(a,b)| a == b) .all(|(a, b)| a == b)
&& self && self
.f_mntonname .f_mntonname
.iter() .iter()
.zip(other.f_mntonname.iter()) .zip(other.f_mntonname.iter())
.all(|(a,b)| a == b) .all(|(a, b)| a == b)
} }
} }
impl Eq for statfs {} impl Eq for statfs {}
impl ::fmt::Debug for statfs { impl fmt::Debug for statfs {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("statfs") f.debug_struct("statfs")
.field("f_bsize", &self.f_bsize) .field("f_bsize", &self.f_bsize)
.field("f_iosize", &self.f_iosize) .field("f_iosize", &self.f_iosize)
@@ -361,8 +364,8 @@ cfg_if! {
.finish() .finish()
} }
} }
impl ::hash::Hash for statfs { impl hash::Hash for statfs {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.f_version.hash(state); self.f_version.hash(state);
self.f_type.hash(state); self.f_type.hash(state);
self.f_flags.hash(state); self.f_flags.hash(state);
@@ -394,16 +397,15 @@ cfg_if! {
&& self.d_reclen == other.d_reclen && self.d_reclen == other.d_reclen
&& self.d_type == other.d_type && self.d_type == other.d_type
&& self.d_namlen == other.d_namlen && self.d_namlen == other.d_namlen
&& self && self.d_name[..self.d_namlen as _]
.d_name[..self.d_namlen as _] .iter()
.iter() .zip(other.d_name.iter())
.zip(other.d_name.iter()) .all(|(a, b)| a == b)
.all(|(a,b)| a == b)
} }
} }
impl Eq for dirent {} impl Eq for dirent {}
impl ::fmt::Debug for dirent { impl fmt::Debug for dirent {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("dirent") f.debug_struct("dirent")
.field("d_fileno", &self.d_fileno) .field("d_fileno", &self.d_fileno)
.field("d_off", &self.d_off) .field("d_off", &self.d_off)
@@ -414,8 +416,8 @@ cfg_if! {
.finish() .finish()
} }
} }
impl ::hash::Hash for dirent { impl hash::Hash for dirent {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.d_fileno.hash(state); self.d_fileno.hash(state);
self.d_off.hash(state); self.d_off.hash(state);
self.d_reclen.hash(state); self.d_reclen.hash(state);
@@ -427,23 +429,23 @@ cfg_if! {
impl PartialEq for vnstat { impl PartialEq for vnstat {
fn eq(&self, other: &vnstat) -> bool { fn eq(&self, other: &vnstat) -> bool {
let self_vn_devname: &[::c_char] = &self.vn_devname; let self_vn_devname: &[c_char] = &self.vn_devname;
let other_vn_devname: &[::c_char] = &other.vn_devname; let other_vn_devname: &[c_char] = &other.vn_devname;
self.vn_fileid == other.vn_fileid && self.vn_fileid == other.vn_fileid
self.vn_size == other.vn_size && && self.vn_size == other.vn_size
self.vn_dev == other.vn_dev && && self.vn_dev == other.vn_dev
self.vn_fsid == other.vn_fsid && && self.vn_fsid == other.vn_fsid
self.vn_mntdir == other.vn_mntdir && && self.vn_mntdir == other.vn_mntdir
self.vn_type == other.vn_type && && self.vn_type == other.vn_type
self.vn_mode == other.vn_mode && && self.vn_mode == other.vn_mode
self_vn_devname == other_vn_devname && self_vn_devname == other_vn_devname
} }
} }
impl Eq for vnstat {} impl Eq for vnstat {}
impl ::fmt::Debug for vnstat { impl fmt::Debug for vnstat {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let self_vn_devname: &[::c_char] = &self.vn_devname; let self_vn_devname: &[c_char] = &self.vn_devname;
f.debug_struct("vnstat") f.debug_struct("vnstat")
.field("vn_fileid", &self.vn_fileid) .field("vn_fileid", &self.vn_fileid)
@@ -457,9 +459,9 @@ cfg_if! {
.finish() .finish()
} }
} }
impl ::hash::Hash for vnstat { impl hash::Hash for vnstat {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
let self_vn_devname: &[::c_char] = &self.vn_devname; let self_vn_devname: &[c_char] = &self.vn_devname;
self.vn_fileid.hash(state); self.vn_fileid.hash(state);
self.vn_size.hash(state); self.vn_size.hash(state);
@@ -474,19 +476,19 @@ cfg_if! {
} }
} }
pub const RAND_MAX: ::c_int = 0x7fff_fffd; pub const RAND_MAX: c_int = 0x7fff_fffd;
pub const ELAST: ::c_int = 97; pub const ELAST: c_int = 97;
/// max length of devicename /// max length of devicename
pub const SPECNAMELEN: ::c_int = 63; pub const SPECNAMELEN: c_int = 63;
pub const KI_NSPARE_PTR: usize = 6; pub const KI_NSPARE_PTR: usize = 6;
pub const MINCORE_SUPER: ::c_int = 0x20; pub const MINCORE_SUPER: c_int = 0x20;
safe_f! { safe_f! {
pub {const} fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t { pub {const} fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
let major = major as ::dev_t; let major = major as crate::dev_t;
let minor = minor as ::dev_t; let minor = minor as crate::dev_t;
let mut dev = 0; let mut dev = 0;
dev |= ((major & 0xffffff00) as dev_t) << 32; dev |= ((major & 0xffffff00) as dev_t) << 32;
dev |= ((major & 0x000000ff) as dev_t) << 8; dev |= ((major & 0x000000ff) as dev_t) << 8;
@@ -494,32 +496,30 @@ safe_f! {
dev |= ((minor & 0xffff00ff) as dev_t) << 0; dev |= ((minor & 0xffff00ff) as dev_t) << 0;
dev dev
} }
}
f! { pub {const} fn major(dev: crate::dev_t) -> c_int {
pub fn major(dev: ::dev_t) -> ::c_int { (((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as c_int
(((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as ::c_int
} }
pub fn minor(dev: ::dev_t) -> ::c_int { pub {const} fn minor(dev: crate::dev_t) -> c_int {
(((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as ::c_int (((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as c_int
} }
} }
extern "C" { extern "C" {
pub fn setgrent(); pub fn setgrent();
pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int; pub fn mprotect(addr: *mut c_void, len: size_t, prot: c_int) -> c_int;
pub fn freelocale(loc: ::locale_t); pub fn freelocale(loc: crate::locale_t);
pub fn msgrcv( pub fn msgrcv(
msqid: ::c_int, msqid: c_int,
msgp: *mut ::c_void, msgp: *mut c_void,
msgsz: ::size_t, msgsz: size_t,
msgtyp: ::c_long, msgtyp: c_long,
msgflg: ::c_int, msgflg: c_int,
) -> ::ssize_t; ) -> ssize_t;
pub fn dirname(path: *mut ::c_char) -> *mut ::c_char; pub fn dirname(path: *mut c_char) -> *mut c_char;
pub fn basename(path: *mut ::c_char) -> *mut ::c_char; pub fn basename(path: *mut c_char) -> *mut c_char;
} }
cfg_if! { cfg_if! {

View File

@@ -1,5 +1,7 @@
pub const PROC_KPTI_CTL: ::c_int = ::PROC_PROCCTL_MD_MIN; use crate::prelude::*;
pub const PROC_KPTI_CTL_ENABLE_ON_EXEC: ::c_int = 1;
pub const PROC_KPTI_CTL_DISABLE_ON_EXEC: ::c_int = 2; pub const PROC_KPTI_CTL: c_int = crate::PROC_PROCCTL_MD_MIN;
pub const PROC_KPTI_STATUS: ::c_int = ::PROC_PROCCTL_MD_MIN + 1; pub const PROC_KPTI_CTL_ENABLE_ON_EXEC: c_int = 1;
pub const PROC_KPTI_STATUS_ACTIVE: ::c_int = 0x80000000; pub const PROC_KPTI_CTL_DISABLE_ON_EXEC: c_int = 2;
pub const PROC_KPTI_STATUS: c_int = crate::PROC_PROCCTL_MD_MIN + 1;
pub const PROC_KPTI_STATUS_ACTIVE: c_int = 0x80000000;

View File

@@ -1,264 +1,270 @@
use crate::off_t;
use crate::prelude::*;
// APIs in FreeBSD 13 that have changed since 11. // APIs in FreeBSD 13 that have changed since 11.
pub type nlink_t = u64; pub type nlink_t = u64;
pub type dev_t = u64; pub type dev_t = u64;
pub type ino_t = u64; pub type ino_t = u64;
pub type shmatt_t = ::c_uint; pub type shmatt_t = c_uint;
pub type kpaddr_t = u64; pub type kpaddr_t = u64;
pub type kssize_t = i64; pub type kssize_t = i64;
pub type domainset_t = __c_anonymous_domainset; pub type domainset_t = __c_anonymous_domainset;
s! { s! {
pub struct shmid_ds { pub struct shmid_ds {
pub shm_perm: ::ipc_perm, pub shm_perm: crate::ipc_perm,
pub shm_segsz: ::size_t, pub shm_segsz: size_t,
pub shm_lpid: ::pid_t, pub shm_lpid: crate::pid_t,
pub shm_cpid: ::pid_t, pub shm_cpid: crate::pid_t,
pub shm_nattch: ::shmatt_t, pub shm_nattch: crate::shmatt_t,
pub shm_atime: ::time_t, pub shm_atime: crate::time_t,
pub shm_dtime: ::time_t, pub shm_dtime: crate::time_t,
pub shm_ctime: ::time_t, pub shm_ctime: crate::time_t,
} }
pub struct kevent { pub struct kevent {
pub ident: ::uintptr_t, pub ident: crate::uintptr_t,
pub filter: ::c_short, pub filter: c_short,
pub flags: ::c_ushort, pub flags: c_ushort,
pub fflags: ::c_uint, pub fflags: c_uint,
pub data: i64, pub data: i64,
pub udata: *mut ::c_void, pub udata: *mut c_void,
pub ext: [u64; 4], pub ext: [u64; 4],
} }
pub struct kvm_page { pub struct kvm_page {
pub kp_version: ::u_int, pub kp_version: crate::u_int,
pub kp_paddr: ::kpaddr_t, pub kp_paddr: crate::kpaddr_t,
pub kp_kmap_vaddr: ::kvaddr_t, pub kp_kmap_vaddr: crate::kvaddr_t,
pub kp_dmap_vaddr: ::kvaddr_t, pub kp_dmap_vaddr: crate::kvaddr_t,
pub kp_prot: ::vm_prot_t, pub kp_prot: crate::vm_prot_t,
pub kp_offset: ::off_t, pub kp_offset: off_t,
pub kp_len: ::size_t, pub kp_len: size_t,
} }
pub struct __c_anonymous_domainset { pub struct __c_anonymous_domainset {
_priv: [::uintptr_t; 4], #[cfg(target_pointer_width = "64")]
_priv: [c_ulong; 4],
#[cfg(target_pointer_width = "32")]
_priv: [c_ulong; 8],
} }
pub struct kinfo_proc { pub struct kinfo_proc {
/// Size of this structure. /// Size of this structure.
pub ki_structsize: ::c_int, pub ki_structsize: c_int,
/// Reserved: layout identifier. /// Reserved: layout identifier.
pub ki_layout: ::c_int, pub ki_layout: c_int,
/// Address of command arguments. /// Address of command arguments.
pub ki_args: *mut ::pargs, pub ki_args: *mut crate::pargs,
// This is normally "struct proc". // This is normally "struct proc".
/// Address of proc. /// Address of proc.
pub ki_paddr: *mut ::c_void, pub ki_paddr: *mut c_void,
// This is normally "struct user". // This is normally "struct user".
/// Kernel virtual address of u-area. /// Kernel virtual address of u-area.
pub ki_addr: *mut ::c_void, pub ki_addr: *mut c_void,
// This is normally "struct vnode". // This is normally "struct vnode".
/// Pointer to trace file. /// Pointer to trace file.
pub ki_tracep: *mut ::c_void, pub ki_tracep: *mut c_void,
// This is normally "struct vnode". // This is normally "struct vnode".
/// Pointer to executable file. /// Pointer to executable file.
pub ki_textvp: *mut ::c_void, pub ki_textvp: *mut c_void,
// This is normally "struct filedesc". // This is normally "struct filedesc".
/// Pointer to open file info. /// Pointer to open file info.
pub ki_fd: *mut ::c_void, pub ki_fd: *mut c_void,
// This is normally "struct vmspace". // This is normally "struct vmspace".
/// Pointer to kernel vmspace struct. /// Pointer to kernel vmspace struct.
pub ki_vmspace: *mut ::c_void, pub ki_vmspace: *mut c_void,
/// Sleep address. /// Sleep address.
pub ki_wchan: *const ::c_void, pub ki_wchan: *const c_void,
/// Process identifier. /// Process identifier.
pub ki_pid: ::pid_t, pub ki_pid: crate::pid_t,
/// Parent process ID. /// Parent process ID.
pub ki_ppid: ::pid_t, pub ki_ppid: crate::pid_t,
/// Process group ID. /// Process group ID.
pub ki_pgid: ::pid_t, pub ki_pgid: crate::pid_t,
/// tty process group ID. /// tty process group ID.
pub ki_tpgid: ::pid_t, pub ki_tpgid: crate::pid_t,
/// Process session ID. /// Process session ID.
pub ki_sid: ::pid_t, pub ki_sid: crate::pid_t,
/// Terminal session ID. /// Terminal session ID.
pub ki_tsid: ::pid_t, pub ki_tsid: crate::pid_t,
/// Job control counter. /// Job control counter.
pub ki_jobc: ::c_short, pub ki_jobc: c_short,
/// Unused (just here for alignment). /// Unused (just here for alignment).
pub ki_spare_short1: ::c_short, pub ki_spare_short1: c_short,
/// Controlling tty dev. /// Controlling tty dev.
pub ki_tdev_freebsd11: u32, pub ki_tdev_freebsd11: u32,
/// Signals arrived but not delivered. /// Signals arrived but not delivered.
pub ki_siglist: ::sigset_t, pub ki_siglist: crate::sigset_t,
/// Current signal mask. /// Current signal mask.
pub ki_sigmask: ::sigset_t, pub ki_sigmask: crate::sigset_t,
/// Signals being ignored. /// Signals being ignored.
pub ki_sigignore: ::sigset_t, pub ki_sigignore: crate::sigset_t,
/// Signals being caught by user. /// Signals being caught by user.
pub ki_sigcatch: ::sigset_t, pub ki_sigcatch: crate::sigset_t,
/// Effective user ID. /// Effective user ID.
pub ki_uid: ::uid_t, pub ki_uid: crate::uid_t,
/// Real user ID. /// Real user ID.
pub ki_ruid: ::uid_t, pub ki_ruid: crate::uid_t,
/// Saved effective user ID. /// Saved effective user ID.
pub ki_svuid: ::uid_t, pub ki_svuid: crate::uid_t,
/// Real group ID. /// Real group ID.
pub ki_rgid: ::gid_t, pub ki_rgid: crate::gid_t,
/// Saved effective group ID. /// Saved effective group ID.
pub ki_svgid: ::gid_t, pub ki_svgid: crate::gid_t,
/// Number of groups. /// Number of groups.
pub ki_ngroups: ::c_short, pub ki_ngroups: c_short,
/// Unused (just here for alignment). /// Unused (just here for alignment).
pub ki_spare_short2: ::c_short, pub ki_spare_short2: c_short,
/// Groups. /// Groups.
pub ki_groups: [::gid_t; ::KI_NGROUPS], pub ki_groups: [crate::gid_t; crate::KI_NGROUPS],
/// Virtual size. /// Virtual size.
pub ki_size: ::vm_size_t, pub ki_size: crate::vm_size_t,
/// Current resident set size in pages. /// Current resident set size in pages.
pub ki_rssize: ::segsz_t, pub ki_rssize: crate::segsz_t,
/// Resident set size before last swap. /// Resident set size before last swap.
pub ki_swrss: ::segsz_t, pub ki_swrss: crate::segsz_t,
/// Text size (pages) XXX. /// Text size (pages) XXX.
pub ki_tsize: ::segsz_t, pub ki_tsize: crate::segsz_t,
/// Data size (pages) XXX. /// Data size (pages) XXX.
pub ki_dsize: ::segsz_t, pub ki_dsize: crate::segsz_t,
/// Stack size (pages). /// Stack size (pages).
pub ki_ssize: ::segsz_t, pub ki_ssize: crate::segsz_t,
/// Exit status for wait & stop signal. /// Exit status for wait & stop signal.
pub ki_xstat: ::u_short, pub ki_xstat: crate::u_short,
/// Accounting flags. /// Accounting flags.
pub ki_acflag: ::u_short, pub ki_acflag: crate::u_short,
/// %cpu for process during `ki_swtime`. /// %cpu for process during `ki_swtime`.
pub ki_pctcpu: ::fixpt_t, pub ki_pctcpu: crate::fixpt_t,
/// Time averaged value of `ki_cpticks`. /// Time averaged value of `ki_cpticks`.
pub ki_estcpu: ::u_int, pub ki_estcpu: crate::u_int,
/// Time since last blocked. /// Time since last blocked.
pub ki_slptime: ::u_int, pub ki_slptime: crate::u_int,
/// Time swapped in or out. /// Time swapped in or out.
pub ki_swtime: ::u_int, pub ki_swtime: crate::u_int,
/// Number of copy-on-write faults. /// Number of copy-on-write faults.
pub ki_cow: ::u_int, pub ki_cow: crate::u_int,
/// Real time in microsec. /// Real time in microsec.
pub ki_runtime: u64, pub ki_runtime: u64,
/// Starting time. /// Starting time.
pub ki_start: ::timeval, pub ki_start: crate::timeval,
/// Time used by process children. /// Time used by process children.
pub ki_childtime: ::timeval, pub ki_childtime: crate::timeval,
/// P_* flags. /// P_* flags.
pub ki_flag: ::c_long, pub ki_flag: c_long,
/// KI_* flags (below). /// KI_* flags (below).
pub ki_kiflag: ::c_long, pub ki_kiflag: c_long,
/// Kernel trace points. /// Kernel trace points.
pub ki_traceflag: ::c_int, pub ki_traceflag: c_int,
/// S* process status. /// S* process status.
pub ki_stat: ::c_char, pub ki_stat: c_char,
/// Process "nice" value. /// Process "nice" value.
pub ki_nice: i8, // signed char pub ki_nice: i8, // signed char
/// Process lock (prevent swap) count. /// Process lock (prevent swap) count.
pub ki_lock: ::c_char, pub ki_lock: c_char,
/// Run queue index. /// Run queue index.
pub ki_rqindex: ::c_char, pub ki_rqindex: c_char,
/// Which cpu we are on. /// Which cpu we are on.
pub ki_oncpu_old: ::c_uchar, pub ki_oncpu_old: c_uchar,
/// Last cpu we were on. /// Last cpu we were on.
pub ki_lastcpu_old: ::c_uchar, pub ki_lastcpu_old: c_uchar,
/// Thread name. /// Thread name.
pub ki_tdname: [::c_char; ::TDNAMLEN + 1], pub ki_tdname: [c_char; crate::TDNAMLEN + 1],
/// Wchan message. /// Wchan message.
pub ki_wmesg: [::c_char; ::WMESGLEN + 1], pub ki_wmesg: [c_char; crate::WMESGLEN + 1],
/// Setlogin name. /// Setlogin name.
pub ki_login: [::c_char; ::LOGNAMELEN + 1], pub ki_login: [c_char; crate::LOGNAMELEN + 1],
/// Lock name. /// Lock name.
pub ki_lockname: [::c_char; ::LOCKNAMELEN + 1], pub ki_lockname: [c_char; crate::LOCKNAMELEN + 1],
/// Command name. /// Command name.
pub ki_comm: [::c_char; ::COMMLEN + 1], pub ki_comm: [c_char; crate::COMMLEN + 1],
/// Emulation name. /// Emulation name.
pub ki_emul: [::c_char; ::KI_EMULNAMELEN + 1], pub ki_emul: [c_char; crate::KI_EMULNAMELEN + 1],
/// Login class. /// Login class.
pub ki_loginclass: [::c_char; ::LOGINCLASSLEN + 1], pub ki_loginclass: [c_char; crate::LOGINCLASSLEN + 1],
/// More thread name. /// More thread name.
pub ki_moretdname: [::c_char; ::MAXCOMLEN - ::TDNAMLEN + 1], pub ki_moretdname: [c_char; crate::MAXCOMLEN - crate::TDNAMLEN + 1],
/// Spare string space. /// Spare string space.
pub ki_sparestrings: [[::c_char; 23]; 2], // little hack to allow PartialEq pub ki_sparestrings: [[c_char; 23]; 2], // little hack to allow PartialEq
/// Spare room for growth. /// Spare room for growth.
pub ki_spareints: [::c_int; ::KI_NSPARE_INT], pub ki_spareints: [c_int; crate::KI_NSPARE_INT],
/// Controlling tty dev. /// Controlling tty dev.
pub ki_tdev: u64, pub ki_tdev: u64,
/// Which cpu we are on. /// Which cpu we are on.
pub ki_oncpu: ::c_int, pub ki_oncpu: c_int,
/// Last cpu we were on. /// Last cpu we were on.
pub ki_lastcpu: ::c_int, pub ki_lastcpu: c_int,
/// PID of tracing process. /// PID of tracing process.
pub ki_tracer: ::c_int, pub ki_tracer: c_int,
/// P2_* flags. /// P2_* flags.
pub ki_flag2: ::c_int, pub ki_flag2: c_int,
/// Default FIB number. /// Default FIB number.
pub ki_fibnum: ::c_int, pub ki_fibnum: c_int,
/// Credential flags. /// Credential flags.
pub ki_cr_flags: ::u_int, pub ki_cr_flags: crate::u_int,
/// Process jail ID. /// Process jail ID.
pub ki_jid: ::c_int, pub ki_jid: c_int,
/// Number of threads in total. /// Number of threads in total.
pub ki_numthreads: ::c_int, pub ki_numthreads: c_int,
/// Thread ID. /// Thread ID.
pub ki_tid: ::lwpid_t, pub ki_tid: crate::lwpid_t,
/// Process priority. /// Process priority.
pub ki_pri: ::priority, pub ki_pri: crate::priority,
/// Process rusage statistics. /// Process rusage statistics.
pub ki_rusage: ::rusage, pub ki_rusage: crate::rusage,
/// rusage of children processes. /// rusage of children processes.
pub ki_rusage_ch: ::rusage, pub ki_rusage_ch: crate::rusage,
// This is normally "struct pcb". // This is normally "struct pcb".
/// Kernel virtual addr of pcb. /// Kernel virtual addr of pcb.
pub ki_pcb: *mut ::c_void, pub ki_pcb: *mut c_void,
/// Kernel virtual addr of stack. /// Kernel virtual addr of stack.
pub ki_kstack: *mut ::c_void, pub ki_kstack: *mut c_void,
/// User convenience pointer. /// User convenience pointer.
pub ki_udata: *mut ::c_void, pub ki_udata: *mut c_void,
// This is normally "struct thread". // This is normally "struct thread".
pub ki_tdaddr: *mut ::c_void, pub ki_tdaddr: *mut c_void,
// This is normally "struct pwddesc". // This is normally "struct pwddesc".
/// Pointer to process paths info. /// Pointer to process paths info.
pub ki_pd: *mut ::c_void, pub ki_pd: *mut c_void,
pub ki_spareptrs: [*mut ::c_void; ::KI_NSPARE_PTR], pub ki_spareptrs: [*mut c_void; crate::KI_NSPARE_PTR],
pub ki_sparelongs: [::c_long; ::KI_NSPARE_LONG], pub ki_sparelongs: [c_long; crate::KI_NSPARE_LONG],
/// PS_* flags. /// PS_* flags.
pub ki_sflag: ::c_long, pub ki_sflag: c_long,
/// kthread flag. /// kthread flag.
pub ki_tdflags: ::c_long, pub ki_tdflags: c_long,
} }
pub struct stat { pub struct stat {
pub st_dev: ::dev_t, pub st_dev: crate::dev_t,
pub st_ino: ::ino_t, pub st_ino: crate::ino_t,
pub st_nlink: ::nlink_t, pub st_nlink: crate::nlink_t,
pub st_mode: ::mode_t, pub st_mode: crate::mode_t,
st_padding0: i16, st_padding0: i16,
pub st_uid: ::uid_t, pub st_uid: crate::uid_t,
pub st_gid: ::gid_t, pub st_gid: crate::gid_t,
st_padding1: i32, st_padding1: i32,
pub st_rdev: ::dev_t, pub st_rdev: crate::dev_t,
#[cfg(target_arch = "x86")] #[cfg(target_arch = "x86")]
st_atim_ext: i32, st_atim_ext: i32,
pub st_atime: ::time_t, pub st_atime: crate::time_t,
pub st_atime_nsec: ::c_long, pub st_atime_nsec: c_long,
#[cfg(target_arch = "x86")] #[cfg(target_arch = "x86")]
st_mtim_ext: i32, st_mtim_ext: i32,
pub st_mtime: ::time_t, pub st_mtime: crate::time_t,
pub st_mtime_nsec: ::c_long, pub st_mtime_nsec: c_long,
#[cfg(target_arch = "x86")] #[cfg(target_arch = "x86")]
st_ctim_ext: i32, st_ctim_ext: i32,
pub st_ctime: ::time_t, pub st_ctime: crate::time_t,
pub st_ctime_nsec: ::c_long, pub st_ctime_nsec: c_long,
#[cfg(target_arch = "x86")] #[cfg(target_arch = "x86")]
st_btim_ext: i32, st_btim_ext: i32,
pub st_birthtime: ::time_t, pub st_birthtime: crate::time_t,
pub st_birthtime_nsec: ::c_long, pub st_birthtime_nsec: c_long,
pub st_size: ::off_t, pub st_size: off_t,
pub st_blocks: ::blkcnt_t, pub st_blocks: crate::blkcnt_t,
pub st_blksize: ::blksize_t, pub st_blksize: crate::blksize_t,
pub st_flags: ::fflags_t, pub st_flags: crate::fflags_t,
pub st_gen: u64, pub st_gen: u64,
pub st_spare: [u64; 10], pub st_spare: [u64; 10],
} }
@@ -266,14 +272,14 @@ s! {
s_no_extra_traits! { s_no_extra_traits! {
pub struct dirent { pub struct dirent {
pub d_fileno: ::ino_t, pub d_fileno: crate::ino_t,
pub d_off: ::off_t, pub d_off: off_t,
pub d_reclen: u16, pub d_reclen: u16,
pub d_type: u8, pub d_type: u8,
d_pad0: u8, d_pad0: u8,
pub d_namlen: u16, pub d_namlen: u16,
d_pad1: u16, d_pad1: u16,
pub d_name: [::c_char; 256], pub d_name: [c_char; 256],
} }
pub struct statfs { pub struct statfs {
@@ -293,12 +299,12 @@ s_no_extra_traits! {
pub f_asyncreads: u64, pub f_asyncreads: u64,
f_spare: [u64; 10], f_spare: [u64; 10],
pub f_namemax: u32, pub f_namemax: u32,
pub f_owner: ::uid_t, pub f_owner: crate::uid_t,
pub f_fsid: ::fsid_t, pub f_fsid: crate::fsid_t,
f_charspare: [::c_char; 80], f_charspare: [c_char; 80],
pub f_fstypename: [::c_char; 16], pub f_fstypename: [c_char; 16],
pub f_mntfromname: [::c_char; 1024], pub f_mntfromname: [c_char; 1024],
pub f_mntonname: [::c_char; 1024], pub f_mntonname: [c_char; 1024],
} }
pub struct vnstat { pub struct vnstat {
@@ -306,10 +312,10 @@ s_no_extra_traits! {
pub vn_size: u64, pub vn_size: u64,
pub vn_dev: u64, pub vn_dev: u64,
pub vn_fsid: u64, pub vn_fsid: u64,
pub vn_mntdir: *mut ::c_char, pub vn_mntdir: *mut c_char,
pub vn_type: ::c_int, pub vn_type: c_int,
pub vn_mode: u16, pub vn_mode: u16,
pub vn_devname: [::c_char; ::SPECNAMELEN as usize + 1], pub vn_devname: [c_char; crate::SPECNAMELEN as usize + 1],
} }
} }
@@ -336,20 +342,20 @@ cfg_if! {
&& self.f_fsid == other.f_fsid && self.f_fsid == other.f_fsid
&& self.f_fstypename == other.f_fstypename && self.f_fstypename == other.f_fstypename
&& self && self
.f_mntfromname .f_mntfromname
.iter() .iter()
.zip(other.f_mntfromname.iter()) .zip(other.f_mntfromname.iter())
.all(|(a,b)| a == b) .all(|(a, b)| a == b)
&& self && self
.f_mntonname .f_mntonname
.iter() .iter()
.zip(other.f_mntonname.iter()) .zip(other.f_mntonname.iter())
.all(|(a,b)| a == b) .all(|(a, b)| a == b)
} }
} }
impl Eq for statfs {} impl Eq for statfs {}
impl ::fmt::Debug for statfs { impl fmt::Debug for statfs {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("statfs") f.debug_struct("statfs")
.field("f_bsize", &self.f_bsize) .field("f_bsize", &self.f_bsize)
.field("f_iosize", &self.f_iosize) .field("f_iosize", &self.f_iosize)
@@ -371,8 +377,8 @@ cfg_if! {
.finish() .finish()
} }
} }
impl ::hash::Hash for statfs { impl hash::Hash for statfs {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.f_version.hash(state); self.f_version.hash(state);
self.f_type.hash(state); self.f_type.hash(state);
self.f_flags.hash(state); self.f_flags.hash(state);
@@ -404,16 +410,15 @@ cfg_if! {
&& self.d_reclen == other.d_reclen && self.d_reclen == other.d_reclen
&& self.d_type == other.d_type && self.d_type == other.d_type
&& self.d_namlen == other.d_namlen && self.d_namlen == other.d_namlen
&& self && self.d_name[..self.d_namlen as _]
.d_name[..self.d_namlen as _] .iter()
.iter() .zip(other.d_name.iter())
.zip(other.d_name.iter()) .all(|(a, b)| a == b)
.all(|(a,b)| a == b)
} }
} }
impl Eq for dirent {} impl Eq for dirent {}
impl ::fmt::Debug for dirent { impl fmt::Debug for dirent {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("dirent") f.debug_struct("dirent")
.field("d_fileno", &self.d_fileno) .field("d_fileno", &self.d_fileno)
.field("d_off", &self.d_off) .field("d_off", &self.d_off)
@@ -424,8 +429,8 @@ cfg_if! {
.finish() .finish()
} }
} }
impl ::hash::Hash for dirent { impl hash::Hash for dirent {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.d_fileno.hash(state); self.d_fileno.hash(state);
self.d_off.hash(state); self.d_off.hash(state);
self.d_reclen.hash(state); self.d_reclen.hash(state);
@@ -437,23 +442,23 @@ cfg_if! {
impl PartialEq for vnstat { impl PartialEq for vnstat {
fn eq(&self, other: &vnstat) -> bool { fn eq(&self, other: &vnstat) -> bool {
let self_vn_devname: &[::c_char] = &self.vn_devname; let self_vn_devname: &[c_char] = &self.vn_devname;
let other_vn_devname: &[::c_char] = &other.vn_devname; let other_vn_devname: &[c_char] = &other.vn_devname;
self.vn_fileid == other.vn_fileid && self.vn_fileid == other.vn_fileid
self.vn_size == other.vn_size && && self.vn_size == other.vn_size
self.vn_dev == other.vn_dev && && self.vn_dev == other.vn_dev
self.vn_fsid == other.vn_fsid && && self.vn_fsid == other.vn_fsid
self.vn_mntdir == other.vn_mntdir && && self.vn_mntdir == other.vn_mntdir
self.vn_type == other.vn_type && && self.vn_type == other.vn_type
self.vn_mode == other.vn_mode && && self.vn_mode == other.vn_mode
self_vn_devname == other_vn_devname && self_vn_devname == other_vn_devname
} }
} }
impl Eq for vnstat {} impl Eq for vnstat {}
impl ::fmt::Debug for vnstat { impl fmt::Debug for vnstat {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let self_vn_devname: &[::c_char] = &self.vn_devname; let self_vn_devname: &[c_char] = &self.vn_devname;
f.debug_struct("vnstat") f.debug_struct("vnstat")
.field("vn_fileid", &self.vn_fileid) .field("vn_fileid", &self.vn_fileid)
@@ -467,9 +472,9 @@ cfg_if! {
.finish() .finish()
} }
} }
impl ::hash::Hash for vnstat { impl hash::Hash for vnstat {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
let self_vn_devname: &[::c_char] = &self.vn_devname; let self_vn_devname: &[c_char] = &self.vn_devname;
self.vn_fileid.hash(state); self.vn_fileid.hash(state);
self.vn_size.hash(state); self.vn_size.hash(state);
@@ -484,28 +489,28 @@ cfg_if! {
} }
} }
pub const RAND_MAX: ::c_int = 0x7fff_ffff; pub const RAND_MAX: c_int = 0x7fff_ffff;
pub const ELAST: ::c_int = 97; pub const ELAST: c_int = 97;
pub const KF_TYPE_EVENTFD: ::c_int = 13; pub const KF_TYPE_EVENTFD: c_int = 13;
/// max length of devicename /// max length of devicename
pub const SPECNAMELEN: ::c_int = 255; pub const SPECNAMELEN: c_int = 255;
pub const KI_NSPARE_PTR: usize = 5; pub const KI_NSPARE_PTR: usize = 5;
/// domainset policies /// domainset policies
pub const DOMAINSET_POLICY_INVALID: ::c_int = 0; pub const DOMAINSET_POLICY_INVALID: c_int = 0;
pub const DOMAINSET_POLICY_ROUNDROBIN: ::c_int = 1; pub const DOMAINSET_POLICY_ROUNDROBIN: c_int = 1;
pub const DOMAINSET_POLICY_FIRSTTOUCH: ::c_int = 2; pub const DOMAINSET_POLICY_FIRSTTOUCH: c_int = 2;
pub const DOMAINSET_POLICY_PREFER: ::c_int = 3; pub const DOMAINSET_POLICY_PREFER: c_int = 3;
pub const DOMAINSET_POLICY_INTERLEAVE: ::c_int = 4; pub const DOMAINSET_POLICY_INTERLEAVE: c_int = 4;
pub const MINCORE_SUPER: ::c_int = 0x20; pub const MINCORE_SUPER: c_int = 0x20;
safe_f! { safe_f! {
pub {const} fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t { pub {const} fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
let major = major as ::dev_t; let major = major as crate::dev_t;
let minor = minor as ::dev_t; let minor = minor as crate::dev_t;
let mut dev = 0; let mut dev = 0;
dev |= ((major & 0xffffff00) as dev_t) << 32; dev |= ((major & 0xffffff00) as dev_t) << 32;
dev |= ((major & 0x000000ff) as dev_t) << 8; dev |= ((major & 0x000000ff) as dev_t) << 8;
@@ -513,54 +518,52 @@ safe_f! {
dev |= ((minor & 0xffff00ff) as dev_t) << 0; dev |= ((minor & 0xffff00ff) as dev_t) << 0;
dev dev
} }
}
f! { pub {const} fn major(dev: crate::dev_t) -> c_int {
pub fn major(dev: ::dev_t) -> ::c_int { (((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as c_int
(((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as ::c_int
} }
pub fn minor(dev: ::dev_t) -> ::c_int { pub {const} fn minor(dev: crate::dev_t) -> c_int {
(((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as ::c_int (((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as c_int
} }
} }
extern "C" { extern "C" {
pub fn setgrent(); pub fn setgrent();
pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int; pub fn mprotect(addr: *mut c_void, len: size_t, prot: c_int) -> c_int;
pub fn freelocale(loc: ::locale_t); pub fn freelocale(loc: crate::locale_t);
pub fn msgrcv( pub fn msgrcv(
msqid: ::c_int, msqid: c_int,
msgp: *mut ::c_void, msgp: *mut c_void,
msgsz: ::size_t, msgsz: size_t,
msgtyp: ::c_long, msgtyp: c_long,
msgflg: ::c_int, msgflg: c_int,
) -> ::ssize_t; ) -> ssize_t;
pub fn cpuset_getdomain( pub fn cpuset_getdomain(
level: ::cpulevel_t, level: crate::cpulevel_t,
which: ::cpuwhich_t, which: crate::cpuwhich_t,
id: ::id_t, id: crate::id_t,
setsize: ::size_t, setsize: size_t,
mask: *mut ::domainset_t, mask: *mut crate::domainset_t,
policy: *mut ::c_int, policy: *mut c_int,
) -> ::c_int; ) -> c_int;
pub fn cpuset_setdomain( pub fn cpuset_setdomain(
level: ::cpulevel_t, level: crate::cpulevel_t,
which: ::cpuwhich_t, which: crate::cpuwhich_t,
id: ::id_t, id: crate::id_t,
setsize: ::size_t, setsize: size_t,
mask: *const ::domainset_t, mask: *const crate::domainset_t,
policy: ::c_int, policy: c_int,
) -> ::c_int; ) -> c_int;
pub fn dirname(path: *mut ::c_char) -> *mut ::c_char; pub fn dirname(path: *mut c_char) -> *mut c_char;
pub fn basename(path: *mut ::c_char) -> *mut ::c_char; pub fn basename(path: *mut c_char) -> *mut c_char;
} }
#[link(name = "kvm")] #[link(name = "kvm")]
extern "C" { extern "C" {
pub fn kvm_kerndisp(kd: *mut ::kvm_t) -> ::kssize_t; pub fn kvm_kerndisp(kd: *mut crate::kvm_t) -> crate::kssize_t;
} }
cfg_if! { cfg_if! {

View File

@@ -1,5 +1,7 @@
pub const PROC_KPTI_CTL: ::c_int = ::PROC_PROCCTL_MD_MIN; use crate::prelude::*;
pub const PROC_KPTI_CTL_ENABLE_ON_EXEC: ::c_int = 1;
pub const PROC_KPTI_CTL_DISABLE_ON_EXEC: ::c_int = 2; pub const PROC_KPTI_CTL: c_int = crate::PROC_PROCCTL_MD_MIN;
pub const PROC_KPTI_STATUS: ::c_int = ::PROC_PROCCTL_MD_MIN + 1; pub const PROC_KPTI_CTL_ENABLE_ON_EXEC: c_int = 1;
pub const PROC_KPTI_STATUS_ACTIVE: ::c_int = 0x80000000; pub const PROC_KPTI_CTL_DISABLE_ON_EXEC: c_int = 2;
pub const PROC_KPTI_STATUS: c_int = crate::PROC_PROCCTL_MD_MIN + 1;
pub const PROC_KPTI_STATUS_ACTIVE: c_int = 0x80000000;

View File

@@ -1,264 +1,270 @@
use crate::off_t;
use crate::prelude::*;
// APIs in FreeBSD 14 that have changed since 11. // APIs in FreeBSD 14 that have changed since 11.
pub type nlink_t = u64; pub type nlink_t = u64;
pub type dev_t = u64; pub type dev_t = u64;
pub type ino_t = u64; pub type ino_t = u64;
pub type shmatt_t = ::c_uint; pub type shmatt_t = c_uint;
pub type kpaddr_t = u64; pub type kpaddr_t = u64;
pub type kssize_t = i64; pub type kssize_t = i64;
pub type domainset_t = __c_anonymous_domainset; pub type domainset_t = __c_anonymous_domainset;
s! { s! {
pub struct shmid_ds { pub struct shmid_ds {
pub shm_perm: ::ipc_perm, pub shm_perm: crate::ipc_perm,
pub shm_segsz: ::size_t, pub shm_segsz: size_t,
pub shm_lpid: ::pid_t, pub shm_lpid: crate::pid_t,
pub shm_cpid: ::pid_t, pub shm_cpid: crate::pid_t,
pub shm_nattch: ::shmatt_t, pub shm_nattch: crate::shmatt_t,
pub shm_atime: ::time_t, pub shm_atime: crate::time_t,
pub shm_dtime: ::time_t, pub shm_dtime: crate::time_t,
pub shm_ctime: ::time_t, pub shm_ctime: crate::time_t,
} }
pub struct kevent { pub struct kevent {
pub ident: ::uintptr_t, pub ident: crate::uintptr_t,
pub filter: ::c_short, pub filter: c_short,
pub flags: ::c_ushort, pub flags: c_ushort,
pub fflags: ::c_uint, pub fflags: c_uint,
pub data: i64, pub data: i64,
pub udata: *mut ::c_void, pub udata: *mut c_void,
pub ext: [u64; 4], pub ext: [u64; 4],
} }
pub struct kvm_page { pub struct kvm_page {
pub kp_version: ::u_int, pub kp_version: crate::u_int,
pub kp_paddr: ::kpaddr_t, pub kp_paddr: crate::kpaddr_t,
pub kp_kmap_vaddr: ::kvaddr_t, pub kp_kmap_vaddr: crate::kvaddr_t,
pub kp_dmap_vaddr: ::kvaddr_t, pub kp_dmap_vaddr: crate::kvaddr_t,
pub kp_prot: ::vm_prot_t, pub kp_prot: crate::vm_prot_t,
pub kp_offset: ::off_t, pub kp_offset: off_t,
pub kp_len: ::size_t, pub kp_len: size_t,
} }
pub struct __c_anonymous_domainset { pub struct __c_anonymous_domainset {
_priv: [::uintptr_t; 4], #[cfg(target_pointer_width = "64")]
_priv: [c_ulong; 4],
#[cfg(target_pointer_width = "32")]
_priv: [c_ulong; 8],
} }
pub struct kinfo_proc { pub struct kinfo_proc {
/// Size of this structure. /// Size of this structure.
pub ki_structsize: ::c_int, pub ki_structsize: c_int,
/// Reserved: layout identifier. /// Reserved: layout identifier.
pub ki_layout: ::c_int, pub ki_layout: c_int,
/// Address of command arguments. /// Address of command arguments.
pub ki_args: *mut ::pargs, pub ki_args: *mut crate::pargs,
// This is normally "struct proc". // This is normally "struct proc".
/// Address of proc. /// Address of proc.
pub ki_paddr: *mut ::c_void, pub ki_paddr: *mut c_void,
// This is normally "struct user". // This is normally "struct user".
/// Kernel virtual address of u-area. /// Kernel virtual address of u-area.
pub ki_addr: *mut ::c_void, pub ki_addr: *mut c_void,
// This is normally "struct vnode". // This is normally "struct vnode".
/// Pointer to trace file. /// Pointer to trace file.
pub ki_tracep: *mut ::c_void, pub ki_tracep: *mut c_void,
// This is normally "struct vnode". // This is normally "struct vnode".
/// Pointer to executable file. /// Pointer to executable file.
pub ki_textvp: *mut ::c_void, pub ki_textvp: *mut c_void,
// This is normally "struct filedesc". // This is normally "struct filedesc".
/// Pointer to open file info. /// Pointer to open file info.
pub ki_fd: *mut ::c_void, pub ki_fd: *mut c_void,
// This is normally "struct vmspace". // This is normally "struct vmspace".
/// Pointer to kernel vmspace struct. /// Pointer to kernel vmspace struct.
pub ki_vmspace: *mut ::c_void, pub ki_vmspace: *mut c_void,
/// Sleep address. /// Sleep address.
pub ki_wchan: *const ::c_void, pub ki_wchan: *const c_void,
/// Process identifier. /// Process identifier.
pub ki_pid: ::pid_t, pub ki_pid: crate::pid_t,
/// Parent process ID. /// Parent process ID.
pub ki_ppid: ::pid_t, pub ki_ppid: crate::pid_t,
/// Process group ID. /// Process group ID.
pub ki_pgid: ::pid_t, pub ki_pgid: crate::pid_t,
/// tty process group ID. /// tty process group ID.
pub ki_tpgid: ::pid_t, pub ki_tpgid: crate::pid_t,
/// Process session ID. /// Process session ID.
pub ki_sid: ::pid_t, pub ki_sid: crate::pid_t,
/// Terminal session ID. /// Terminal session ID.
pub ki_tsid: ::pid_t, pub ki_tsid: crate::pid_t,
/// Job control counter. /// Job control counter.
pub ki_jobc: ::c_short, pub ki_jobc: c_short,
/// Unused (just here for alignment). /// Unused (just here for alignment).
pub ki_spare_short1: ::c_short, pub ki_spare_short1: c_short,
/// Controlling tty dev. /// Controlling tty dev.
pub ki_tdev_freebsd11: u32, pub ki_tdev_freebsd11: u32,
/// Signals arrived but not delivered. /// Signals arrived but not delivered.
pub ki_siglist: ::sigset_t, pub ki_siglist: crate::sigset_t,
/// Current signal mask. /// Current signal mask.
pub ki_sigmask: ::sigset_t, pub ki_sigmask: crate::sigset_t,
/// Signals being ignored. /// Signals being ignored.
pub ki_sigignore: ::sigset_t, pub ki_sigignore: crate::sigset_t,
/// Signals being caught by user. /// Signals being caught by user.
pub ki_sigcatch: ::sigset_t, pub ki_sigcatch: crate::sigset_t,
/// Effective user ID. /// Effective user ID.
pub ki_uid: ::uid_t, pub ki_uid: crate::uid_t,
/// Real user ID. /// Real user ID.
pub ki_ruid: ::uid_t, pub ki_ruid: crate::uid_t,
/// Saved effective user ID. /// Saved effective user ID.
pub ki_svuid: ::uid_t, pub ki_svuid: crate::uid_t,
/// Real group ID. /// Real group ID.
pub ki_rgid: ::gid_t, pub ki_rgid: crate::gid_t,
/// Saved effective group ID. /// Saved effective group ID.
pub ki_svgid: ::gid_t, pub ki_svgid: crate::gid_t,
/// Number of groups. /// Number of groups.
pub ki_ngroups: ::c_short, pub ki_ngroups: c_short,
/// Unused (just here for alignment). /// Unused (just here for alignment).
pub ki_spare_short2: ::c_short, pub ki_spare_short2: c_short,
/// Groups. /// Groups.
pub ki_groups: [::gid_t; ::KI_NGROUPS], pub ki_groups: [crate::gid_t; crate::KI_NGROUPS],
/// Virtual size. /// Virtual size.
pub ki_size: ::vm_size_t, pub ki_size: crate::vm_size_t,
/// Current resident set size in pages. /// Current resident set size in pages.
pub ki_rssize: ::segsz_t, pub ki_rssize: crate::segsz_t,
/// Resident set size before last swap. /// Resident set size before last swap.
pub ki_swrss: ::segsz_t, pub ki_swrss: crate::segsz_t,
/// Text size (pages) XXX. /// Text size (pages) XXX.
pub ki_tsize: ::segsz_t, pub ki_tsize: crate::segsz_t,
/// Data size (pages) XXX. /// Data size (pages) XXX.
pub ki_dsize: ::segsz_t, pub ki_dsize: crate::segsz_t,
/// Stack size (pages). /// Stack size (pages).
pub ki_ssize: ::segsz_t, pub ki_ssize: crate::segsz_t,
/// Exit status for wait & stop signal. /// Exit status for wait & stop signal.
pub ki_xstat: ::u_short, pub ki_xstat: crate::u_short,
/// Accounting flags. /// Accounting flags.
pub ki_acflag: ::u_short, pub ki_acflag: crate::u_short,
/// %cpu for process during `ki_swtime`. /// %cpu for process during `ki_swtime`.
pub ki_pctcpu: ::fixpt_t, pub ki_pctcpu: crate::fixpt_t,
/// Time averaged value of `ki_cpticks`. /// Time averaged value of `ki_cpticks`.
pub ki_estcpu: ::u_int, pub ki_estcpu: crate::u_int,
/// Time since last blocked. /// Time since last blocked.
pub ki_slptime: ::u_int, pub ki_slptime: crate::u_int,
/// Time swapped in or out. /// Time swapped in or out.
pub ki_swtime: ::u_int, pub ki_swtime: crate::u_int,
/// Number of copy-on-write faults. /// Number of copy-on-write faults.
pub ki_cow: ::u_int, pub ki_cow: crate::u_int,
/// Real time in microsec. /// Real time in microsec.
pub ki_runtime: u64, pub ki_runtime: u64,
/// Starting time. /// Starting time.
pub ki_start: ::timeval, pub ki_start: crate::timeval,
/// Time used by process children. /// Time used by process children.
pub ki_childtime: ::timeval, pub ki_childtime: crate::timeval,
/// P_* flags. /// P_* flags.
pub ki_flag: ::c_long, pub ki_flag: c_long,
/// KI_* flags (below). /// KI_* flags (below).
pub ki_kiflag: ::c_long, pub ki_kiflag: c_long,
/// Kernel trace points. /// Kernel trace points.
pub ki_traceflag: ::c_int, pub ki_traceflag: c_int,
/// S* process status. /// S* process status.
pub ki_stat: ::c_char, pub ki_stat: c_char,
/// Process "nice" value. /// Process "nice" value.
pub ki_nice: i8, // signed char pub ki_nice: i8, // signed char
/// Process lock (prevent swap) count. /// Process lock (prevent swap) count.
pub ki_lock: ::c_char, pub ki_lock: c_char,
/// Run queue index. /// Run queue index.
pub ki_rqindex: ::c_char, pub ki_rqindex: c_char,
/// Which cpu we are on. /// Which cpu we are on.
pub ki_oncpu_old: ::c_uchar, pub ki_oncpu_old: c_uchar,
/// Last cpu we were on. /// Last cpu we were on.
pub ki_lastcpu_old: ::c_uchar, pub ki_lastcpu_old: c_uchar,
/// Thread name. /// Thread name.
pub ki_tdname: [::c_char; ::TDNAMLEN + 1], pub ki_tdname: [c_char; crate::TDNAMLEN + 1],
/// Wchan message. /// Wchan message.
pub ki_wmesg: [::c_char; ::WMESGLEN + 1], pub ki_wmesg: [c_char; crate::WMESGLEN + 1],
/// Setlogin name. /// Setlogin name.
pub ki_login: [::c_char; ::LOGNAMELEN + 1], pub ki_login: [c_char; crate::LOGNAMELEN + 1],
/// Lock name. /// Lock name.
pub ki_lockname: [::c_char; ::LOCKNAMELEN + 1], pub ki_lockname: [c_char; crate::LOCKNAMELEN + 1],
/// Command name. /// Command name.
pub ki_comm: [::c_char; ::COMMLEN + 1], pub ki_comm: [c_char; crate::COMMLEN + 1],
/// Emulation name. /// Emulation name.
pub ki_emul: [::c_char; ::KI_EMULNAMELEN + 1], pub ki_emul: [c_char; crate::KI_EMULNAMELEN + 1],
/// Login class. /// Login class.
pub ki_loginclass: [::c_char; ::LOGINCLASSLEN + 1], pub ki_loginclass: [c_char; crate::LOGINCLASSLEN + 1],
/// More thread name. /// More thread name.
pub ki_moretdname: [::c_char; ::MAXCOMLEN - ::TDNAMLEN + 1], pub ki_moretdname: [c_char; crate::MAXCOMLEN - crate::TDNAMLEN + 1],
/// Spare string space. /// Spare string space.
pub ki_sparestrings: [[::c_char; 23]; 2], // little hack to allow PartialEq pub ki_sparestrings: [[c_char; 23]; 2], // little hack to allow PartialEq
/// Spare room for growth. /// Spare room for growth.
pub ki_spareints: [::c_int; ::KI_NSPARE_INT], pub ki_spareints: [c_int; crate::KI_NSPARE_INT],
/// Controlling tty dev. /// Controlling tty dev.
pub ki_tdev: u64, pub ki_tdev: u64,
/// Which cpu we are on. /// Which cpu we are on.
pub ki_oncpu: ::c_int, pub ki_oncpu: c_int,
/// Last cpu we were on. /// Last cpu we were on.
pub ki_lastcpu: ::c_int, pub ki_lastcpu: c_int,
/// PID of tracing process. /// PID of tracing process.
pub ki_tracer: ::c_int, pub ki_tracer: c_int,
/// P2_* flags. /// P2_* flags.
pub ki_flag2: ::c_int, pub ki_flag2: c_int,
/// Default FIB number. /// Default FIB number.
pub ki_fibnum: ::c_int, pub ki_fibnum: c_int,
/// Credential flags. /// Credential flags.
pub ki_cr_flags: ::u_int, pub ki_cr_flags: crate::u_int,
/// Process jail ID. /// Process jail ID.
pub ki_jid: ::c_int, pub ki_jid: c_int,
/// Number of threads in total. /// Number of threads in total.
pub ki_numthreads: ::c_int, pub ki_numthreads: c_int,
/// Thread ID. /// Thread ID.
pub ki_tid: ::lwpid_t, pub ki_tid: crate::lwpid_t,
/// Process priority. /// Process priority.
pub ki_pri: ::priority, pub ki_pri: crate::priority,
/// Process rusage statistics. /// Process rusage statistics.
pub ki_rusage: ::rusage, pub ki_rusage: crate::rusage,
/// rusage of children processes. /// rusage of children processes.
pub ki_rusage_ch: ::rusage, pub ki_rusage_ch: crate::rusage,
// This is normally "struct pcb". // This is normally "struct pcb".
/// Kernel virtual addr of pcb. /// Kernel virtual addr of pcb.
pub ki_pcb: *mut ::c_void, pub ki_pcb: *mut c_void,
/// Kernel virtual addr of stack. /// Kernel virtual addr of stack.
pub ki_kstack: *mut ::c_void, pub ki_kstack: *mut c_void,
/// User convenience pointer. /// User convenience pointer.
pub ki_udata: *mut ::c_void, pub ki_udata: *mut c_void,
// This is normally "struct thread". // This is normally "struct thread".
pub ki_tdaddr: *mut ::c_void, pub ki_tdaddr: *mut c_void,
// This is normally "struct pwddesc". // This is normally "struct pwddesc".
/// Pointer to process paths info. /// Pointer to process paths info.
pub ki_pd: *mut ::c_void, pub ki_pd: *mut c_void,
pub ki_spareptrs: [*mut ::c_void; ::KI_NSPARE_PTR], pub ki_spareptrs: [*mut c_void; crate::KI_NSPARE_PTR],
pub ki_sparelongs: [::c_long; ::KI_NSPARE_LONG], pub ki_sparelongs: [c_long; crate::KI_NSPARE_LONG],
/// PS_* flags. /// PS_* flags.
pub ki_sflag: ::c_long, pub ki_sflag: c_long,
/// kthread flag. /// kthread flag.
pub ki_tdflags: ::c_long, pub ki_tdflags: c_long,
} }
pub struct stat { pub struct stat {
pub st_dev: ::dev_t, pub st_dev: crate::dev_t,
pub st_ino: ::ino_t, pub st_ino: crate::ino_t,
pub st_nlink: ::nlink_t, pub st_nlink: crate::nlink_t,
pub st_mode: ::mode_t, pub st_mode: crate::mode_t,
st_padding0: i16, st_padding0: i16,
pub st_uid: ::uid_t, pub st_uid: crate::uid_t,
pub st_gid: ::gid_t, pub st_gid: crate::gid_t,
st_padding1: i32, st_padding1: i32,
pub st_rdev: ::dev_t, pub st_rdev: crate::dev_t,
#[cfg(target_arch = "x86")] #[cfg(target_arch = "x86")]
st_atim_ext: i32, st_atim_ext: i32,
pub st_atime: ::time_t, pub st_atime: crate::time_t,
pub st_atime_nsec: ::c_long, pub st_atime_nsec: c_long,
#[cfg(target_arch = "x86")] #[cfg(target_arch = "x86")]
st_mtim_ext: i32, st_mtim_ext: i32,
pub st_mtime: ::time_t, pub st_mtime: crate::time_t,
pub st_mtime_nsec: ::c_long, pub st_mtime_nsec: c_long,
#[cfg(target_arch = "x86")] #[cfg(target_arch = "x86")]
st_ctim_ext: i32, st_ctim_ext: i32,
pub st_ctime: ::time_t, pub st_ctime: crate::time_t,
pub st_ctime_nsec: ::c_long, pub st_ctime_nsec: c_long,
#[cfg(target_arch = "x86")] #[cfg(target_arch = "x86")]
st_btim_ext: i32, st_btim_ext: i32,
pub st_birthtime: ::time_t, pub st_birthtime: crate::time_t,
pub st_birthtime_nsec: ::c_long, pub st_birthtime_nsec: c_long,
pub st_size: ::off_t, pub st_size: off_t,
pub st_blocks: ::blkcnt_t, pub st_blocks: crate::blkcnt_t,
pub st_blksize: ::blksize_t, pub st_blksize: crate::blksize_t,
pub st_flags: ::fflags_t, pub st_flags: crate::fflags_t,
pub st_gen: u64, pub st_gen: u64,
pub st_spare: [u64; 10], pub st_spare: [u64; 10],
} }
@@ -266,14 +272,14 @@ s! {
s_no_extra_traits! { s_no_extra_traits! {
pub struct dirent { pub struct dirent {
pub d_fileno: ::ino_t, pub d_fileno: crate::ino_t,
pub d_off: ::off_t, pub d_off: off_t,
pub d_reclen: u16, pub d_reclen: u16,
pub d_type: u8, pub d_type: u8,
d_pad0: u8, d_pad0: u8,
pub d_namlen: u16, pub d_namlen: u16,
d_pad1: u16, d_pad1: u16,
pub d_name: [::c_char; 256], pub d_name: [c_char; 256],
} }
pub struct statfs { pub struct statfs {
@@ -293,12 +299,12 @@ s_no_extra_traits! {
pub f_asyncreads: u64, pub f_asyncreads: u64,
f_spare: [u64; 10], f_spare: [u64; 10],
pub f_namemax: u32, pub f_namemax: u32,
pub f_owner: ::uid_t, pub f_owner: crate::uid_t,
pub f_fsid: ::fsid_t, pub f_fsid: crate::fsid_t,
f_charspare: [::c_char; 80], f_charspare: [c_char; 80],
pub f_fstypename: [::c_char; 16], pub f_fstypename: [c_char; 16],
pub f_mntfromname: [::c_char; 1024], pub f_mntfromname: [c_char; 1024],
pub f_mntonname: [::c_char; 1024], pub f_mntonname: [c_char; 1024],
} }
pub struct vnstat { pub struct vnstat {
@@ -306,10 +312,10 @@ s_no_extra_traits! {
pub vn_size: u64, pub vn_size: u64,
pub vn_dev: u64, pub vn_dev: u64,
pub vn_fsid: u64, pub vn_fsid: u64,
pub vn_mntdir: *mut ::c_char, pub vn_mntdir: *mut c_char,
pub vn_type: ::c_int, pub vn_type: c_int,
pub vn_mode: u16, pub vn_mode: u16,
pub vn_devname: [::c_char; ::SPECNAMELEN as usize + 1], pub vn_devname: [c_char; crate::SPECNAMELEN as usize + 1],
} }
} }
@@ -336,20 +342,20 @@ cfg_if! {
&& self.f_fsid == other.f_fsid && self.f_fsid == other.f_fsid
&& self.f_fstypename == other.f_fstypename && self.f_fstypename == other.f_fstypename
&& self && self
.f_mntfromname .f_mntfromname
.iter() .iter()
.zip(other.f_mntfromname.iter()) .zip(other.f_mntfromname.iter())
.all(|(a,b)| a == b) .all(|(a, b)| a == b)
&& self && self
.f_mntonname .f_mntonname
.iter() .iter()
.zip(other.f_mntonname.iter()) .zip(other.f_mntonname.iter())
.all(|(a,b)| a == b) .all(|(a, b)| a == b)
} }
} }
impl Eq for statfs {} impl Eq for statfs {}
impl ::fmt::Debug for statfs { impl fmt::Debug for statfs {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("statfs") f.debug_struct("statfs")
.field("f_bsize", &self.f_bsize) .field("f_bsize", &self.f_bsize)
.field("f_iosize", &self.f_iosize) .field("f_iosize", &self.f_iosize)
@@ -371,8 +377,8 @@ cfg_if! {
.finish() .finish()
} }
} }
impl ::hash::Hash for statfs { impl hash::Hash for statfs {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.f_version.hash(state); self.f_version.hash(state);
self.f_type.hash(state); self.f_type.hash(state);
self.f_flags.hash(state); self.f_flags.hash(state);
@@ -404,16 +410,15 @@ cfg_if! {
&& self.d_reclen == other.d_reclen && self.d_reclen == other.d_reclen
&& self.d_type == other.d_type && self.d_type == other.d_type
&& self.d_namlen == other.d_namlen && self.d_namlen == other.d_namlen
&& self && self.d_name[..self.d_namlen as _]
.d_name[..self.d_namlen as _] .iter()
.iter() .zip(other.d_name.iter())
.zip(other.d_name.iter()) .all(|(a, b)| a == b)
.all(|(a,b)| a == b)
} }
} }
impl Eq for dirent {} impl Eq for dirent {}
impl ::fmt::Debug for dirent { impl fmt::Debug for dirent {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("dirent") f.debug_struct("dirent")
.field("d_fileno", &self.d_fileno) .field("d_fileno", &self.d_fileno)
.field("d_off", &self.d_off) .field("d_off", &self.d_off)
@@ -424,8 +429,8 @@ cfg_if! {
.finish() .finish()
} }
} }
impl ::hash::Hash for dirent { impl hash::Hash for dirent {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.d_fileno.hash(state); self.d_fileno.hash(state);
self.d_off.hash(state); self.d_off.hash(state);
self.d_reclen.hash(state); self.d_reclen.hash(state);
@@ -437,23 +442,23 @@ cfg_if! {
impl PartialEq for vnstat { impl PartialEq for vnstat {
fn eq(&self, other: &vnstat) -> bool { fn eq(&self, other: &vnstat) -> bool {
let self_vn_devname: &[::c_char] = &self.vn_devname; let self_vn_devname: &[c_char] = &self.vn_devname;
let other_vn_devname: &[::c_char] = &other.vn_devname; let other_vn_devname: &[c_char] = &other.vn_devname;
self.vn_fileid == other.vn_fileid && self.vn_fileid == other.vn_fileid
self.vn_size == other.vn_size && && self.vn_size == other.vn_size
self.vn_dev == other.vn_dev && && self.vn_dev == other.vn_dev
self.vn_fsid == other.vn_fsid && && self.vn_fsid == other.vn_fsid
self.vn_mntdir == other.vn_mntdir && && self.vn_mntdir == other.vn_mntdir
self.vn_type == other.vn_type && && self.vn_type == other.vn_type
self.vn_mode == other.vn_mode && && self.vn_mode == other.vn_mode
self_vn_devname == other_vn_devname && self_vn_devname == other_vn_devname
} }
} }
impl Eq for vnstat {} impl Eq for vnstat {}
impl ::fmt::Debug for vnstat { impl fmt::Debug for vnstat {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let self_vn_devname: &[::c_char] = &self.vn_devname; let self_vn_devname: &[c_char] = &self.vn_devname;
f.debug_struct("vnstat") f.debug_struct("vnstat")
.field("vn_fileid", &self.vn_fileid) .field("vn_fileid", &self.vn_fileid)
@@ -467,9 +472,9 @@ cfg_if! {
.finish() .finish()
} }
} }
impl ::hash::Hash for vnstat { impl hash::Hash for vnstat {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
let self_vn_devname: &[::c_char] = &self.vn_devname; let self_vn_devname: &[c_char] = &self.vn_devname;
self.vn_fileid.hash(state); self.vn_fileid.hash(state);
self.vn_size.hash(state); self.vn_size.hash(state);
@@ -484,28 +489,28 @@ cfg_if! {
} }
} }
pub const RAND_MAX: ::c_int = 0x7fff_ffff; pub const RAND_MAX: c_int = 0x7fff_ffff;
pub const ELAST: ::c_int = 97; pub const ELAST: c_int = 97;
pub const KF_TYPE_EVENTFD: ::c_int = 13; pub const KF_TYPE_EVENTFD: c_int = 13;
/// max length of devicename /// max length of devicename
pub const SPECNAMELEN: ::c_int = 255; pub const SPECNAMELEN: c_int = 255;
pub const KI_NSPARE_PTR: usize = 5; pub const KI_NSPARE_PTR: usize = 5;
/// domainset policies /// domainset policies
pub const DOMAINSET_POLICY_INVALID: ::c_int = 0; pub const DOMAINSET_POLICY_INVALID: c_int = 0;
pub const DOMAINSET_POLICY_ROUNDROBIN: ::c_int = 1; pub const DOMAINSET_POLICY_ROUNDROBIN: c_int = 1;
pub const DOMAINSET_POLICY_FIRSTTOUCH: ::c_int = 2; pub const DOMAINSET_POLICY_FIRSTTOUCH: c_int = 2;
pub const DOMAINSET_POLICY_PREFER: ::c_int = 3; pub const DOMAINSET_POLICY_PREFER: c_int = 3;
pub const DOMAINSET_POLICY_INTERLEAVE: ::c_int = 4; pub const DOMAINSET_POLICY_INTERLEAVE: c_int = 4;
pub const MINCORE_SUPER: ::c_int = 0x60; pub const MINCORE_SUPER: c_int = 0x60;
safe_f! { safe_f! {
pub {const} fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t { pub {const} fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
let major = major as ::dev_t; let major = major as crate::dev_t;
let minor = minor as ::dev_t; let minor = minor as crate::dev_t;
let mut dev = 0; let mut dev = 0;
dev |= ((major & 0xffffff00) as dev_t) << 32; dev |= ((major & 0xffffff00) as dev_t) << 32;
dev |= ((major & 0x000000ff) as dev_t) << 8; dev |= ((major & 0x000000ff) as dev_t) << 8;
@@ -513,54 +518,52 @@ safe_f! {
dev |= ((minor & 0xffff00ff) as dev_t) << 0; dev |= ((minor & 0xffff00ff) as dev_t) << 0;
dev dev
} }
}
f! { pub {const} fn major(dev: crate::dev_t) -> c_int {
pub fn major(dev: ::dev_t) -> ::c_int { (((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as c_int
(((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as ::c_int
} }
pub fn minor(dev: ::dev_t) -> ::c_int { pub {const} fn minor(dev: crate::dev_t) -> c_int {
(((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as ::c_int (((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as c_int
} }
} }
extern "C" { extern "C" {
pub fn setgrent(); pub fn setgrent();
pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int; pub fn mprotect(addr: *mut c_void, len: size_t, prot: c_int) -> c_int;
pub fn freelocale(loc: ::locale_t); pub fn freelocale(loc: crate::locale_t);
pub fn msgrcv( pub fn msgrcv(
msqid: ::c_int, msqid: c_int,
msgp: *mut ::c_void, msgp: *mut c_void,
msgsz: ::size_t, msgsz: size_t,
msgtyp: ::c_long, msgtyp: c_long,
msgflg: ::c_int, msgflg: c_int,
) -> ::ssize_t; ) -> ssize_t;
pub fn cpuset_getdomain( pub fn cpuset_getdomain(
level: ::cpulevel_t, level: crate::cpulevel_t,
which: ::cpuwhich_t, which: crate::cpuwhich_t,
id: ::id_t, id: crate::id_t,
setsize: ::size_t, setsize: size_t,
mask: *mut ::domainset_t, mask: *mut crate::domainset_t,
policy: *mut ::c_int, policy: *mut c_int,
) -> ::c_int; ) -> c_int;
pub fn cpuset_setdomain( pub fn cpuset_setdomain(
level: ::cpulevel_t, level: crate::cpulevel_t,
which: ::cpuwhich_t, which: crate::cpuwhich_t,
id: ::id_t, id: crate::id_t,
setsize: ::size_t, setsize: size_t,
mask: *const ::domainset_t, mask: *const crate::domainset_t,
policy: ::c_int, policy: c_int,
) -> ::c_int; ) -> c_int;
pub fn dirname(path: *mut ::c_char) -> *mut ::c_char; pub fn dirname(path: *mut c_char) -> *mut c_char;
pub fn basename(path: *mut ::c_char) -> *mut ::c_char; pub fn basename(path: *mut c_char) -> *mut c_char;
} }
#[link(name = "kvm")] #[link(name = "kvm")]
extern "C" { extern "C" {
pub fn kvm_kerndisp(kd: *mut ::kvm_t) -> ::kssize_t; pub fn kvm_kerndisp(kd: *mut crate::kvm_t) -> crate::kssize_t;
} }
cfg_if! { cfg_if! {

View File

@@ -1,12 +1,14 @@
pub const PROC_KPTI_CTL: ::c_int = ::PROC_PROCCTL_MD_MIN; use crate::prelude::*;
pub const PROC_KPTI_CTL_ENABLE_ON_EXEC: ::c_int = 1;
pub const PROC_KPTI_CTL_DISABLE_ON_EXEC: ::c_int = 2; pub const PROC_KPTI_CTL: c_int = crate::PROC_PROCCTL_MD_MIN;
pub const PROC_KPTI_STATUS: ::c_int = ::PROC_PROCCTL_MD_MIN + 1; pub const PROC_KPTI_CTL_ENABLE_ON_EXEC: c_int = 1;
pub const PROC_KPTI_STATUS_ACTIVE: ::c_int = 0x80000000; pub const PROC_KPTI_CTL_DISABLE_ON_EXEC: c_int = 2;
pub const PROC_LA_CTL: ::c_int = ::PROC_PROCCTL_MD_MIN + 2; pub const PROC_KPTI_STATUS: c_int = crate::PROC_PROCCTL_MD_MIN + 1;
pub const PROC_LA_STATUS: ::c_int = ::PROC_PROCCTL_MD_MIN + 3; pub const PROC_KPTI_STATUS_ACTIVE: c_int = 0x80000000;
pub const PROC_LA_CTL_LA48_ON_EXEC: ::c_int = 1; pub const PROC_LA_CTL: c_int = crate::PROC_PROCCTL_MD_MIN + 2;
pub const PROC_LA_CTL_LA57_ON_EXEC: ::c_int = 2; pub const PROC_LA_STATUS: c_int = crate::PROC_PROCCTL_MD_MIN + 3;
pub const PROC_LA_CTL_DEFAULT_ON_EXEC: ::c_int = 3; pub const PROC_LA_CTL_LA48_ON_EXEC: c_int = 1;
pub const PROC_LA_STATUS_LA48: ::c_int = 0x01000000; pub const PROC_LA_CTL_LA57_ON_EXEC: c_int = 2;
pub const PROC_LA_STATUS_LA57: ::c_int = 0x02000000; pub const PROC_LA_CTL_DEFAULT_ON_EXEC: c_int = 3;
pub const PROC_LA_STATUS_LA48: c_int = 0x01000000;
pub const PROC_LA_STATUS_LA57: c_int = 0x02000000;

View File

@@ -1,279 +1,286 @@
use crate::off_t;
use crate::prelude::*;
// APIs in FreeBSD 15 that have changed since 11. // APIs in FreeBSD 15 that have changed since 11.
pub type nlink_t = u64; pub type nlink_t = u64;
pub type dev_t = u64; pub type dev_t = u64;
pub type ino_t = u64; pub type ino_t = u64;
pub type shmatt_t = ::c_uint; pub type shmatt_t = c_uint;
pub type kpaddr_t = u64; pub type kpaddr_t = u64;
pub type kssize_t = i64; pub type kssize_t = i64;
pub type domainset_t = __c_anonymous_domainset; pub type domainset_t = __c_anonymous_domainset;
s! { s! {
pub struct shmid_ds { pub struct shmid_ds {
pub shm_perm: ::ipc_perm, pub shm_perm: crate::ipc_perm,
pub shm_segsz: ::size_t, pub shm_segsz: size_t,
pub shm_lpid: ::pid_t, pub shm_lpid: crate::pid_t,
pub shm_cpid: ::pid_t, pub shm_cpid: crate::pid_t,
pub shm_nattch: ::shmatt_t, pub shm_nattch: crate::shmatt_t,
pub shm_atime: ::time_t, pub shm_atime: crate::time_t,
pub shm_dtime: ::time_t, pub shm_dtime: crate::time_t,
pub shm_ctime: ::time_t, pub shm_ctime: crate::time_t,
} }
pub struct kevent { pub struct kevent {
pub ident: ::uintptr_t, pub ident: crate::uintptr_t,
pub filter: ::c_short, pub filter: c_short,
pub flags: ::c_ushort, pub flags: c_ushort,
pub fflags: ::c_uint, pub fflags: c_uint,
pub data: i64, pub data: i64,
pub udata: *mut ::c_void, pub udata: *mut c_void,
pub ext: [u64; 4], pub ext: [u64; 4],
} }
pub struct kvm_page { pub struct kvm_page {
pub kp_version: ::u_int, pub kp_version: crate::u_int,
pub kp_paddr: ::kpaddr_t, pub kp_paddr: crate::kpaddr_t,
pub kp_kmap_vaddr: ::kvaddr_t, pub kp_kmap_vaddr: crate::kvaddr_t,
pub kp_dmap_vaddr: ::kvaddr_t, pub kp_dmap_vaddr: crate::kvaddr_t,
pub kp_prot: ::vm_prot_t, pub kp_prot: crate::vm_prot_t,
pub kp_offset: ::off_t, pub kp_offset: off_t,
pub kp_len: ::size_t, pub kp_len: size_t,
} }
pub struct __c_anonymous_domainset { pub struct __c_anonymous_domainset {
_priv: [::uintptr_t; 4], #[cfg(target_pointer_width = "64")]
_priv: [c_ulong; 4],
#[cfg(target_pointer_width = "32")]
_priv: [c_ulong; 8],
} }
pub struct kinfo_proc { pub struct kinfo_proc {
/// Size of this structure. /// Size of this structure.
pub ki_structsize: ::c_int, pub ki_structsize: c_int,
/// Reserved: layout identifier. /// Reserved: layout identifier.
pub ki_layout: ::c_int, pub ki_layout: c_int,
/// Address of command arguments. /// Address of command arguments.
pub ki_args: *mut ::pargs, pub ki_args: *mut crate::pargs,
// This is normally "struct proc". // This is normally "struct proc".
/// Address of proc. /// Address of proc.
pub ki_paddr: *mut ::c_void, pub ki_paddr: *mut c_void,
// This is normally "struct user". // This is normally "struct user".
/// Kernel virtual address of u-area. /// Kernel virtual address of u-area.
pub ki_addr: *mut ::c_void, pub ki_addr: *mut c_void,
// This is normally "struct vnode". // This is normally "struct vnode".
/// Pointer to trace file. /// Pointer to trace file.
pub ki_tracep: *mut ::c_void, pub ki_tracep: *mut c_void,
// This is normally "struct vnode". // This is normally "struct vnode".
/// Pointer to executable file. /// Pointer to executable file.
pub ki_textvp: *mut ::c_void, pub ki_textvp: *mut c_void,
// This is normally "struct filedesc". // This is normally "struct filedesc".
/// Pointer to open file info. /// Pointer to open file info.
pub ki_fd: *mut ::c_void, pub ki_fd: *mut c_void,
// This is normally "struct vmspace". // This is normally "struct vmspace".
/// Pointer to kernel vmspace struct. /// Pointer to kernel vmspace struct.
pub ki_vmspace: *mut ::c_void, pub ki_vmspace: *mut c_void,
/// Sleep address. /// Sleep address.
pub ki_wchan: *const ::c_void, pub ki_wchan: *const c_void,
/// Process identifier. /// Process identifier.
pub ki_pid: ::pid_t, pub ki_pid: crate::pid_t,
/// Parent process ID. /// Parent process ID.
pub ki_ppid: ::pid_t, pub ki_ppid: crate::pid_t,
/// Process group ID. /// Process group ID.
pub ki_pgid: ::pid_t, pub ki_pgid: crate::pid_t,
/// tty process group ID. /// tty process group ID.
pub ki_tpgid: ::pid_t, pub ki_tpgid: crate::pid_t,
/// Process session ID. /// Process session ID.
pub ki_sid: ::pid_t, pub ki_sid: crate::pid_t,
/// Terminal session ID. /// Terminal session ID.
pub ki_tsid: ::pid_t, pub ki_tsid: crate::pid_t,
/// Job control counter. /// Job control counter.
pub ki_jobc: ::c_short, pub ki_jobc: c_short,
/// Unused (just here for alignment). /// Unused (just here for alignment).
pub ki_spare_short1: ::c_short, pub ki_spare_short1: c_short,
/// Controlling tty dev. /// Controlling tty dev.
pub ki_tdev_freebsd11: u32, pub ki_tdev_freebsd11: u32,
/// Signals arrived but not delivered. /// Signals arrived but not delivered.
pub ki_siglist: ::sigset_t, pub ki_siglist: crate::sigset_t,
/// Current signal mask. /// Current signal mask.
pub ki_sigmask: ::sigset_t, pub ki_sigmask: crate::sigset_t,
/// Signals being ignored. /// Signals being ignored.
pub ki_sigignore: ::sigset_t, pub ki_sigignore: crate::sigset_t,
/// Signals being caught by user. /// Signals being caught by user.
pub ki_sigcatch: ::sigset_t, pub ki_sigcatch: crate::sigset_t,
/// Effective user ID. /// Effective user ID.
pub ki_uid: ::uid_t, pub ki_uid: crate::uid_t,
/// Real user ID. /// Real user ID.
pub ki_ruid: ::uid_t, pub ki_ruid: crate::uid_t,
/// Saved effective user ID. /// Saved effective user ID.
pub ki_svuid: ::uid_t, pub ki_svuid: crate::uid_t,
/// Real group ID. /// Real group ID.
pub ki_rgid: ::gid_t, pub ki_rgid: crate::gid_t,
/// Saved effective group ID. /// Saved effective group ID.
pub ki_svgid: ::gid_t, pub ki_svgid: crate::gid_t,
/// Number of groups. /// Number of groups.
pub ki_ngroups: ::c_short, pub ki_ngroups: c_short,
/// Unused (just here for alignment). /// Unused (just here for alignment).
pub ki_spare_short2: ::c_short, pub ki_spare_short2: c_short,
/// Groups. /// Groups.
pub ki_groups: [::gid_t; ::KI_NGROUPS], pub ki_groups: [crate::gid_t; crate::KI_NGROUPS],
/// Virtual size. /// Virtual size.
pub ki_size: ::vm_size_t, pub ki_size: crate::vm_size_t,
/// Current resident set size in pages. /// Current resident set size in pages.
pub ki_rssize: ::segsz_t, pub ki_rssize: crate::segsz_t,
/// Resident set size before last swap. /// Resident set size before last swap.
pub ki_swrss: ::segsz_t, pub ki_swrss: crate::segsz_t,
/// Text size (pages) XXX. /// Text size (pages) XXX.
pub ki_tsize: ::segsz_t, pub ki_tsize: crate::segsz_t,
/// Data size (pages) XXX. /// Data size (pages) XXX.
pub ki_dsize: ::segsz_t, pub ki_dsize: crate::segsz_t,
/// Stack size (pages). /// Stack size (pages).
pub ki_ssize: ::segsz_t, pub ki_ssize: crate::segsz_t,
/// Exit status for wait & stop signal. /// Exit status for wait & stop signal.
pub ki_xstat: ::u_short, pub ki_xstat: crate::u_short,
/// Accounting flags. /// Accounting flags.
pub ki_acflag: ::u_short, pub ki_acflag: crate::u_short,
/// %cpu for process during `ki_swtime`. /// %cpu for process during `ki_swtime`.
pub ki_pctcpu: ::fixpt_t, pub ki_pctcpu: crate::fixpt_t,
/// Time averaged value of `ki_cpticks`. /// Time averaged value of `ki_cpticks`.
pub ki_estcpu: ::u_int, pub ki_estcpu: crate::u_int,
/// Time since last blocked. /// Time since last blocked.
pub ki_slptime: ::u_int, pub ki_slptime: crate::u_int,
/// Time swapped in or out. /// Time swapped in or out.
pub ki_swtime: ::u_int, pub ki_swtime: crate::u_int,
/// Number of copy-on-write faults. /// Number of copy-on-write faults.
pub ki_cow: ::u_int, pub ki_cow: crate::u_int,
/// Real time in microsec. /// Real time in microsec.
pub ki_runtime: u64, pub ki_runtime: u64,
/// Starting time. /// Starting time.
pub ki_start: ::timeval, pub ki_start: crate::timeval,
/// Time used by process children. /// Time used by process children.
pub ki_childtime: ::timeval, pub ki_childtime: crate::timeval,
/// P_* flags. /// P_* flags.
pub ki_flag: ::c_long, pub ki_flag: c_long,
/// KI_* flags (below). /// KI_* flags (below).
pub ki_kiflag: ::c_long, pub ki_kiflag: c_long,
/// Kernel trace points. /// Kernel trace points.
pub ki_traceflag: ::c_int, pub ki_traceflag: c_int,
/// S* process status. /// S* process status.
pub ki_stat: ::c_char, pub ki_stat: c_char,
/// Process "nice" value. /// Process "nice" value.
pub ki_nice: i8, // signed char pub ki_nice: i8, // signed char
/// Process lock (prevent swap) count. /// Process lock (prevent swap) count.
pub ki_lock: ::c_char, pub ki_lock: c_char,
/// Run queue index. /// Run queue index.
pub ki_rqindex: ::c_char, pub ki_rqindex: c_char,
/// Which cpu we are on. /// Which cpu we are on.
pub ki_oncpu_old: ::c_uchar, pub ki_oncpu_old: c_uchar,
/// Last cpu we were on. /// Last cpu we were on.
pub ki_lastcpu_old: ::c_uchar, pub ki_lastcpu_old: c_uchar,
/// Thread name. /// Thread name.
pub ki_tdname: [::c_char; ::TDNAMLEN + 1], pub ki_tdname: [c_char; crate::TDNAMLEN + 1],
/// Wchan message. /// Wchan message.
pub ki_wmesg: [::c_char; ::WMESGLEN + 1], pub ki_wmesg: [c_char; crate::WMESGLEN + 1],
/// Setlogin name. /// Setlogin name.
pub ki_login: [::c_char; ::LOGNAMELEN + 1], pub ki_login: [c_char; crate::LOGNAMELEN + 1],
/// Lock name. /// Lock name.
pub ki_lockname: [::c_char; ::LOCKNAMELEN + 1], pub ki_lockname: [c_char; crate::LOCKNAMELEN + 1],
/// Command name. /// Command name.
pub ki_comm: [::c_char; ::COMMLEN + 1], pub ki_comm: [c_char; crate::COMMLEN + 1],
/// Emulation name. /// Emulation name.
pub ki_emul: [::c_char; ::KI_EMULNAMELEN + 1], pub ki_emul: [c_char; crate::KI_EMULNAMELEN + 1],
/// Login class. /// Login class.
pub ki_loginclass: [::c_char; ::LOGINCLASSLEN + 1], pub ki_loginclass: [c_char; crate::LOGINCLASSLEN + 1],
/// More thread name. /// More thread name.
pub ki_moretdname: [::c_char; ::MAXCOMLEN - ::TDNAMLEN + 1], pub ki_moretdname: [c_char; crate::MAXCOMLEN - crate::TDNAMLEN + 1],
/// Spare string space. /// Spare string space.
pub ki_sparestrings: [[::c_char; 23]; 2], // little hack to allow PartialEq pub ki_sparestrings: [[c_char; 23]; 2], // little hack to allow PartialEq
/// Spare room for growth. /// Spare room for growth.
pub ki_spareints: [::c_int; ::KI_NSPARE_INT], pub ki_spareints: [c_int; crate::KI_NSPARE_INT],
/// Controlling tty dev. /// Controlling tty dev.
pub ki_tdev: u64, pub ki_tdev: u64,
/// Which cpu we are on. /// Which cpu we are on.
pub ki_oncpu: ::c_int, pub ki_oncpu: c_int,
/// Last cpu we were on. /// Last cpu we were on.
pub ki_lastcpu: ::c_int, pub ki_lastcpu: c_int,
/// PID of tracing process. /// PID of tracing process.
pub ki_tracer: ::c_int, pub ki_tracer: c_int,
/// P2_* flags. /// P2_* flags.
pub ki_flag2: ::c_int, pub ki_flag2: c_int,
/// Default FIB number. /// Default FIB number.
pub ki_fibnum: ::c_int, pub ki_fibnum: c_int,
/// Credential flags. /// Credential flags.
pub ki_cr_flags: ::u_int, pub ki_cr_flags: crate::u_int,
/// Process jail ID. /// Process jail ID.
pub ki_jid: ::c_int, pub ki_jid: c_int,
/// Number of threads in total. /// Number of threads in total.
pub ki_numthreads: ::c_int, pub ki_numthreads: c_int,
/// Thread ID. /// Thread ID.
pub ki_tid: ::lwpid_t, pub ki_tid: crate::lwpid_t,
/// Process priority. /// Process priority.
pub ki_pri: ::priority, pub ki_pri: crate::priority,
/// Process rusage statistics. /// Process rusage statistics.
pub ki_rusage: ::rusage, pub ki_rusage: crate::rusage,
/// rusage of children processes. /// rusage of children processes.
pub ki_rusage_ch: ::rusage, pub ki_rusage_ch: crate::rusage,
// This is normally "struct pcb". // This is normally "struct pcb".
/// Kernel virtual addr of pcb. /// Kernel virtual addr of pcb.
pub ki_pcb: *mut ::c_void, pub ki_pcb: *mut c_void,
/// Kernel virtual addr of stack. /// Kernel virtual addr of stack.
pub ki_kstack: *mut ::c_void, pub ki_kstack: *mut c_void,
/// User convenience pointer. /// User convenience pointer.
pub ki_udata: *mut ::c_void, pub ki_udata: *mut c_void,
// This is normally "struct thread". // This is normally "struct thread".
pub ki_tdaddr: *mut ::c_void, pub ki_tdaddr: *mut c_void,
// This is normally "struct pwddesc". // This is normally "struct pwddesc".
/// Pointer to process paths info. /// Pointer to process paths info.
pub ki_pd: *mut ::c_void, pub ki_pd: *mut c_void,
pub ki_spareptrs: [*mut ::c_void; ::KI_NSPARE_PTR], pub ki_spareptrs: [*mut c_void; crate::KI_NSPARE_PTR],
pub ki_sparelongs: [::c_long; ::KI_NSPARE_LONG], pub ki_sparelongs: [c_long; crate::KI_NSPARE_LONG],
/// PS_* flags. /// PS_* flags.
pub ki_sflag: ::c_long, pub ki_sflag: c_long,
/// kthread flag. /// kthread flag.
pub ki_tdflags: ::c_long, pub ki_tdflags: c_long,
} }
pub struct stat { pub struct stat {
pub st_dev: ::dev_t, pub st_dev: crate::dev_t,
pub st_ino: ::ino_t, pub st_ino: crate::ino_t,
pub st_nlink: ::nlink_t, pub st_nlink: crate::nlink_t,
pub st_mode: ::mode_t, pub st_mode: crate::mode_t,
st_padding0: i16, st_padding0: i16,
pub st_uid: ::uid_t, pub st_uid: crate::uid_t,
pub st_gid: ::gid_t, pub st_gid: crate::gid_t,
st_padding1: i32, st_padding1: i32,
pub st_rdev: ::dev_t, pub st_rdev: crate::dev_t,
#[cfg(target_arch = "x86")] #[cfg(target_arch = "x86")]
st_atim_ext: i32, st_atim_ext: i32,
pub st_atime: ::time_t, pub st_atime: crate::time_t,
pub st_atime_nsec: ::c_long, pub st_atime_nsec: c_long,
#[cfg(target_arch = "x86")] #[cfg(target_arch = "x86")]
st_mtim_ext: i32, st_mtim_ext: i32,
pub st_mtime: ::time_t, pub st_mtime: crate::time_t,
pub st_mtime_nsec: ::c_long, pub st_mtime_nsec: c_long,
#[cfg(target_arch = "x86")] #[cfg(target_arch = "x86")]
st_ctim_ext: i32, st_ctim_ext: i32,
pub st_ctime: ::time_t, pub st_ctime: crate::time_t,
pub st_ctime_nsec: ::c_long, pub st_ctime_nsec: c_long,
#[cfg(target_arch = "x86")] #[cfg(target_arch = "x86")]
st_btim_ext: i32, st_btim_ext: i32,
pub st_birthtime: ::time_t, pub st_birthtime: crate::time_t,
pub st_birthtime_nsec: ::c_long, pub st_birthtime_nsec: c_long,
pub st_size: ::off_t, pub st_size: off_t,
pub st_blocks: ::blkcnt_t, pub st_blocks: crate::blkcnt_t,
pub st_blksize: ::blksize_t, pub st_blksize: crate::blksize_t,
pub st_flags: ::fflags_t, pub st_flags: crate::fflags_t,
pub st_gen: u64, pub st_gen: u64,
pub st_spare: [u64; 10], pub st_filerev: u64,
pub st_spare: [u64; 9],
} }
} }
s_no_extra_traits! { s_no_extra_traits! {
pub struct dirent { pub struct dirent {
pub d_fileno: ::ino_t, pub d_fileno: crate::ino_t,
pub d_off: ::off_t, pub d_off: off_t,
pub d_reclen: u16, pub d_reclen: u16,
pub d_type: u8, pub d_type: u8,
d_pad0: u8, d_pad0: u8,
pub d_namlen: u16, pub d_namlen: u16,
d_pad1: u16, d_pad1: u16,
pub d_name: [::c_char; 256], pub d_name: [c_char; 256],
} }
pub struct statfs { pub struct statfs {
@@ -293,12 +300,12 @@ s_no_extra_traits! {
pub f_asyncreads: u64, pub f_asyncreads: u64,
f_spare: [u64; 10], f_spare: [u64; 10],
pub f_namemax: u32, pub f_namemax: u32,
pub f_owner: ::uid_t, pub f_owner: crate::uid_t,
pub f_fsid: ::fsid_t, pub f_fsid: crate::fsid_t,
f_charspare: [::c_char; 80], f_charspare: [c_char; 80],
pub f_fstypename: [::c_char; 16], pub f_fstypename: [c_char; 16],
pub f_mntfromname: [::c_char; 1024], pub f_mntfromname: [c_char; 1024],
pub f_mntonname: [::c_char; 1024], pub f_mntonname: [c_char; 1024],
} }
pub struct vnstat { pub struct vnstat {
@@ -306,10 +313,10 @@ s_no_extra_traits! {
pub vn_size: u64, pub vn_size: u64,
pub vn_dev: u64, pub vn_dev: u64,
pub vn_fsid: u64, pub vn_fsid: u64,
pub vn_mntdir: *mut ::c_char, pub vn_mntdir: *mut c_char,
pub vn_type: ::c_int, pub vn_type: c_int,
pub vn_mode: u16, pub vn_mode: u16,
pub vn_devname: [::c_char; ::SPECNAMELEN as usize + 1], pub vn_devname: [c_char; crate::SPECNAMELEN as usize + 1],
} }
} }
@@ -336,20 +343,20 @@ cfg_if! {
&& self.f_fsid == other.f_fsid && self.f_fsid == other.f_fsid
&& self.f_fstypename == other.f_fstypename && self.f_fstypename == other.f_fstypename
&& self && self
.f_mntfromname .f_mntfromname
.iter() .iter()
.zip(other.f_mntfromname.iter()) .zip(other.f_mntfromname.iter())
.all(|(a,b)| a == b) .all(|(a, b)| a == b)
&& self && self
.f_mntonname .f_mntonname
.iter() .iter()
.zip(other.f_mntonname.iter()) .zip(other.f_mntonname.iter())
.all(|(a,b)| a == b) .all(|(a, b)| a == b)
} }
} }
impl Eq for statfs {} impl Eq for statfs {}
impl ::fmt::Debug for statfs { impl fmt::Debug for statfs {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("statfs") f.debug_struct("statfs")
.field("f_bsize", &self.f_bsize) .field("f_bsize", &self.f_bsize)
.field("f_iosize", &self.f_iosize) .field("f_iosize", &self.f_iosize)
@@ -371,8 +378,8 @@ cfg_if! {
.finish() .finish()
} }
} }
impl ::hash::Hash for statfs { impl hash::Hash for statfs {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.f_version.hash(state); self.f_version.hash(state);
self.f_type.hash(state); self.f_type.hash(state);
self.f_flags.hash(state); self.f_flags.hash(state);
@@ -404,16 +411,15 @@ cfg_if! {
&& self.d_reclen == other.d_reclen && self.d_reclen == other.d_reclen
&& self.d_type == other.d_type && self.d_type == other.d_type
&& self.d_namlen == other.d_namlen && self.d_namlen == other.d_namlen
&& self && self.d_name[..self.d_namlen as _]
.d_name[..self.d_namlen as _] .iter()
.iter() .zip(other.d_name.iter())
.zip(other.d_name.iter()) .all(|(a, b)| a == b)
.all(|(a,b)| a == b)
} }
} }
impl Eq for dirent {} impl Eq for dirent {}
impl ::fmt::Debug for dirent { impl fmt::Debug for dirent {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("dirent") f.debug_struct("dirent")
.field("d_fileno", &self.d_fileno) .field("d_fileno", &self.d_fileno)
.field("d_off", &self.d_off) .field("d_off", &self.d_off)
@@ -424,8 +430,8 @@ cfg_if! {
.finish() .finish()
} }
} }
impl ::hash::Hash for dirent { impl hash::Hash for dirent {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.d_fileno.hash(state); self.d_fileno.hash(state);
self.d_off.hash(state); self.d_off.hash(state);
self.d_reclen.hash(state); self.d_reclen.hash(state);
@@ -437,23 +443,23 @@ cfg_if! {
impl PartialEq for vnstat { impl PartialEq for vnstat {
fn eq(&self, other: &vnstat) -> bool { fn eq(&self, other: &vnstat) -> bool {
let self_vn_devname: &[::c_char] = &self.vn_devname; let self_vn_devname: &[c_char] = &self.vn_devname;
let other_vn_devname: &[::c_char] = &other.vn_devname; let other_vn_devname: &[c_char] = &other.vn_devname;
self.vn_fileid == other.vn_fileid && self.vn_fileid == other.vn_fileid
self.vn_size == other.vn_size && && self.vn_size == other.vn_size
self.vn_dev == other.vn_dev && && self.vn_dev == other.vn_dev
self.vn_fsid == other.vn_fsid && && self.vn_fsid == other.vn_fsid
self.vn_mntdir == other.vn_mntdir && && self.vn_mntdir == other.vn_mntdir
self.vn_type == other.vn_type && && self.vn_type == other.vn_type
self.vn_mode == other.vn_mode && && self.vn_mode == other.vn_mode
self_vn_devname == other_vn_devname && self_vn_devname == other_vn_devname
} }
} }
impl Eq for vnstat {} impl Eq for vnstat {}
impl ::fmt::Debug for vnstat { impl fmt::Debug for vnstat {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let self_vn_devname: &[::c_char] = &self.vn_devname; let self_vn_devname: &[c_char] = &self.vn_devname;
f.debug_struct("vnstat") f.debug_struct("vnstat")
.field("vn_fileid", &self.vn_fileid) .field("vn_fileid", &self.vn_fileid)
@@ -467,9 +473,9 @@ cfg_if! {
.finish() .finish()
} }
} }
impl ::hash::Hash for vnstat { impl hash::Hash for vnstat {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) { fn hash<H: hash::Hasher>(&self, state: &mut H) {
let self_vn_devname: &[::c_char] = &self.vn_devname; let self_vn_devname: &[c_char] = &self.vn_devname;
self.vn_fileid.hash(state); self.vn_fileid.hash(state);
self.vn_size.hash(state); self.vn_size.hash(state);
@@ -484,28 +490,28 @@ cfg_if! {
} }
} }
pub const RAND_MAX: ::c_int = 0x7fff_ffff; pub const RAND_MAX: c_int = 0x7fff_ffff;
pub const ELAST: ::c_int = 97; pub const ELAST: c_int = 97;
pub const KF_TYPE_EVENTFD: ::c_int = 13; pub const KF_TYPE_EVENTFD: c_int = 13;
/// max length of devicename /// max length of devicename
pub const SPECNAMELEN: ::c_int = 255; pub const SPECNAMELEN: c_int = 255;
pub const KI_NSPARE_PTR: usize = 5; pub const KI_NSPARE_PTR: usize = 5;
/// domainset policies /// domainset policies
pub const DOMAINSET_POLICY_INVALID: ::c_int = 0; pub const DOMAINSET_POLICY_INVALID: c_int = 0;
pub const DOMAINSET_POLICY_ROUNDROBIN: ::c_int = 1; pub const DOMAINSET_POLICY_ROUNDROBIN: c_int = 1;
pub const DOMAINSET_POLICY_FIRSTTOUCH: ::c_int = 2; pub const DOMAINSET_POLICY_FIRSTTOUCH: c_int = 2;
pub const DOMAINSET_POLICY_PREFER: ::c_int = 3; pub const DOMAINSET_POLICY_PREFER: c_int = 3;
pub const DOMAINSET_POLICY_INTERLEAVE: ::c_int = 4; pub const DOMAINSET_POLICY_INTERLEAVE: c_int = 4;
pub const MINCORE_SUPER: ::c_int = 0x60; pub const MINCORE_SUPER: c_int = 0x60;
safe_f! { safe_f! {
pub {const} fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t { pub {const} fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
let major = major as ::dev_t; let major = major as crate::dev_t;
let minor = minor as ::dev_t; let minor = minor as crate::dev_t;
let mut dev = 0; let mut dev = 0;
dev |= ((major & 0xffffff00) as dev_t) << 32; dev |= ((major & 0xffffff00) as dev_t) << 32;
dev |= ((major & 0x000000ff) as dev_t) << 8; dev |= ((major & 0x000000ff) as dev_t) << 8;
@@ -513,54 +519,52 @@ safe_f! {
dev |= ((minor & 0xffff00ff) as dev_t) << 0; dev |= ((minor & 0xffff00ff) as dev_t) << 0;
dev dev
} }
}
f! { pub {const} fn major(dev: crate::dev_t) -> c_int {
pub fn major(dev: ::dev_t) -> ::c_int { (((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as c_int
(((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as ::c_int
} }
pub fn minor(dev: ::dev_t) -> ::c_int { pub {const} fn minor(dev: crate::dev_t) -> c_int {
(((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as ::c_int (((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as c_int
} }
} }
extern "C" { extern "C" {
pub fn setgrent(); pub fn setgrent();
pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int; pub fn mprotect(addr: *mut c_void, len: size_t, prot: c_int) -> c_int;
pub fn freelocale(loc: ::locale_t); pub fn freelocale(loc: crate::locale_t);
pub fn msgrcv( pub fn msgrcv(
msqid: ::c_int, msqid: c_int,
msgp: *mut ::c_void, msgp: *mut c_void,
msgsz: ::size_t, msgsz: size_t,
msgtyp: ::c_long, msgtyp: c_long,
msgflg: ::c_int, msgflg: c_int,
) -> ::ssize_t; ) -> ssize_t;
pub fn cpuset_getdomain( pub fn cpuset_getdomain(
level: ::cpulevel_t, level: crate::cpulevel_t,
which: ::cpuwhich_t, which: crate::cpuwhich_t,
id: ::id_t, id: crate::id_t,
setsize: ::size_t, setsize: size_t,
mask: *mut ::domainset_t, mask: *mut crate::domainset_t,
policy: *mut ::c_int, policy: *mut c_int,
) -> ::c_int; ) -> c_int;
pub fn cpuset_setdomain( pub fn cpuset_setdomain(
level: ::cpulevel_t, level: crate::cpulevel_t,
which: ::cpuwhich_t, which: crate::cpuwhich_t,
id: ::id_t, id: crate::id_t,
setsize: ::size_t, setsize: size_t,
mask: *const ::domainset_t, mask: *const crate::domainset_t,
policy: ::c_int, policy: c_int,
) -> ::c_int; ) -> c_int;
pub fn dirname(path: *mut ::c_char) -> *mut ::c_char; pub fn dirname(path: *mut c_char) -> *mut c_char;
pub fn basename(path: *mut ::c_char) -> *mut ::c_char; pub fn basename(path: *mut c_char) -> *mut c_char;
} }
#[link(name = "kvm")] #[link(name = "kvm")]
extern "C" { extern "C" {
pub fn kvm_kerndisp(kd: *mut ::kvm_t) -> ::kssize_t; pub fn kvm_kerndisp(kd: *mut crate::kvm_t) -> crate::kssize_t;
} }
cfg_if! { cfg_if! {

View File

@@ -1,12 +1,14 @@
pub const PROC_KPTI_CTL: ::c_int = ::PROC_PROCCTL_MD_MIN; use crate::prelude::*;
pub const PROC_KPTI_CTL_ENABLE_ON_EXEC: ::c_int = 1;
pub const PROC_KPTI_CTL_DISABLE_ON_EXEC: ::c_int = 2; pub const PROC_KPTI_CTL: c_int = crate::PROC_PROCCTL_MD_MIN;
pub const PROC_KPTI_STATUS: ::c_int = ::PROC_PROCCTL_MD_MIN + 1; pub const PROC_KPTI_CTL_ENABLE_ON_EXEC: c_int = 1;
pub const PROC_KPTI_STATUS_ACTIVE: ::c_int = 0x80000000; pub const PROC_KPTI_CTL_DISABLE_ON_EXEC: c_int = 2;
pub const PROC_LA_CTL: ::c_int = ::PROC_PROCCTL_MD_MIN + 2; pub const PROC_KPTI_STATUS: c_int = crate::PROC_PROCCTL_MD_MIN + 1;
pub const PROC_LA_STATUS: ::c_int = ::PROC_PROCCTL_MD_MIN + 3; pub const PROC_KPTI_STATUS_ACTIVE: c_int = 0x80000000;
pub const PROC_LA_CTL_LA48_ON_EXEC: ::c_int = 1; pub const PROC_LA_CTL: c_int = crate::PROC_PROCCTL_MD_MIN + 2;
pub const PROC_LA_CTL_LA57_ON_EXEC: ::c_int = 2; pub const PROC_LA_STATUS: c_int = crate::PROC_PROCCTL_MD_MIN + 3;
pub const PROC_LA_CTL_DEFAULT_ON_EXEC: ::c_int = 3; pub const PROC_LA_CTL_LA48_ON_EXEC: c_int = 1;
pub const PROC_LA_STATUS_LA48: ::c_int = 0x01000000; pub const PROC_LA_CTL_LA57_ON_EXEC: c_int = 2;
pub const PROC_LA_STATUS_LA57: ::c_int = 0x02000000; pub const PROC_LA_CTL_DEFAULT_ON_EXEC: c_int = 3;
pub const PROC_LA_STATUS_LA48: c_int = 0x01000000;
pub const PROC_LA_STATUS_LA57: c_int = 0x02000000;

File diff suppressed because it is too large Load Diff

View File

@@ -1,21 +1,77 @@
pub type c_char = u8; use crate::prelude::*;
pub type c_long = i32;
pub type c_ulong = u32; pub type clock_t = u32;
pub type wchar_t = i32; pub type wchar_t = i32;
pub type time_t = i64; pub type time_t = i64;
pub type suseconds_t = i32; pub type suseconds_t = i32;
pub type register_t = i32; pub type register_t = i32;
// should be pub(crate), but that requires Rust 1.18.0 s_no_extra_traits! {
cfg_if! { #[repr(align(16))]
if #[cfg(libc_const_size_of)] { pub struct mcontext_t {
#[doc(hidden)] pub mc_vers: c_int,
pub const _ALIGNBYTES: usize = ::mem::size_of::<::c_int>() - 1; pub mc_flags: c_int,
} else { pub mc_onstack: c_int,
#[doc(hidden)] pub mc_len: c_int,
pub const _ALIGNBYTES: usize = 4 - 1; pub mc_avec: [u64; 64],
pub mc_av: [u32; 2],
pub mc_frame: [crate::register_t; 42],
pub mc_fpreg: [u64; 33],
pub mc_vsxfpreg: [u64; 32],
} }
} }
pub const MAP_32BIT: ::c_int = 0x00080000; cfg_if! {
pub const MINSIGSTKSZ: ::size_t = 2048; // 512 * 4 if #[cfg(feature = "extra_traits")] {
impl PartialEq for mcontext_t {
fn eq(&self, other: &mcontext_t) -> bool {
self.mc_vers == other.mc_vers
&& self.mc_flags == other.mc_flags
&& self.mc_onstack == other.mc_onstack
&& self.mc_len == other.mc_len
&& self.mc_avec == other.mc_avec
&& self.mc_av == other.mc_av
&& self.mc_frame == other.mc_frame
&& self.mc_fpreg == other.mc_fpreg
&& self.mc_vsxfpreg == other.mc_vsxfpreg
}
}
impl Eq for mcontext_t {}
impl fmt::Debug for mcontext_t {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("mcontext_t")
.field("mc_vers", &self.mc_vers)
.field("mc_flags", &self.mc_flags)
.field("mc_onstack", &self.mc_onstack)
.field("mc_len", &self.mc_len)
.field("mc_avec", &self.mc_avec)
.field("mc_av", &self.mc_av)
.field("mc_frame", &self.mc_frame)
.field("mc_fpreg", &self.mc_fpreg)
.field("mc_vsxfpreg", &self.mc_vsxfpreg)
.finish()
}
}
impl hash::Hash for mcontext_t {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.mc_vers.hash(state);
self.mc_flags.hash(state);
self.mc_onstack.hash(state);
self.mc_len.hash(state);
self.mc_avec.hash(state);
self.mc_av.hash(state);
self.mc_frame.hash(state);
self.mc_fpreg.hash(state);
self.mc_vsxfpreg.hash(state);
}
}
}
}
pub(crate) const _ALIGNBYTES: usize = mem::size_of::<c_int>() - 1;
pub const BIOCSRTIMEOUT: c_ulong = 0x8010426d;
pub const BIOCGRTIMEOUT: c_ulong = 0x4010426e;
pub const MAP_32BIT: c_int = 0x00080000;
pub const MINSIGSTKSZ: size_t = 2048; // 512 * 4
pub const TIOCTIMESTAMP: c_ulong = 0x40107459;

Some files were not shown because too many files have changed in this diff Show More