{"id":15398092,"url":"https://github.com/llvm-beanz/offload-test-suite","last_synced_at":"2026-02-27T15:01:47.714Z","repository":{"id":210966761,"uuid":"727308773","full_name":"llvm/offload-test-suite","owner":"llvm","description":"Experimental Runtime test suite for HLSL","archived":false,"fork":false,"pushed_at":"2025-06-11T21:22:55.000Z","size":4401,"stargazers_count":5,"open_issues_count":103,"forks_count":13,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-15T04:28:44.970Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/llvm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-12-04T15:53:20.000Z","updated_at":"2025-06-11T21:22:59.000Z","dependencies_parsed_at":"2024-07-08T23:46:45.210Z","dependency_job_id":"af61076b-50fb-4e9d-841b-fd4a1f8a5d45","html_url":"https://github.com/llvm/offload-test-suite","commit_stats":{"total_commits":89,"total_committers":3,"mean_commits":"29.666666666666668","dds":0.2808988764044944,"last_synced_commit":"bdb22c9931a7cdcd0c75acae08620870f926f6f1"},"previous_names":["llvm-beanz/hlsl-test-suite","llvm-beanz/offload-test-suite","llvm-beanz/hlsltest","llvm/offload-test-suite"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/llvm/offload-test-suite","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/llvm%2Foffload-test-suite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/llvm%2Foffload-test-suite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/llvm%2Foffload-test-suite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/llvm%2Foffload-test-suite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/llvm","download_url":"https://codeload.github.com/llvm/offload-test-suite/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/llvm%2Foffload-test-suite/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260294455,"owners_count":22987622,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-01T15:40:48.795Z","updated_at":"2026-02-27T15:01:47.708Z","avatar_url":"https://github.com/llvm.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OffloadTest\nExperimental Runtime test suite for HLSL\n\n## Current Status\n\n| Testing Machine | DXC | Clang |\n|-----------------|-----|-------|\n| **Tier 1 Targets** |\n| Windows DirectX12 Intel GPU | [![DXC](https://github.com/llvm/offload-test-suite/actions/workflows/windows-intel-dxc-d3d12.yaml/badge.svg)](https://github.com/llvm/offload-test-suite/actions/workflows/windows-intel-dxc-d3d12.yaml) | [![Clang](https://github.com/llvm/offload-test-suite/actions/workflows/windows-intel-clang-d3d12.yaml/badge.svg)](https://github.com/llvm/offload-test-suite/actions/workflows/windows-intel-clang-d3d12.yaml) |\n| Windows DirectX12 Warp (x64 LKG) | [![DXC](https://github.com/llvm/offload-test-suite/actions/workflows/windows-amd-dxc-warp-d3d12.yaml/badge.svg)](https://github.com/llvm/offload-test-suite/actions/workflows/windows-amd-dxc-warp-d3d12.yaml) | [![Clang](https://github.com/llvm/offload-test-suite/actions/workflows/windows-amd-clang-warp-d3d12.yaml/badge.svg)](https://github.com/llvm/offload-test-suite/actions/workflows/windows-amd-clang-warp-d3d12.yaml) |\n| Windows DirectX12 Warp (arm64 LKG) | [![DXC](https://github.com/llvm/offload-test-suite/actions/workflows/windows-qc-dxc-warp-d3d12.yaml/badge.svg)](https://github.com/llvm/offload-test-suite/actions/workflows/windows-qc-dxc-warp-d3d12.yaml) | [![Clang](https://github.com/llvm/offload-test-suite/actions/workflows/windows-qc-clang-warp-d3d12.yaml/badge.svg)](https://github.com/llvm/offload-test-suite/actions/workflows/windows-qc-clang-warp-d3d12.yaml) |\n| Windows Vulkan Intel GPU | [![DXC](https://github.com/llvm/offload-test-suite/actions/workflows/windows-intel-dxc-vk.yaml/badge.svg)](https://github.com/llvm/offload-test-suite/actions/workflows/windows-intel-dxc-vk.yaml) | [![Clang](https://github.com/llvm/offload-test-suite/actions/workflows/windows-intel-clang-vk.yaml/badge.svg)](https://github.com/llvm/offload-test-suite/actions/workflows/windows-intel-clang-vk.yaml) |\n| **Tier 2 Targets** |\n| macOS Apple M1 | [![DXC](https://github.com/llvm/offload-test-suite/actions/workflows/macos-dxc-mtl.yaml/badge.svg)](https://github.com/llvm/offload-test-suite/actions/workflows/macos-dxc-mtl.yaml) | [![Clang \u0026 DXC](https://github.com/llvm/offload-test-suite/actions/workflows/macos-clang-mtl.yaml/badge.svg)](https://github.com/llvm/offload-test-suite/actions/workflows/macos-clang-mtl.yaml) |\n| **Experimental Targets** |\n| Windows DirectX12 AMD GPU | [![DXC](https://github.com/llvm/offload-test-suite/actions/workflows/windows-amd-dxc-d3d12.yaml/badge.svg)](https://github.com/llvm/offload-test-suite/actions/workflows/windows-amd-dxc-d3d12.yaml) | [![Clang](https://github.com/llvm/offload-test-suite/actions/workflows/windows-amd-clang-d3d12.yaml/badge.svg)](https://github.com/llvm/offload-test-suite/actions/workflows/windows-amd-clang-d3d12.yaml) |\n| Windows DirectX12 NVIDIA GPU | [![DXC](https://github.com/llvm/offload-test-suite/actions/workflows/windows-nvidia-dxc-d3d12.yaml/badge.svg)](https://github.com/llvm/offload-test-suite/actions/workflows/windows-nvidia-dxc-d3d12.yaml) | [![Clang](https://github.com/llvm/offload-test-suite/actions/workflows/windows-nvidia-clang-d3d12.yaml/badge.svg)](https://github.com/llvm/offload-test-suite/actions/workflows/windows-nvidia-clang-d3d12.yaml) |\n| Windows DirectX12 Qualcomm GPU | [![DXC](https://github.com/llvm/offload-test-suite/actions/workflows/windows-qc-dxc-d3d12.yaml/badge.svg)](https://github.com/llvm/offload-test-suite/actions/workflows/windows-qc-dxc-d3d12.yaml) | [![Clang](https://github.com/llvm/offload-test-suite/actions/workflows/windows-qc-clang-d3d12.yaml/badge.svg)](https://github.com/llvm/offload-test-suite/actions/workflows/windows-qc-clang-d3d12.yaml) |\n| Windows Vulkan AMD GPU | [![DXC](https://github.com/llvm/offload-test-suite/actions/workflows/windows-amd-dxc-vk.yaml/badge.svg)](https://github.com/llvm/offload-test-suite/actions/workflows/windows-amd-dxc-vk.yaml) | [![Clang](https://github.com/llvm/offload-test-suite/actions/workflows/windows-amd-clang-vk.yaml/badge.svg)](https://github.com/llvm/offload-test-suite/actions/workflows/windows-amd-clang-vk.yaml) |\n| Windows Vulkan NVIDIA GPU | [![DXC](https://github.com/llvm/offload-test-suite/actions/workflows/windows-nvidia-dxc-vk.yaml/badge.svg)](https://github.com/llvm/offload-test-suite/actions/workflows/windows-nvidia-dxc-vk.yaml) | [![Clang](https://github.com/llvm/offload-test-suite/actions/workflows/windows-nvidia-clang-vk.yaml/badge.svg)](https://github.com/llvm/offload-test-suite/actions/workflows/windows-nvidia-clang-vk.yaml) |\n| Windows Vulkan Qualcomm GPU | [![DXC](https://github.com/llvm/offload-test-suite/actions/workflows/windows-qc-dxc-vk.yaml/badge.svg)](https://github.com/llvm/offload-test-suite/actions/workflows/windows-qc-dxc-vk.yaml) | [![Clang](https://github.com/llvm/offload-test-suite/actions/workflows/windows-qc-clang-vk.yaml/badge.svg)](https://github.com/llvm/offload-test-suite/actions/workflows/windows-qc-clang-vk.yaml) |\n\nSee the [Continuous Integration](docs/CI.md) documentation for the description of support tiers and builder hardware.\n\n# Prerequisites\n\nRequires the Vulkan 1.4 SDK.\n\nThis project requires being able to locally build LLVM and leverages LLVM's build infrastructure. It also requires installing the `pyyaml` Python package. You can install `pyyaml` by running:\n\n```shell\npip3 install pyyaml\n```\n\nOn Windows, the [Graphics Tools](https://learn.microsoft.com/en-us/windows/win32/direct3d12/directx-12-programming-environment-set-up#debug-layer) optional feature is additionally required to run the test suite.\n\n# Adding to LLVM Build\n\nAdd the following to the CMake options:\n\n```shell\n-DLLVM_EXTERNAL_OFFLOADTEST_SOURCE_DIR=${workspaceRoot}\\..\\OffloadTest -DLLVM_EXTERNAL_PROJECTS=\"OffloadTest\"\n```\n\nIf you do not have a build of dxc on your path you'll need to specify the shader\ncompiler to use by passing:\n\n```shell\n-DDXC_DIR=\u003cpath to folder containing dxc \u0026 dxv\u003e\n```\n\n## Enabling clang-tidy\n\nThe offload test suite's code is clang-tidy clean for a limited ruleset.\nIf you have clang-tidy installed locally you can enable clang-tidy by adding `-DOFFLOADTEST_USE_CLANG_TIDY=On` to your CMake invocation.\nYou can also add `-DOFFLOADTEST_CLANG_TIDY_APPLY_FIX=On` to enable automatically applying the clang-tidy fix-its for any warnings that have automated fixes.\n\n# Failing tests\n\nTests which are failing can be prevented from running using `XFAIL` and `UNSUPPORTED`. When `XFAIL`ing a test make sure to add a comment above\nlinking the appropriate issue and whether the failure is due to a bug or an unimplemented feature.\n\n```\n# Bug/Unimplemented \u003clink to issue\u003e\n# XFAIL: Clang \u0026\u0026 Vulkan\n```\n\n# YAML Pipeline Format\n\nThis framework provides a YAML representation for describing GPU pipelines and buffers. The format is implemented by the `API/Pipeline.{h|cpp}` sources. The following is an example pipeline YAML description:\n\n```yaml\n---\nShaders:\n  - Stage: Compute\n    Entry: main\n    DispatchSize: [1, 1, 1]\nBuffers:\n  - Name: Constants\n    Format: Int32\n    Data: [ 1, 2, 3, 4, 5, 6, 7, 8]\n  - Name: In1\n    Format: Float32\n    Data: [ 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8]\n  - Name: In2\n    Format: Hex16\n    Data: [ 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]\n  - Name: Tex\n    Format: Float32\n    Channels: 4\n    OutputProps:\n      Width: 2\n      Height: 2\n      Depth: 1\n      MipLevels: 2\n    Data: [ 1.0, 0.0, 0.0, 1.0,  # Mip 0 (2x2)\n            0.0, 1.0, 0.0, 1.0,\n            0.0, 0.0, 1.0, 1.0,\n            1.0, 1.0, 1.0, 1.0,\n            1.0, 1.0, 0.0, 1.0 ] # Mip 1 (1x1)\n  - Name: Out1 # Buffer where our output will go\n    Format: Float32\n    Stride: 4\n    FillSize: 8\n    FillValue: 0.0 # The FillValue is optional and defaults to zero\n  - Name: Expected1 # Buffer which stores the expected result of our test\n    Format: Float32\n    Stride: 4\n    Data: [ 0.0, 1.0 ]\n  - Name: Out2 # Buffer where our output will go\n    Format: Float16\n    Stride: 2\n    FillSize: 4 # FillSize needs to be 4 bytes minimum\n  - Name: Expected2 # Buffer which stores the expected result of our test\n    Format: Float16\n    Stride: 2\n    Data: [ 0x1, 0x2 ]\nResults: # Using Result can verify test values without filecheck\n  - Result: Test1\n    Rule: BufferFloatULP # Rule which can be used to compare Float Buffers; They are compared within a ULP range\n    ULPT: 1 # ULP to use\n    DenormMode: Any # if DenormMode Field is not Specified, 'Any' is the default; FTZ and Preserve are the other options.\n    Actual: Out1 # First buffer to compare\n    Expected: Expected1 # Second buffer to compare against first\n  - Result: Test2\n    Rule: BufferExact # Compares Two Buffers for == equality between each value elementwise\n    Actual: Out1\n    Expected: Expected1\n  - Result: Test3\n    Rule: BufferFloatEpsilon # Rule which can be used to compare Float Buffers; They are compared within an epsilon difference\n    Epsilon: 0.0008\n    Actual: Out1\n    Expected: Expected1\nDescriptorSets:\n  - Resources:\n    - Name: Constants\n      Kind: ConstantBuffer\n      DirectXBinding:\n        Register: 0 # implies b0 due to Access being Constant\n        Space: 0\n      VulkanBinding:\n        Binding: 0 # [[vk::binding(0, 0)]]\n    - Name: In1\n      Kind: Buffer\n      DirectXBinding:\n        Register: 0 # implies t0 due to Access being RO\n        Space: 0\n      VulkanBinding:\n        Binding: 10\n  - Resources:\n    - Name: In2\n      Kind: Buffer\n      DirectXBinding:\n        Register: 1 # implies t1 due to Access being RO\n        Space: 0\n      VulkanBinding:\n        Binding: 0 # [[vk::binding(0, 1)]]\n...\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fllvm-beanz%2Foffload-test-suite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fllvm-beanz%2Foffload-test-suite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fllvm-beanz%2Foffload-test-suite/lists"}