From de8c47ebcf1dfa27db5c829dd770681b95f4bce6 Mon Sep 17 00:00:00 2001 From: Bruce Mitchener Date: Fri, 22 May 2026 02:21:33 +0700 Subject: [PATCH] ci: skip vello gpu tests on windows --- .github/workflows/ci.yml | 10 ++++++++++ imaging_vello/build.rs | 26 ++++++++++++++++++++++++++ imaging_vello/src/lib.rs | 8 ++++++++ 3 files changed, 44 insertions(+) create mode 100644 imaging_vello/build.rs diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index aa70eb0..04cd2f3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -233,6 +233,16 @@ jobs: strategy: matrix: os: [windows-latest, macos-latest, ubuntu-latest] + include: + - os: ubuntu-latest + gpu: 'yes' + - os: macos-latest + gpu: 'yes' + - os: windows-latest + # Windows hosted runners do not provide a reliable Vello GPU runtime. + gpu: 'no' + env: + IMAGING_CI_GPU_SUPPORT: ${{ matrix.gpu }} steps: - uses: actions/checkout@v6 diff --git a/imaging_vello/build.rs b/imaging_vello/build.rs new file mode 100644 index 0000000..6093b46 --- /dev/null +++ b/imaging_vello/build.rs @@ -0,0 +1,26 @@ +// Copyright 2026 the Imaging Authors +// SPDX-License-Identifier: Apache-2.0 OR MIT + +//! Build-script configuration for `imaging_vello` tests. + +use std::env; + +fn main() { + println!("cargo:rerun-if-env-changed=IMAGING_CI_GPU_SUPPORT"); + println!("cargo:rustc-check-cfg=cfg(skip_gpu_tests)"); + + let Ok(mut value) = env::var("IMAGING_CI_GPU_SUPPORT") else { + return; + }; + value.make_ascii_lowercase(); + + match value.as_str() { + "yes" | "y" => {} + "no" | "n" => { + println!("cargo:rustc-cfg=skip_gpu_tests"); + } + _ => { + println!("cargo:warning=IMAGING_CI_GPU_SUPPORT should be set to yes/y or no/n"); + } + } +} diff --git a/imaging_vello/src/lib.rs b/imaging_vello/src/lib.rs index 60d09e5..0202587 100644 --- a/imaging_vello/src/lib.rs +++ b/imaging_vello/src/lib.rs @@ -605,6 +605,7 @@ mod tests { } #[test] + #[cfg_attr(skip_gpu_tests, ignore)] fn render_renders_encoded_scene() { let Ok((device, queue)) = try_init_device_and_queue() else { return; @@ -628,6 +629,7 @@ mod tests { } #[test] + #[cfg_attr(skip_gpu_tests, ignore)] fn render_source_renders_scene() { let Ok((device, queue)) = try_init_device_and_queue() else { return; @@ -678,6 +680,7 @@ mod tests { } #[test] + #[cfg_attr(skip_gpu_tests, ignore)] fn texture_view_render_smoke() { let Ok((device, queue)) = try_init_device_and_queue() else { return; @@ -721,6 +724,7 @@ mod tests { } #[test] + #[cfg_attr(skip_gpu_tests, ignore)] fn render_source_to_texture_smoke() { let Ok((device, queue)) = try_init_device_and_queue() else { return; @@ -767,6 +771,7 @@ mod tests { } #[test] + #[cfg_attr(skip_gpu_tests, ignore)] fn render_source_texture_returns_independent_texture() { let Ok((device, queue)) = try_init_device_and_queue() else { return; @@ -791,6 +796,7 @@ mod tests { } #[test] + #[cfg_attr(skip_gpu_tests, ignore)] fn render_source_into_rejects_short_row_stride_as_target_error() { let Ok((device, queue)) = try_init_device_and_queue() else { return; @@ -822,6 +828,7 @@ mod tests { } #[test] + #[cfg_attr(skip_gpu_tests, ignore)] fn render_source_into_rejects_short_buffer_as_target_error() { let Ok((device, queue)) = try_init_device_and_queue() else { return; @@ -859,6 +866,7 @@ mod tests { } #[test] + #[cfg_attr(skip_gpu_tests, ignore)] fn app_owned_wgpu_renders() { let Ok((device, queue)) = try_init_device_and_queue() else { return;