mirror of
https://github.com/gfx-rs/wgpu.git
synced 2024-11-22 14:55:05 +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_primitive_index;
|
||||||
mod shader_view_format;
|
mod shader_view_format;
|
||||||
mod texture_bounds;
|
mod texture_bounds;
|
||||||
|
mod texture_view_creation;
|
||||||
mod transfer;
|
mod transfer;
|
||||||
mod vertex_indices;
|
mod vertex_indices;
|
||||||
mod write_texture;
|
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 {
|
fn aspects_to_plane(aspects: crate::FormatAspects) -> u32 {
|
||||||
match aspects {
|
match aspects {
|
||||||
|
crate::FormatAspects::STENCIL => 1,
|
||||||
crate::FormatAspects::PLANE_1 => 1,
|
crate::FormatAspects::PLANE_1 => 1,
|
||||||
crate::FormatAspects::PLANE_2 => 2,
|
crate::FormatAspects::PLANE_2 => 2,
|
||||||
_ => 0,
|
_ => 0,
|
||||||
|
Loading…
Reference in New Issue
Block a user