Files
wgpu/tests/gpu-tests/texture_view_creation.rs
2025-03-11 13:01:23 -04:00

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()
});
}
});