mirror of
https://github.com/gfx-rs/wgpu.git
synced 2026-04-22 03:02:01 -04:00
103 lines
3.8 KiB
Rust
103 lines
3.8 KiB
Rust
use wgpu::*;
|
|
use wgpu_test::{gpu_test, FailureCase, GpuTestConfiguration, TestParameters};
|
|
|
|
#[gpu_test]
|
|
static STENCIL_ONLY_VIEW_CREATION: GpuTestConfiguration = GpuTestConfiguration::new()
|
|
.parameters(
|
|
TestParameters::default()
|
|
.skip(FailureCase::webgl2()) // WebGL doesn't have stencil only views
|
|
.limits(wgpu::Limits::downlevel_defaults()),
|
|
)
|
|
.run_async(|ctx| async move {
|
|
for format in [TextureFormat::Stencil8, TextureFormat::Depth24PlusStencil8] {
|
|
let texture = ctx.device.create_texture(&TextureDescriptor {
|
|
label: None,
|
|
size: Extent3d {
|
|
width: 256,
|
|
height: 256,
|
|
depth_or_array_layers: 1,
|
|
},
|
|
mip_level_count: 1,
|
|
sample_count: 1,
|
|
dimension: TextureDimension::D2,
|
|
format,
|
|
usage: TextureUsages::COPY_DST
|
|
| TextureUsages::COPY_SRC
|
|
| TextureUsages::TEXTURE_BINDING,
|
|
view_formats: &[],
|
|
});
|
|
let _view = texture.create_view(&TextureViewDescriptor {
|
|
aspect: TextureAspect::StencilOnly,
|
|
..Default::default()
|
|
});
|
|
}
|
|
});
|
|
|
|
#[gpu_test]
|
|
static DEPTH_ONLY_VIEW_CREATION: GpuTestConfiguration =
|
|
GpuTestConfiguration::new().run_async(|ctx| async move {
|
|
for format in [
|
|
TextureFormat::Depth16Unorm,
|
|
TextureFormat::Depth24Plus,
|
|
TextureFormat::Depth24PlusStencil8,
|
|
] {
|
|
let texture = ctx.device.create_texture(&TextureDescriptor {
|
|
label: None,
|
|
size: Extent3d {
|
|
width: 256,
|
|
height: 256,
|
|
depth_or_array_layers: 1,
|
|
},
|
|
mip_level_count: 1,
|
|
sample_count: 1,
|
|
dimension: TextureDimension::D2,
|
|
format,
|
|
usage: TextureUsages::COPY_DST
|
|
| TextureUsages::COPY_SRC
|
|
| TextureUsages::TEXTURE_BINDING,
|
|
view_formats: &[],
|
|
});
|
|
let _view = texture.create_view(&TextureViewDescriptor {
|
|
aspect: TextureAspect::DepthOnly,
|
|
..Default::default()
|
|
});
|
|
}
|
|
});
|
|
|
|
#[gpu_test]
|
|
static SHARED_USAGE_VIEW_CREATION: GpuTestConfiguration = GpuTestConfiguration::new()
|
|
.parameters(TestParameters::default().downlevel_flags(DownlevelFlags::VIEW_FORMATS))
|
|
.run_async(|ctx| async move {
|
|
{
|
|
let (texture_format, view_format) =
|
|
(TextureFormat::Rgba8Unorm, TextureFormat::Rgba8UnormSrgb);
|
|
let texture = ctx.device.create_texture(&TextureDescriptor {
|
|
label: None,
|
|
size: Extent3d {
|
|
width: 256,
|
|
height: 256,
|
|
depth_or_array_layers: 1,
|
|
},
|
|
mip_level_count: 1,
|
|
sample_count: 1,
|
|
dimension: TextureDimension::D2,
|
|
format: texture_format,
|
|
usage: TextureUsages::COPY_DST
|
|
| TextureUsages::STORAGE_BINDING
|
|
| TextureUsages::TEXTURE_BINDING
|
|
| TextureUsages::RENDER_ATTACHMENT,
|
|
view_formats: &[TextureFormat::Rgba8UnormSrgb],
|
|
});
|
|
let _view = texture.create_view(&TextureViewDescriptor {
|
|
aspect: TextureAspect::All,
|
|
format: Some(view_format),
|
|
usage: Some(
|
|
TextureUsages::COPY_DST
|
|
| TextureUsages::TEXTURE_BINDING
|
|
| TextureUsages::RENDER_ATTACHMENT,
|
|
),
|
|
..Default::default()
|
|
});
|
|
}
|
|
});
|