mirror of
https://github.com/gfx-rs/wgpu.git
synced 2024-11-22 06:44:14 +00:00
[d3d12] use plane 1 for stencil only views (#5100)
* [d3d12] use plane 1 for stencil only views * add test * skip stencil only view creation on WebGL
This commit is contained in:
parent
101e9a574d
commit
f9509bcf9e
@ -34,6 +34,7 @@ mod shader;
|
||||
mod shader_primitive_index;
|
||||
mod shader_view_format;
|
||||
mod texture_bounds;
|
||||
mod texture_view_creation;
|
||||
mod transfer;
|
||||
mod vertex_indices;
|
||||
mod write_texture;
|
||||
|
65
tests/tests/texture_view_creation.rs
Normal file
65
tests/tests/texture_view_creation.rs
Normal file
@ -0,0 +1,65 @@
|
||||
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()
|
||||
});
|
||||
}
|
||||
});
|
@ -36,6 +36,7 @@ impl crate::TextureViewDescriptor<'_> {
|
||||
|
||||
fn aspects_to_plane(aspects: crate::FormatAspects) -> u32 {
|
||||
match aspects {
|
||||
crate::FormatAspects::STENCIL => 1,
|
||||
crate::FormatAspects::PLANE_1 => 1,
|
||||
crate::FormatAspects::PLANE_2 => 2,
|
||||
_ => 0,
|
||||
|
Loading…
Reference in New Issue
Block a user