Skip to content

Enable slangpy testing on Linux #8946

@jvepsalainen-nv

Description

@jvepsalainen-nv

Problem Description

slangpy test jobs currently run on Windows and macOS but are skipped on Linux CI builds because Linux test configurations don't enable full-gpu-tests. This includes:

  • test-slangpy - slangpy API tests
  • test-slang-rhi - slang-rhi (Rendering Hardware Interface) tests
  • test-slangpy-examples - slangpy-samples integration tests (added in Enable testing of slangpy examples #8186)

All three jobs exist in the workflow but don't run on Linux, meaning we're missing validation of these components on Linux.

Current Status

All three test jobs share the same status across platforms:

  • Windows (debug + release): runs with GPU
  • macOS (release): runs with GPU
  • Linux (debug + release): skipped

Note: test-slang-rhi on Windows also includes OptiX tests.

Proposed Solution

Enable these test jobs on Linux. Since GitHub-hosted Ubuntu runners don't have GPU support, we should:

  1. Add flags to enable tests independently of GPU (e.g., enable-slangpy-tests, enable-slang-rhi-tests, enable-slangpy-examples)
  2. Enable appropriate flags for Linux release builds in .github/workflows/ci.yml
  3. Create expected failure lists for GPU-dependent tests that won't work on CPU-only systems:
    • tests/expected-slangpy-failure-no-gpu.txt
    • tests/expected-slang-rhi-failure-no-gpu.txt
    • tests/expected-slangpy-examples-failure-no-gpu.txt
  4. Update test runners to handle expected failures gracefully

This allows us to test CPU-compatible functionality on Linux immediately, while maintaining the option to add GPU-enabled Linux runners in the future for full test coverage.

Alternative Solutions

If GPU-capable self-hosted Linux runners are available, we could simply set full-gpu-tests: true for Linux builds to enable full testing like Windows/macOS. This would provide:

  • Full slang-rhi test coverage (including rendering tests)
  • OptiX tests on Linux (currently Windows-only)
  • Complete slangpy and slangpy-examples coverage without expected failures

Additional Context

Metadata

Metadata

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions