Skip to content

Commit 612912b

Browse files
committed
Allow overriding instance flags in tests
1 parent c628679 commit 612912b

File tree

11 files changed

+34
-14
lines changed

11 files changed

+34
-14
lines changed

examples/features/src/ray_cube_compute/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -493,11 +493,11 @@ static TEST: crate::framework::ExampleTestParams = crate::framework::ExampleTest
493493
base_test_parameters: wgpu_test::TestParameters {
494494
required_features: <Example as crate::framework::Example>::required_features(),
495495
required_limits: <Example as crate::framework::Example>::required_limits(),
496-
force_fxc: false,
497496
skips: vec![],
498497
failures: Vec::new(),
499498
required_downlevel_caps:
500499
<Example as crate::framework::Example>::required_downlevel_capabilities(),
500+
..Default::default()
501501
},
502502
comparisons: &[wgpu_test::ComparisonType::Mean(0.02)],
503503
_phantom: std::marker::PhantomData::<Example>,

examples/features/src/ray_cube_fragment/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -380,11 +380,11 @@ static TEST: crate::framework::ExampleTestParams = crate::framework::ExampleTest
380380
base_test_parameters: wgpu_test::TestParameters {
381381
required_features: <Example as crate::framework::Example>::required_features(),
382382
required_limits: <Example as crate::framework::Example>::required_limits(),
383-
force_fxc: false,
384383
skips: vec![],
385384
failures: Vec::new(),
386385
required_downlevel_caps:
387386
<Example as crate::framework::Example>::required_downlevel_capabilities(),
387+
..Default::default()
388388
},
389389
comparisons: &[wgpu_test::ComparisonType::Mean(0.02)],
390390
_phantom: std::marker::PhantomData::<Example>,

examples/features/src/ray_cube_normals/mod.rs

+1
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,7 @@ static TEST: crate::framework::ExampleTestParams = crate::framework::ExampleTest
486486
failures: Vec::new(),
487487
required_downlevel_caps:
488488
<Example as crate::framework::Example>::required_downlevel_capabilities(),
489+
..Default::default()
489490
},
490491
comparisons: &[wgpu_test::ComparisonType::Mean(0.02)],
491492
_phantom: std::marker::PhantomData::<Example>,

examples/features/src/ray_scene/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -560,11 +560,11 @@ static TEST: crate::framework::ExampleTestParams = crate::framework::ExampleTest
560560
base_test_parameters: wgpu_test::TestParameters {
561561
required_features: <Example as crate::framework::Example>::required_features(),
562562
required_limits: <Example as crate::framework::Example>::required_limits(),
563-
force_fxc: false,
564563
skips: vec![],
565564
failures: Vec::new(),
566565
required_downlevel_caps:
567566
<Example as crate::framework::Example>::required_downlevel_capabilities(),
567+
..Default::default()
568568
},
569569
comparisons: &[wgpu_test::ComparisonType::Mean(0.02)],
570570
_phantom: std::marker::PhantomData::<Example>,

examples/features/src/ray_shadows/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@ static TEST: crate::framework::ExampleTestParams = crate::framework::ExampleTest
380380
failures: Vec::new(),
381381
required_downlevel_caps:
382382
<Example as crate::framework::Example>::required_downlevel_capabilities(),
383-
force_fxc: false,
383+
..Default::default()
384384
},
385385
comparisons: &[wgpu_test::ComparisonType::Mean(0.02)],
386386
_phantom: std::marker::PhantomData::<Example>,

examples/features/src/ray_traced_triangle/mod.rs

+1
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,7 @@ static TEST: crate::framework::ExampleTestParams = crate::framework::ExampleTest
439439
failures: Vec::new(),
440440
required_downlevel_caps:
441441
<Example as crate::framework::Example>::required_downlevel_capabilities(),
442+
..Default::default()
442443
},
443444
comparisons: &[wgpu_test::ComparisonType::Mean(0.02)],
444445
_phantom: std::marker::PhantomData::<Example>,

