mirror of
https://github.com/gfx-rs/wgpu.git
synced 2026-04-22 03:02:01 -04:00
117 lines
4.1 KiB
Rust
117 lines
4.1 KiB
Rust
use wgpu_test::{gpu_test, GpuTestConfiguration, TestParameters, TestingContext};
|
|
|
|
/// Test `descriptor` against a bind group layout that requires non-filtering sampler.
|
|
fn try_sampler_nonfiltering_layout(
|
|
ctx: TestingContext,
|
|
descriptor: &wgpu::SamplerDescriptor,
|
|
good: bool,
|
|
) {
|
|
let label = descriptor.label;
|
|
let bind_group_layout = ctx
|
|
.device
|
|
.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor {
|
|
label,
|
|
entries: &[wgpu::BindGroupLayoutEntry {
|
|
binding: 0,
|
|
visibility: wgpu::ShaderStages::FRAGMENT,
|
|
ty: wgpu::BindingType::Sampler(wgpu::SamplerBindingType::NonFiltering),
|
|
count: None,
|
|
}],
|
|
});
|
|
|
|
let sampler = ctx.device.create_sampler(descriptor);
|
|
|
|
let create_bind_group = || {
|
|
let _ = ctx.device.create_bind_group(&wgpu::BindGroupDescriptor {
|
|
label,
|
|
layout: &bind_group_layout,
|
|
entries: &[wgpu::BindGroupEntry {
|
|
binding: 0,
|
|
resource: wgpu::BindingResource::Sampler(&sampler),
|
|
}],
|
|
});
|
|
};
|
|
|
|
if good {
|
|
wgpu_test::valid(&ctx.device, create_bind_group);
|
|
} else {
|
|
wgpu_test::fail(
|
|
&ctx.device,
|
|
create_bind_group,
|
|
Some("but given a sampler with filtering"),
|
|
);
|
|
}
|
|
}
|
|
|
|
#[gpu_test]
|
|
static BIND_GROUP_NONFILTERING_LAYOUT_NONFILTERING_SAMPLER: GpuTestConfiguration =
|
|
GpuTestConfiguration::new()
|
|
.parameters(TestParameters::default())
|
|
.run_sync(|ctx| {
|
|
try_sampler_nonfiltering_layout(
|
|
ctx,
|
|
&wgpu::SamplerDescriptor {
|
|
label: Some("bind_group_non_filtering_layout_nonfiltering_sampler"),
|
|
min_filter: wgpu::FilterMode::Nearest,
|
|
mag_filter: wgpu::FilterMode::Nearest,
|
|
mipmap_filter: wgpu::FilterMode::Nearest,
|
|
..wgpu::SamplerDescriptor::default()
|
|
},
|
|
true,
|
|
);
|
|
});
|
|
|
|
#[gpu_test]
|
|
static BIND_GROUP_NONFILTERING_LAYOUT_MIN_SAMPLER: GpuTestConfiguration =
|
|
GpuTestConfiguration::new()
|
|
.parameters(TestParameters::default())
|
|
.run_sync(|ctx| {
|
|
try_sampler_nonfiltering_layout(
|
|
ctx,
|
|
&wgpu::SamplerDescriptor {
|
|
label: Some("bind_group_non_filtering_layout_min_sampler"),
|
|
min_filter: wgpu::FilterMode::Linear,
|
|
mag_filter: wgpu::FilterMode::Nearest,
|
|
mipmap_filter: wgpu::FilterMode::Nearest,
|
|
..wgpu::SamplerDescriptor::default()
|
|
},
|
|
false,
|
|
);
|
|
});
|
|
|
|
#[gpu_test]
|
|
static BIND_GROUP_NONFILTERING_LAYOUT_MAG_SAMPLER: GpuTestConfiguration =
|
|
GpuTestConfiguration::new()
|
|
.parameters(TestParameters::default())
|
|
.run_sync(|ctx| {
|
|
try_sampler_nonfiltering_layout(
|
|
ctx,
|
|
&wgpu::SamplerDescriptor {
|
|
label: Some("bind_group_non_filtering_layout_mag_sampler"),
|
|
min_filter: wgpu::FilterMode::Nearest,
|
|
mag_filter: wgpu::FilterMode::Linear,
|
|
mipmap_filter: wgpu::FilterMode::Nearest,
|
|
..wgpu::SamplerDescriptor::default()
|
|
},
|
|
false,
|
|
);
|
|
});
|
|
|
|
#[gpu_test]
|
|
static BIND_GROUP_NONFILTERING_LAYOUT_MIPMAP_SAMPLER: GpuTestConfiguration =
|
|
GpuTestConfiguration::new()
|
|
.parameters(TestParameters::default())
|
|
.run_sync(|ctx| {
|
|
try_sampler_nonfiltering_layout(
|
|
ctx,
|
|
&wgpu::SamplerDescriptor {
|
|
label: Some("bind_group_non_filtering_layout_mipmap_sampler"),
|
|
min_filter: wgpu::FilterMode::Nearest,
|
|
mag_filter: wgpu::FilterMode::Nearest,
|
|
mipmap_filter: wgpu::FilterMode::Linear,
|
|
..wgpu::SamplerDescriptor::default()
|
|
},
|
|
false,
|
|
);
|
|
});
|