diff --git a/wgpu/examples/hello-compute/tests.rs b/wgpu/examples/hello-compute/tests.rs index f7e9cfd863..fa518a06cb 100644 --- a/wgpu/examples/hello-compute/tests.rs +++ b/wgpu/examples/hello-compute/tests.rs @@ -9,7 +9,9 @@ use common::{initialize_test, TestParameters}; #[test] fn test_compute_1() { initialize_test( - TestParameters::default().specific_failure(None, None, Some("V3D"), true), + TestParameters::default() + .downlevel_flags(wgpu::DownlevelFlags::COMPUTE_SHADERS) + .specific_failure(None, None, Some("V3D"), true), |ctx| { let input = &[1, 2, 3, 4]; @@ -26,7 +28,9 @@ fn test_compute_1() { #[test] fn test_compute_2() { initialize_test( - TestParameters::default().specific_failure(None, None, Some("V3D"), true), + TestParameters::default() + .downlevel_flags(wgpu::DownlevelFlags::COMPUTE_SHADERS) + .specific_failure(None, None, Some("V3D"), true), |ctx| { let input = &[5, 23, 10, 9]; @@ -43,7 +47,9 @@ fn test_compute_2() { #[test] fn test_compute_overflow() { initialize_test( - TestParameters::default().specific_failure(None, None, Some("V3D"), true), + TestParameters::default() + .downlevel_flags(wgpu::DownlevelFlags::COMPUTE_SHADERS) + .specific_failure(None, None, Some("V3D"), true), |ctx| { let input = &[77031, 837799, 8400511, 63728127]; pollster::block_on(assert_execute_gpu( @@ -59,7 +65,9 @@ fn test_compute_overflow() { #[test] fn test_multithreaded_compute() { initialize_test( - TestParameters::default().specific_failure(None, None, Some("V3D"), true), + TestParameters::default() + .downlevel_flags(wgpu::DownlevelFlags::COMPUTE_SHADERS) + .specific_failure(None, None, Some("V3D"), true), |ctx| { use std::{sync::mpsc, thread, time::Duration}; diff --git a/wgpu/tests/clear_texture.rs b/wgpu/tests/clear_texture.rs index 0a2c9dd152..788a37b12b 100644 --- a/wgpu/tests/clear_texture.rs +++ b/wgpu/tests/clear_texture.rs @@ -239,7 +239,12 @@ fn single_texture_clear_test( // TODO: Read back and check zeroness? } -fn clear_texture_tests(ctx: &TestingContext, formats: &[wgpu::TextureFormat], supports_1d: bool) { +fn clear_texture_tests( + ctx: &TestingContext, + formats: &[wgpu::TextureFormat], + supports_1d: bool, + supports_3d: bool, +) { for &format in formats { // 1D texture if supports_1d { @@ -265,29 +270,31 @@ fn clear_texture_tests(ctx: &TestingContext, formats: &[wgpu::TextureFormat], su }, wgpu::TextureDimension::D2, ); - // 2D array texture - single_texture_clear_test( - ctx, - format, - wgpu::Extent3d { - width: 64, - height: 64, - depth_or_array_layers: 4, - }, - wgpu::TextureDimension::D2, - ); - // volume texture - if format.describe().sample_type != wgt::TextureSampleType::Depth { + if supports_3d { + // 2D array texture single_texture_clear_test( ctx, format, wgpu::Extent3d { - width: 16, - height: 16, - depth_or_array_layers: 16, + width: 64, + height: 64, + depth_or_array_layers: 4, }, - wgpu::TextureDimension::D3, + wgpu::TextureDimension::D2, ); + // volume texture + if format.describe().sample_type != wgt::TextureSampleType::Depth { + single_texture_clear_test( + ctx, + format, + wgpu::Extent3d { + width: 16, + height: 16, + depth_or_array_layers: 16, + }, + wgpu::TextureDimension::D3, + ); + } } } } @@ -297,8 +304,8 @@ fn clear_texture_2d_uncompressed() { initialize_test( TestParameters::default().features(wgpu::Features::CLEAR_TEXTURE), |ctx| { - clear_texture_tests(&ctx, TEXTURE_FORMATS_UNCOMPRESSED, true); - clear_texture_tests(&ctx, TEXTURE_FORMATS_DEPTH, false); + clear_texture_tests(&ctx, TEXTURE_FORMATS_UNCOMPRESSED, true, true); + clear_texture_tests(&ctx, TEXTURE_FORMATS_DEPTH, false, true); }, ) } @@ -307,9 +314,10 @@ fn clear_texture_2d_uncompressed() { fn clear_texture_2d_bc() { initialize_test( TestParameters::default() - .features(wgpu::Features::CLEAR_TEXTURE | wgpu::Features::TEXTURE_COMPRESSION_BC), + .features(wgpu::Features::CLEAR_TEXTURE | wgpu::Features::TEXTURE_COMPRESSION_BC) + .specific_failure(Some(wgpu::Backends::GL), None, None, true), |ctx| { - clear_texture_tests(&ctx, TEXTURE_FORMATS_BC, false); + clear_texture_tests(&ctx, TEXTURE_FORMATS_BC, false, true); }, ) } @@ -318,9 +326,10 @@ fn clear_texture_2d_bc() { fn clear_texture_2d_astc() { initialize_test( TestParameters::default() - .features(wgpu::Features::CLEAR_TEXTURE | wgpu::Features::TEXTURE_COMPRESSION_ASTC_LDR), + .features(wgpu::Features::CLEAR_TEXTURE | wgpu::Features::TEXTURE_COMPRESSION_ASTC_LDR) + .specific_failure(Some(wgpu::Backends::GL), None, None, true), |ctx| { - clear_texture_tests(&ctx, TEXTURE_FORMATS_ASTC, false); + clear_texture_tests(&ctx, TEXTURE_FORMATS_ASTC, false, true); }, ) } @@ -329,9 +338,10 @@ fn clear_texture_2d_astc() { fn clear_texture_2d_etc2() { initialize_test( TestParameters::default() - .features(wgpu::Features::CLEAR_TEXTURE | wgpu::Features::TEXTURE_COMPRESSION_ETC2), + .features(wgpu::Features::CLEAR_TEXTURE | wgpu::Features::TEXTURE_COMPRESSION_ETC2) + .specific_failure(Some(wgpu::Backends::GL), None, None, true), |ctx| { - clear_texture_tests(&ctx, TEXTURE_FORMATS_ETC2, false); + clear_texture_tests(&ctx, TEXTURE_FORMATS_ETC2, false, true); }, ) } diff --git a/wgpu/tests/common/mod.rs b/wgpu/tests/common/mod.rs index b9a9b63507..9e97b47d6b 100644 --- a/wgpu/tests/common/mod.rs +++ b/wgpu/tests/common/mod.rs @@ -34,7 +34,10 @@ async fn initialize_device( pub struct TestingContext { pub adapter: Adapter, pub adapter_info: wgt::AdapterInfo, + pub adapter_downlevel_capabilities: wgt::DownlevelCapabilities, pub device: Device, + pub device_features: wgt::Features, + pub device_limits: wgt::Limits, pub queue: Queue, } @@ -156,7 +159,7 @@ pub fn initialize_test(parameters: TestParameters, test_function: impl FnOnce(Te )) .expect("could not find sutable adapter on the system"); - let required_limits = Limits::downlevel_defaults(); + let required_limits = Limits::downlevel_webgl2_defaults(); let adapter_info = adapter.get_info(); let adapter_lowercase_name = adapter_info.name.to_lowercase(); let adapter_features = adapter.features(); @@ -197,13 +200,16 @@ pub fn initialize_test(parameters: TestParameters, test_function: impl FnOnce(Te let (device, queue) = pollster::block_on(initialize_device( &adapter, parameters.required_features, - required_limits, + required_limits.clone(), )); let context = TestingContext { adapter, adapter_info: adapter_info.clone(), + adapter_downlevel_capabilities, device, + device_features: parameters.required_features, + device_limits: required_limits, queue, };