tests/gpu-tests/create_surface_error.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@
66
#[wasm_bindgen_test::wasm_bindgen_test]
77
fn canvas_get_context_returned_null() {
88
// Not using the normal testing infrastructure because that goes straight to creating the canvas for us.
9-
let instance = wgpu_test::initialize_instance(wgpu::Backends::all(), false);
9+
let instance = wgpu_test::initialize_instance(
10+
wgpu::Backends::all(),
11+
&wgpu_test::TestParameters::default(),
12+
);
1013
// Create canvas
1114
let canvas = wgpu_test::initialize_html_canvas();
1215

tests/gpu-tests/device.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,8 @@ static REQUEST_DEVICE_ERROR_MESSAGE_NATIVE: GpuTestConfiguration = GpuTestConfig
102102
async fn request_device_error_message() {
103103
// Not using initialize_test() because that doesn't let us catch the error
104104
// nor .await anything
105-
let (_instance, adapter, _surface_guard) = wgpu_test::initialize_adapter(None, false).await;
105+
let (_instance, adapter, _surface_guard) =
106+
wgpu_test::initialize_adapter(None, &TestParameters::default()).await;
106107

107108
let device_error = adapter
108109
.request_device(&wgpu::DeviceDescriptor {

tests/src/init.rs

+11-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use wgpu::{Adapter, Backends, Device, Features, Instance, Limits, Queue};
22

3-
use crate::report::AdapterReport;
3+
use crate::{report::AdapterReport, TestParameters};
44

55
/// Initialize the logger for the test runner.
66
pub fn init_logger() {
@@ -12,7 +12,7 @@ pub fn init_logger() {
1212
}
1313

1414
/// Initialize a wgpu instance with the options from the environment.
15-
pub fn initialize_instance(backends: wgpu::Backends, force_fxc: bool) -> Instance {
15+
pub fn initialize_instance(backends: wgpu::Backends, params: &TestParameters) -> Instance {
1616
// We ignore `WGPU_BACKEND` for now, merely using test filtering to only run a single backend's tests.
1717
//
1818
// We can potentially work support back into the test runner in the future, but as the adapters are matched up
@@ -30,14 +30,19 @@ pub fn initialize_instance(backends: wgpu::Backends, force_fxc: bool) -> Instanc
3030
};
3131
// Some tests need to be able to force demote to FXC, to specifically test workarounds for FXC
3232
// behavior.
33-
let dx12_shader_compiler = if force_fxc {
33+
let dx12_shader_compiler = if params.force_fxc {
3434
wgpu::Dx12Compiler::Fxc
3535
} else {
3636
wgpu::Dx12Compiler::from_env().unwrap_or(wgpu::Dx12Compiler::StaticDxc)
3737
};
38+
// The defaults for debugging, overridden by the environment, overridden by the test parameters.
39+
let flags = wgpu::InstanceFlags::debugging()
40+
.with_env()
41+
.union(params.required_instance_flags);
42+
3843
Instance::new(&wgpu::InstanceDescriptor {
3944
backends,
40-
flags: wgpu::InstanceFlags::debugging().with_env(),
45+
flags,
4146
backend_options: wgpu::BackendOptions {
4247
dx12: wgpu::Dx12BackendOptions {
4348
shader_compiler: dx12_shader_compiler,
@@ -65,13 +70,13 @@ pub fn initialize_instance(backends: wgpu::Backends, force_fxc: bool) -> Instanc
6570
/// Initialize a wgpu adapter, using the given adapter report to match the adapter.
6671
pub async fn initialize_adapter(
6772
adapter_report: Option<&AdapterReport>,
68-
force_fxc: bool,
73+
params: &TestParameters,
6974
) -> (Instance, Adapter, Option<SurfaceGuard>) {
7075
let backends = adapter_report
7176
.map(|report| Backends::from(report.info.backend))
7277
.unwrap_or_default();
7378

74-
let instance = initialize_instance(backends, force_fxc);
79+
let instance = initialize_instance(backends, params);
7580
#[allow(unused_variables)]
7681
let surface: Option<wgpu::Surface>;
7782
let surface_guard: Option<SurfaceGuard>;

tests/src/params.rs

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use arrayvec::ArrayVec;
2-
use wgpu::{DownlevelCapabilities, DownlevelFlags, Features, Limits};
2+
use wgpu::{DownlevelCapabilities, DownlevelFlags, Features, InstanceFlags, Limits};
33

44
use crate::{
55
report::AdapterReport, FailureApplicationReasons, FailureBehavior, FailureCase,
@@ -19,6 +19,8 @@ pub struct TestParameters {
1919
pub required_downlevel_caps: DownlevelCapabilities,
2020
pub required_limits: Limits,
2121

22+
pub required_instance_flags: InstanceFlags,
23+
2224
/// On Dx12, specifically test against the Fxc compiler.
2325
///
2426
/// For testing workarounds to Fxc bugs.
@@ -37,6 +39,7 @@ impl Default for TestParameters {
3739
required_features: Features::empty(),
3840
required_downlevel_caps: LOWEST_DOWNLEVEL_PROPERTIES,
3941
required_limits: Limits::downlevel_webgl2_defaults(),
42+
required_instance_flags: InstanceFlags::empty(),
4043
force_fxc: false,
4144
skips: Vec::new(),
4245
failures: Vec::new(),
@@ -69,6 +72,12 @@ impl TestParameters {
6972
self
7073
}
7174

75+
/// Sets the instance flags that the test requires.
76+
pub fn instance_flags(mut self, instance_flags: InstanceFlags) -> Self {
77+
self.required_instance_flags |= instance_flags;
78+
self
79+
}
80+
7281
pub fn force_fxc(mut self, force_fxc: bool) -> Self {
7382
self.force_fxc = force_fxc;
7483
self

tests/src/run.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ pub async fn execute_test(
4343
let _test_guard = isolation::OneTestPerProcessGuard::new();
4444

4545
let (instance, adapter, _surface_guard) =
46-
initialize_adapter(adapter_report, config.params.force_fxc).await;
46+
initialize_adapter(adapter_report, &config.params).await;
4747

4848
let adapter_info = adapter.get_info();
4949
let adapter_downlevel_capabilities = adapter.get_downlevel_capabilities();

0 commit comments

Comments
 (0)