mirror of
https://github.com/gfx-rs/wgpu.git
synced 2026-04-22 03:02:01 -04:00
tests/gles: properly label tests that don't run without some downlevel features
This commit is contained in:
committed by
Dzmitry Malyshau
parent
b87e50feae
commit
283a9fceeb
@@ -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};
|
||||
|
||||
|
||||
@@ -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);
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user