tests/gles: properly label tests that don't run without some downlevel features

This commit is contained in:
Connor Fitzgerald
2022-02-23 15:58:40 -05:00
committed by Dzmitry Malyshau
parent b87e50feae
commit 283a9fceeb
3 changed files with 56 additions and 32 deletions

View File

@@ -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};

View File

@@ -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);
},
)
}

View File

@@ -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,
};