forked from SaschaWillems/Vulkan
-
Notifications
You must be signed in to change notification settings - Fork 0
177 lines (160 loc) · 7.83 KB
/
Copy pathrust.yml
File metadata and controls
177 lines (160 loc) · 7.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
name: Rust CI
on:
push:
branches:
- master
pull_request:
branches:
- master
env:
CARGO_TERM_COLOR: always
jobs:
test:
name: Test Rust Shaders - ${{ matrix.name }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
name: Ubuntu
- os: windows-latest
name: Windows
- os: macos-latest
name: macOS-MoltenVK
use_moltenvk: true
- os: macos-latest
name: macOS-SwiftShader
use_swiftshader: true
steps:
- uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Install Vulkan SDK
if: ${{ runner.os != 'Linux' }}
shell: bash
env:
VULKAN_SDK_VERSION: 1.3.250.1
run: |
if [ "$RUNNER_OS" == "macOS" ]; then
wget "https://sdk.lunarg.com/sdk/download/$VULKAN_SDK_VERSION/mac/vulkansdk-macos-$VULKAN_SDK_VERSION.dmg?Human=true" -O vulkan-sdk.dmg
hdiutil attach vulkan-sdk.dmg
# The volume is mounted as /Volumes/VulkanSDK
sudo /Volumes/VulkanSDK/InstallVulkan.app/Contents/MacOS/InstallVulkan --root $GITHUB_WORKSPACE/vulkansdk-macos-$VULKAN_SDK_VERSION --accept-licenses --default-answer --confirm-command install
hdiutil detach /Volumes/VulkanSDK
echo "VULKAN_SDK_PATH=$GITHUB_WORKSPACE/vulkansdk-macos-$VULKAN_SDK_VERSION" >> $GITHUB_ENV
echo "VULKAN_SDK=$GITHUB_WORKSPACE/vulkansdk-macos-$VULKAN_SDK_VERSION/macOS" >> $GITHUB_ENV
echo "DYLD_LIBRARY_PATH=$GITHUB_WORKSPACE/vulkansdk-macos-$VULKAN_SDK_VERSION/macOS/lib:$DYLD_LIBRARY_PATH" >> $GITHUB_ENV
echo "PATH=$GITHUB_WORKSPACE/vulkansdk-macos-$VULKAN_SDK_VERSION/macOS/bin:$PATH" >> $GITHUB_ENV
elif [ "$RUNNER_OS" == "Windows" ]; then
curl -L "https://sdk.lunarg.com/sdk/download/$VULKAN_SDK_VERSION/windows/VulkanSDK-$VULKAN_SDK_VERSION-Installer.exe?Human=true" -o vulkan-sdk.exe
./vulkan-sdk.exe --accept-licenses --default-answer --confirm-command install
echo "VULKAN_SDK=C:\\VulkanSDK\\$VULKAN_SDK_VERSION" >> $GITHUB_ENV
echo "PATH=$VULKAN_SDK\\Bin;$PATH" >> $GITHUB_ENV
fi
- if: ${{ runner.os == 'Linux' }}
name: Install Vulkan SDK and software renderers on Linux
run: |
sudo apt-get update -y -qq
sudo add-apt-repository ppa:kisak/turtle -y
sudo apt-get update
sudo apt install -y xvfb libgl1-mesa-dri libxcb-xfixes0-dev mesa-vulkan-drivers vulkan-tools libvulkan-dev
- if: ${{ matrix.use_moltenvk == true }}
name: Setup MoltenVK on macOS
run: |
echo "VK_ICD_FILENAMES=$GITHUB_WORKSPACE/vulkansdk-macos-1.3.250.1/macOS/share/vulkan/icd.d/MoltenVK_icd.json" >> $GITHUB_ENV
- name: Install SwiftShader
if: ${{ matrix.use_swiftshader == true || runner.os == 'Linux' || runner.os == 'Windows' }}
env:
SWIFTSHADER_WINDOWS_URL: https://github.com/nikitalita/swiftshader-dist-win/releases/download/2021-12-09_00-02/swiftshader-2021-12-09_00-02-subzero.7z.zip
SWIFTSHADER_LINUX_URL: https://github.com/qarmin/gtk_library_store/releases/download/3.24.0/swiftshader2.zip
SWIFTSHADER_MACOS_URL: https://github.com/nikitalita/swiftshader-builds/releases/download/1.0.0/swiftshader-vulkan-r6216.7997cbc34b-macos-10.15.zip
shell: bash
run: |
export SWIFTSHADER_DEST_DIR='${{ github.workspace }}/swiftshader'
mkdir -p $SWIFTSHADER_DEST_DIR
if [ "$RUNNER_OS" == "Linux" ]; then
wget ${{ env.SWIFTSHADER_LINUX_URL }} -O swiftshader.zip
unzip swiftshader.zip -d $SWIFTSHADER_DEST_DIR
rm swiftshader.zip
SWIFTSHADER_LIB_NAME="./libvk_swiftshader.so"
sed -i "s|PATH_TO_CHANGE|$SWIFTSHADER_LIB_NAME|" $SWIFTSHADER_DEST_DIR/vk_swiftshader_icd.json
echo "VK_ICD_FILENAMES=$SWIFTSHADER_DEST_DIR/vk_swiftshader_icd.json" >> $GITHUB_ENV
elif [ "$RUNNER_OS" == "macOS" ]; then
wget ${{ env.SWIFTSHADER_MACOS_URL }} -O swiftshader.zip
unzip swiftshader.zip -d temp-ss-dl/
rm swiftshader.zip
mv temp-ss-dl/lib/libvk_swiftshader.dylib $SWIFTSHADER_DEST_DIR/libvk_swiftshader.dylib
mv temp-ss-dl/share/vulkan/icd.d/vk_swiftshader_icd.json $SWIFTSHADER_DEST_DIR/vk_swiftshader_icd.json
rm -rf temp-ss-dl/
sed -i '' "s/..\/..\/..\/lib\/libvk_swiftshader.dylib/.\/libvk_swiftshader.dylib/" "$SWIFTSHADER_DEST_DIR/vk_swiftshader_icd.json"
echo "VK_ICD_FILENAMES=$SWIFTSHADER_DEST_DIR/vk_swiftshader_icd.json" >> $GITHUB_ENV
elif [ "$RUNNER_OS" == "Windows" ]; then
choco install --yes 7zip
curl -L ${{env.SWIFTSHADER_WINDOWS_URL}} -o swiftshader.zip
7z x swiftshader.zip -otemp-ss-dl/
rm swiftshader.zip
mv temp-ss-dl/swiftshader-*/swiftshader-*.7z temp-ss-dl/swiftshader.7z
7z x temp-ss-dl/swiftshader.7z -otemp-ss-dl/swiftshader
rm temp-ss-dl/swiftshader.7z
mv temp-ss-dl/swiftshader/x64/bin/vk_swiftshader.dll $SWIFTSHADER_DEST_DIR/vk_swiftshader.dll
mv temp-ss-dl/swiftshader/x64/bin/vulkan-1.dll $SWIFTSHADER_DEST_DIR/vulkan-1.dll
mv temp-ss-dl/swiftshader/x64/bin/vk_swiftshader_icd.json $SWIFTSHADER_DEST_DIR/vk_swiftshader_icd.json
rm -rf temp-ss-dl/
echo "VK_ICD_FILENAMES=$SWIFTSHADER_DEST_DIR\vk_swiftshader_icd.json" >> $GITHUB_ENV
fi
- name: Install Rust via rustup
shell: bash
run: |
# Install rustup if not already installed
if ! command -v rustup &> /dev/null; then
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal
source "$HOME/.cargo/env"
fi
# Install stable toolchain with required components
rustup toolchain install stable
rustup component add rust-src rustc-dev llvm-tools --toolchain stable
rustup default stable
- name: Install cargo-gpu
shell: bash
run: |
# Ensure cargo is in PATH
source "$HOME/.cargo/env" || true
# Set non-interactive mode to avoid raw mode issues in CI
export CARGO_TERM_COLOR=never
export CI=true
cargo install --git https://github.com/rust-gpu/cargo-gpu cargo-gpu
- name: Cache cargo registry
uses: actions/cache@v3
with:
path: |
~/.cargo/registry
~/.cargo/git
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Compile shaders to SPIR-V
working-directory: shaders/rust
shell: bash
run: |
# Ensure cargo is in PATH
source "$HOME/.cargo/env" || true
# Set non-interactive mode for cargo-gpu
export CARGO_TERM_COLOR=never
export CI=true
python3 compileshaders.py
- name: Verify no uncommitted changes
shell: bash
run: |
# Check if there are any changes to tracked files
if ! git diff --exit-code; then
echo "Error: Generated SPIR-V files differ from checked-in versions"
echo "Please run 'python3 compileshaders.py' locally and commit the changes"
git diff --name-only
exit 1
fi
# Check for untracked files
if [ -n "$(git ls-files --others --exclude-standard)" ]; then
echo "Error: New untracked files were generated"
echo "Please add these files to git or update .gitignore:"
git ls-files --others --exclude-standard
exit 1
fi