|
| 1 | +#[cfg(not(target_arch = "spirv"))] |
| 2 | +fn main() { |
| 3 | + use difftest::config::{Config, TestMetadata}; |
| 4 | + use difftest::scaffold::compute::{ |
| 5 | + AshBackend, BufferConfig, BufferUsage, ComputeShaderTest, RustComputeShader, |
| 6 | + }; |
| 7 | + use difftest::spirv_builder::Capability; |
| 8 | + use trailing_zeros_64_rust::TEST_DATA; |
| 9 | + |
| 10 | + let config = Config::from_path(std::env::args().nth(1).unwrap()).unwrap(); |
| 11 | + |
| 12 | + // Skip on macOS due to Vulkan/MoltenVK configuration issues |
| 13 | + #[cfg(target_os = "macos")] |
| 14 | + { |
| 15 | + use difftest::scaffold::Skip; |
| 16 | + |
| 17 | + let skip = Skip::new("Ash tests are skipped on macOS due to MoltenVK configuration issues"); |
| 18 | + skip.run_test(&config).unwrap(); |
| 19 | + return; |
| 20 | + } |
| 21 | + |
| 22 | + #[cfg(not(target_os = "macos"))] |
| 23 | + { |
| 24 | + let input_bytes: Vec<u8> = bytemuck::cast_slice(&TEST_DATA).to_vec(); |
| 25 | + let output_size = (TEST_DATA.len() * std::mem::size_of::<u32>()) as u64; |
| 26 | + |
| 27 | + let buffers = vec![ |
| 28 | + BufferConfig { |
| 29 | + size: input_bytes.len() as u64, |
| 30 | + usage: BufferUsage::StorageReadOnly, |
| 31 | + initial_data: Some(input_bytes), |
| 32 | + }, |
| 33 | + BufferConfig { |
| 34 | + size: output_size, |
| 35 | + usage: BufferUsage::Storage, |
| 36 | + initial_data: None, |
| 37 | + }, |
| 38 | + ]; |
| 39 | + |
| 40 | + // Use Ash backend since wgpu/naga doesn't support Int64 |
| 41 | + let shader = RustComputeShader::default().with_capability(Capability::Int64); |
| 42 | + let num_workgroups = TEST_DATA.len() as u32; |
| 43 | + let test = ComputeShaderTest::<AshBackend, _>::new(shader, [num_workgroups, 1, 1], buffers) |
| 44 | + .unwrap(); |
| 45 | + |
| 46 | + config |
| 47 | + .write_metadata(&TestMetadata::u32()) |
| 48 | + .expect("Failed to write metadata"); |
| 49 | + |
| 50 | + test.run_test(&config).unwrap(); |
| 51 | + } |
| 52 | +} |
| 53 | + |
| 54 | +#[cfg(target_arch = "spirv")] |
| 55 | +fn main() {} |
0 commit comments