Skip to content

Resolve: clspv opaque-pointer undefs, clvk unmap use-after-free, GL sharing and OpenCL memory accounting #58

Resolve: clspv opaque-pointer undefs, clvk unmap use-after-free, GL sharing and OpenCL memory accounting

Resolve: clspv opaque-pointer undefs, clvk unmap use-after-free, GL sharing and OpenCL memory accounting #58

Workflow file for this run

name: Windows graphics and compute bundle
on:
workflow_dispatch:
push:
branches: [master]
tags: ['v*']
pull_request:
branches: [master]
permissions:
contents: read
concurrency:
group: windows-stack-${{ github.ref }}
cancel-in-progress: true
env:
PYTHON_VERSION: '3.12'
MESON_VERSION: '1.11.2'
RUST_TOOLCHAIN: nightly-2026-07-14
CARGO_MAKE_VERSION: '0.37.24'
RUST_SCRIPT_VERSION: '0.36.0'
LLVM_VERSION: '17.0.6'
VULKAN_SDK_VERSION: '1.4.309.0'
CLVK_REPOSITORY: https://github.com/winboat-org/clvk-helios.git
CLVK_COMMIT: 93742490431e7c77428384b8698bd6594df04611
VULKAN_LOADER_COMMIT: 06830240f7a70599053f47b5f10af543e8c3daf6
VULKAN_HEADERS_COMMIT: 11d6898377797e07dbd543aaaa367e4465074597
OPENCL_LOADER_COMMIT: 18fdcd58286376124f938948aa8ed156079c1c16
OPENCL_HEADERS_COMMIT: 6fe718c31a45fe25151362a72ef041c3a1047cbd
jobs:
driver:
name: WDDM driver and Direct3D 11 UMD
runs-on: windows-2022
timeout-minutes: 120
steps:
- uses: actions/checkout@v7
with:
submodules: false
fetch-depth: 1
- name: Initialize DXVK sources
shell: pwsh
run: git submodule update --init --recursive dxvk-helios
- uses: actions/setup-python@v7
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Install Meson and Ninja
shell: pwsh
run: python -m pip install "meson==${env:MESON_VERSION}" ninja
- name: Install LLVM
uses: KyleMayes/install-llvm-action@ebc0426251bc40c7cd31162802432c68818ab8f0
with:
version: ${{ env.LLVM_VERSION }}
- name: Install Vulkan SDK tools
uses: humbletim/install-vulkan-sdk@30ba978f977e81b72d091fc8888feb1fb26f9aff
with:
version: ${{ env.VULKAN_SDK_VERSION }}
cache: true
- name: Install Rust nightly
uses: dtolnay/rust-toolchain@2c7215f132e9ebf062739d9130488b56d53c060c
with:
toolchain: ${{ env.RUST_TOOLCHAIN }}
components: rust-src
- name: Install Rust build helpers
shell: pwsh
run: |
cargo install cargo-make --locked --version $env:CARGO_MAKE_VERSION
cargo install rust-script --locked --version $env:RUST_SCRIPT_VERSION
- name: Ensure Windows Driver Kit is installed
shell: pwsh
run: ./ci/windows/Install-WindowsDriverKit.ps1
- name: Build driver package
shell: pwsh
run: ./ci/windows/Build-Driver.ps1 -RepoRoot $env:GITHUB_WORKSPACE -OutputDir "$env:RUNNER_TEMP/helios-driver"
- uses: actions/upload-artifact@v7
with:
name: helios-driver
path: ${{ runner.temp }}/helios-driver
if-no-files-found: error
retention-days: 14
mesa:
name: Mesa Venus Vulkan and Zink OpenGL
runs-on: windows-2022
timeout-minutes: 120
steps:
- uses: actions/checkout@v7
with:
submodules: false
fetch-depth: 1
- name: Initialize Mesa fork
shell: pwsh
run: git submodule update --init icd/mesa
- uses: msys2/setup-msys2@66cd2cce69caa17b53920067426061ca1de3a884
with:
msystem: UCRT64
update: true
install: >-
git
mingw-w64-ucrt-x86_64-gcc
mingw-w64-ucrt-x86_64-meson
mingw-w64-ucrt-x86_64-ninja
mingw-w64-ucrt-x86_64-python
mingw-w64-ucrt-x86_64-python-mako
mingw-w64-ucrt-x86_64-python-packaging
mingw-w64-ucrt-x86_64-python-yaml
mingw-w64-ucrt-x86_64-pkgconf
mingw-w64-ucrt-x86_64-vulkan-headers
mingw-w64-ucrt-x86_64-vulkan-loader
bison
flex
- name: Build Mesa runtime
shell: msys2 {0}
run: bash ./ci/windows/build-mesa.sh "$GITHUB_WORKSPACE" "$RUNNER_TEMP/helios-mesa"
- uses: actions/upload-artifact@v7
with:
name: helios-mesa
path: ${{ runner.temp }}/helios-mesa
if-no-files-found: error
retention-days: 14
opencl:
name: CLVK with embedded clspv
runs-on: windows-2022
timeout-minutes: 180
steps:
- uses: actions/checkout@v7
with:
submodules: false
fetch-depth: 1
- uses: actions/setup-python@v7
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Install Ninja
uses: seanmiddleditch/gha-setup-ninja@7e868db0f3406270dd46e1dac26c65f621456723
- name: Set up MSVC for Ninja
uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756
- name: Restore CLVK compiler cache
uses: hendrikmuhs/ccache-action@5ebbd400eff9e74630f759d94ddd7b6c26299639
with:
variant: sccache
max-size: 2G
key: windows-2022-clvk-online
- name: Install Vulkan SDK
uses: humbletim/install-vulkan-sdk@30ba978f977e81b72d091fc8888feb1fb26f9aff
with:
version: ${{ env.VULKAN_SDK_VERSION }}
cache: true
- name: Build CLVK
shell: pwsh
run: ./ci/windows/Build-OpenCL.ps1 -OutputDir "$env:RUNNER_TEMP/helios-opencl" -ClvkRepository $env:CLVK_REPOSITORY -ClvkCommit $env:CLVK_COMMIT
- uses: actions/upload-artifact@v7
with:
name: helios-opencl
path: ${{ runner.temp }}/helios-opencl
if-no-files-found: error
retention-days: 14
loaders:
name: Khronos loaders and smoke probes
runs-on: windows-2022
timeout-minutes: 60
steps:
- uses: actions/checkout@v7
with:
submodules: false
fetch-depth: 1
- name: Build official loaders and probes
shell: pwsh
run: >-
./ci/windows/Build-KhronosLoaders.ps1
-RepoRoot $env:GITHUB_WORKSPACE
-OutputDir "$env:RUNNER_TEMP/helios-loaders"
-VulkanLoaderCommit $env:VULKAN_LOADER_COMMIT
-VulkanHeadersCommit $env:VULKAN_HEADERS_COMMIT
-OpenClLoaderCommit $env:OPENCL_LOADER_COMMIT
-OpenClHeadersCommit $env:OPENCL_HEADERS_COMMIT
- uses: actions/upload-artifact@v7
with:
name: helios-loaders
path: ${{ runner.temp }}/helios-loaders
if-no-files-found: error
retention-days: 14
compatibility:
name: Application compatibility shims
runs-on: windows-2022
timeout-minutes: 15
steps:
- uses: actions/checkout@v7
with:
submodules: false
fetch-depth: 1
- name: Build and validate compatibility shims
shell: pwsh
run: >-
./ci/windows/Build-CompatibilityShims.ps1
-RepoRoot $env:GITHUB_WORKSPACE
-OutputDir "$env:RUNNER_TEMP/helios-compatibility"
- uses: actions/upload-artifact@v7
with:
name: helios-compatibility
path: ${{ runner.temp }}/helios-compatibility
if-no-files-found: error
retention-days: 14
package:
name: Sign and assemble installable bundle
needs: [driver, mesa, opencl, loaders, compatibility]
runs-on: windows-2022
timeout-minutes: 30
permissions:
contents: write
steps:
- uses: actions/checkout@v7
with:
submodules: false
fetch-depth: 1
- uses: actions/download-artifact@v8
with:
name: helios-driver
path: ${{ runner.temp }}/artifacts/driver
- uses: actions/download-artifact@v8
with:
name: helios-mesa
path: ${{ runner.temp }}/artifacts/mesa
- uses: actions/download-artifact@v8
with:
name: helios-opencl
path: ${{ runner.temp }}/artifacts/opencl
- uses: actions/download-artifact@v8
with:
name: helios-loaders
path: ${{ runner.temp }}/artifacts/loaders
- uses: actions/download-artifact@v8
with:
name: helios-compatibility
path: ${{ runner.temp }}/artifacts/compatibility
- name: Ensure Windows Driver Kit is installed
shell: pwsh
run: ./ci/windows/Install-WindowsDriverKit.ps1
- name: Read package metadata
id: metadata
shell: pwsh
run: |
$version = (Get-Content kmd_render/driver-version.env | Where-Object { $_ -match '^HELIOS_KMD_VERSION=' }) -replace '^HELIOS_KMD_VERSION=', ''
"version=$version" >> $env:GITHUB_OUTPUT
"mesa=$(git rev-parse HEAD:icd/mesa)" >> $env:GITHUB_OUTPUT
"dxvk=$(git rev-parse HEAD:dxvk-helios)" >> $env:GITHUB_OUTPUT
- name: Assemble and test-sign bundle
shell: pwsh
run: >-
./ci/windows/Assemble-Package.ps1
-RepoRoot $env:GITHUB_WORKSPACE
-DriverArtifact "$env:RUNNER_TEMP/artifacts/driver"
-MesaArtifact "$env:RUNNER_TEMP/artifacts/mesa"
-OpenClArtifact "$env:RUNNER_TEMP/artifacts/opencl"
-LoadersArtifact "$env:RUNNER_TEMP/artifacts/loaders"
-CompatibilityArtifact "$env:RUNNER_TEMP/artifacts/compatibility"
-OutputDir "$env:RUNNER_TEMP/helios-package"
-Version '${{ steps.metadata.outputs.version }}'
-RepositoryCommit $env:GITHUB_SHA
-MesaCommit '${{ steps.metadata.outputs.mesa }}'
-DxvkCommit '${{ steps.metadata.outputs.dxvk }}'
-ClvkCommit $env:CLVK_COMMIT
-VulkanLoaderCommit $env:VULKAN_LOADER_COMMIT
-VulkanHeadersCommit $env:VULKAN_HEADERS_COMMIT
-OpenClLoaderCommit $env:OPENCL_LOADER_COMMIT
-OpenClHeadersCommit $env:OPENCL_HEADERS_COMMIT
- uses: actions/upload-artifact@v7
with:
name: helios-windows-x64-${{ steps.metadata.outputs.version }}
path: |
${{ runner.temp }}/helios-package/*.zip
${{ runner.temp }}/helios-package/*.sha256
if-no-files-found: error
retention-days: 30
- name: Publish tagged release
if: startsWith(github.ref, 'refs/tags/v')
shell: pwsh
env:
GH_TOKEN: ${{ github.token }}
run: |
$files = Get-ChildItem "$env:RUNNER_TEMP/helios-package" -File | Where-Object { $_.Extension -in @('.zip', '.sha256') } | ForEach-Object FullName
gh release view $env:GITHUB_REF_NAME 2>$null
if ($LASTEXITCODE -eq 0) {
gh release upload $env:GITHUB_REF_NAME @files --clobber
} else {
gh release create $env:GITHUB_REF_NAME @files --generate-notes --title $env:GITHUB_REF_NAME
}