Skip to content

Commit 047a7ac

Browse files
committed
Install vulkan manually
1 parent 8baa104 commit 047a7ac

File tree

1 file changed

+63
-27
lines changed

1 file changed

+63
-27
lines changed

.github/workflows/rust.yml

Lines changed: 63 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ jobs:
1616
name: Test Rust Shaders - ${{ matrix.name }}
1717
runs-on: ${{ matrix.os }}
1818
strategy:
19+
fail-fast: false
1920
matrix:
2021
include:
2122
- os: ubuntu-latest
@@ -35,45 +36,80 @@ jobs:
3536
submodules: "recursive"
3637

3738
- name: Install Vulkan SDK
38-
uses: jakoch/install-vulkan-sdk-action@v1.0.0
39-
with:
40-
vulkan_version: 1.3.268.0
41-
optional_components: com.lunarg.vulkan.debug
42-
install_runtime: true
43-
cache: true
44-
stripdown: true
39+
if: ${{ runner.os != 'Linux' }}
40+
shell: bash
41+
env:
42+
VULKAN_SDK_VERSION: 1.3.250.1
43+
run: |
44+
if [ "$RUNNER_OS" == "macOS" ]; then
45+
wget "https://sdk.lunarg.com/sdk/download/$VULKAN_SDK_VERSION/mac/vulkansdk-macos-$VULKAN_SDK_VERSION.dmg?Human=true" -O vulkan-sdk.dmg
46+
hdiutil attach vulkan-sdk.dmg
47+
sudo /Volumes/vulkan-sdk/InstallVulkan.app/Contents/MacOS/InstallVulkan --root $GITHUB_WORKSPACE/vulkansdk-macos-$VULKAN_SDK_VERSION --accept-licenses --default-answer --confirm-command install
48+
hdiutil detach /Volumes/vulkansdk-macos-$VULKAN_SDK_VERSION
49+
echo "VULKAN_SDK_PATH=$GITHUB_WORKSPACE/vulkansdk-macos-$VULKAN_SDK_VERSION" >> $GITHUB_ENV
50+
echo "VULKAN_SDK=$VULKAN_SDK_PATH/macOS" >> $GITHUB_ENV
51+
echo "DYLD_LIBRARY_PATH=$VULKAN_SDK/lib:$DYLD_LIBRARY_PATH" >> $GITHUB_ENV
52+
echo "PATH=$VULKAN_SDK/bin:$PATH" >> $GITHUB_ENV
53+
elif [ "$RUNNER_OS" == "Windows" ]; then
54+
wget "https://sdk.lunarg.com/sdk/download/$VULKAN_SDK_VERSION/windows/VulkanSDK-$VULKAN_SDK_VERSION-Installer.exe?Human=true" -O vulkan-sdk.exe
55+
./vulkan-sdk.exe --accept-licenses --default-answer --confirm-command install
56+
echo "VULKAN_SDK=C:\\VulkanSDK\\$VULKAN_SDK_VERSION" >> $GITHUB_ENV
57+
echo "PATH=$VULKAN_SDK\\Bin;$PATH" >> $GITHUB_ENV
58+
fi
4559
4660
- if: ${{ runner.os == 'Linux' }}
47-
name: Install xvfb, llvmpipe and lavapipe
61+
name: Install Vulkan SDK and software renderers on Linux
4862
run: |
4963
sudo apt-get update -y -qq
5064
sudo add-apt-repository ppa:kisak/turtle -y
5165
sudo apt-get update
52-
sudo apt install -y xvfb libgl1-mesa-dri libxcb-xfixes0-dev mesa-vulkan-drivers
66+
sudo apt install -y xvfb libgl1-mesa-dri libxcb-xfixes0-dev mesa-vulkan-drivers vulkan-tools libvulkan-dev
5367
5468
- if: ${{ matrix.use_moltenvk == true }}
5569
name: Setup MoltenVK on macOS
5670
run: |
57-
# MoltenVK should be installed with the Vulkan SDK
58-
# Find and set the ICD path
59-
VULKAN_SDK_VERSION=$(ls -1 $HOME/VulkanSDK | head -n 1)
60-
echo "VK_ICD_FILENAMES=$HOME/VulkanSDK/$VULKAN_SDK_VERSION/macOS/share/vulkan/icd.d/MoltenVK_icd.json" >> $GITHUB_ENV
71+
echo "VK_ICD_FILENAMES=$VULKAN_SDK/share/vulkan/icd.d/MoltenVK_icd.json" >> $GITHUB_ENV
6172
62-
- if: ${{ matrix.use_swiftshader == true }}
63-
name: Install SwiftShader on macOS
73+
- name: Install SwiftShader
74+
if: ${{ matrix.use_swiftshader == true || runner.os == 'Linux' || runner.os == 'Windows' }}
75+
env:
76+
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
77+
SWIFTSHADER_LINUX_URL: https://github.com/qarmin/gtk_library_store/releases/download/3.24.0/swiftshader2.zip
78+
SWIFTSHADER_MACOS_URL: https://github.com/nikitalita/swiftshader-builds/releases/download/1.0.0/swiftshader-vulkan-r6216.7997cbc34b-macos-10.15.zip
79+
shell: bash
6480
run: |
65-
# Based on https://github.com/GDRETools/gdsdecomp/blob/master/.github/actions/install-swiftshader/action.yml
66-
git clone https://github.com/google/swiftshader.git
67-
cd swiftshader
68-
mkdir build && cd build
69-
cmake -DSWIFTSHADER_BUILD_TESTS=OFF -DSWIFTSHADER_BUILD_SAMPLES=OFF ..
70-
cmake --build . --config Release
71-
sudo mkdir -p /usr/local/share/vulkan/icd.d
72-
sudo cp Darwin/vk_swiftshader_icd.json /usr/local/share/vulkan/icd.d/
73-
sudo mkdir -p /usr/local/lib
74-
sudo cp Darwin/libvk_swiftshader.dylib /usr/local/lib/
75-
# Set environment variable for SwiftShader ICD
76-
echo "VK_ICD_FILENAMES=/usr/local/share/vulkan/icd.d/vk_swiftshader_icd.json" >> $GITHUB_ENV
81+
export SWIFTSHADER_DEST_DIR='${{ github.workspace }}/swiftshader'
82+
mkdir -p $SWIFTSHADER_DEST_DIR
83+
if [ "$RUNNER_OS" == "Linux" ]; then
84+
wget ${{ env.SWIFTSHADER_LINUX_URL }} -O swiftshader.zip
85+
unzip swiftshader.zip -d $SWIFTSHADER_DEST_DIR
86+
rm swiftshader.zip
87+
SWIFTSHADER_LIB_NAME="./libvk_swiftshader.so"
88+
sed -i "s|PATH_TO_CHANGE|$SWIFTSHADER_LIB_NAME|" $SWIFTSHADER_DEST_DIR/vk_swiftshader_icd.json
89+
echo "VK_ICD_FILENAMES=$SWIFTSHADER_DEST_DIR/vk_swiftshader_icd.json" >> $GITHUB_ENV
90+
elif [ "$RUNNER_OS" == "macOS" ]; then
91+
wget ${{ env.SWIFTSHADER_MACOS_URL }} -O swiftshader.zip
92+
unzip swiftshader.zip -d temp-ss-dl/
93+
rm swiftshader.zip
94+
mv temp-ss-dl/lib/libvk_swiftshader.dylib $SWIFTSHADER_DEST_DIR/libvk_swiftshader.dylib
95+
mv temp-ss-dl/share/vulkan/icd.d/vk_swiftshader_icd.json $SWIFTSHADER_DEST_DIR/vk_swiftshader_icd.json
96+
rm -rf temp-ss-dl/
97+
sed -i '' "s/..\/..\/..\/lib\/libvk_swiftshader.dylib/.\/libvk_swiftshader.dylib/" "$SWIFTSHADER_DEST_DIR/vk_swiftshader_icd.json"
98+
echo "VK_ICD_FILENAMES=$SWIFTSHADER_DEST_DIR/vk_swiftshader_icd.json" >> $GITHUB_ENV
99+
elif [ "$RUNNER_OS" == "Windows" ]; then
100+
choco install --yes 7zip wget
101+
wget -O swiftshader.zip ${{env.SWIFTSHADER_WINDOWS_URL}}
102+
7z x swiftshader.zip -otemp-ss-dl/
103+
rm swiftshader.zip
104+
mv temp-ss-dl/swiftshader-*/swiftshader-*.7z temp-ss-dl/swiftshader.7z
105+
7z x temp-ss-dl/swiftshader.7z -otemp-ss-dl/swiftshader
106+
rm temp-ss-dl/swiftshader.7z
107+
mv temp-ss-dl/swiftshader/x64/bin/vk_swiftshader.dll $SWIFTSHADER_DEST_DIR/vk_swiftshader.dll
108+
mv temp-ss-dl/swiftshader/x64/bin/vulkan-1.dll $SWIFTSHADER_DEST_DIR/vulkan-1.dll
109+
mv temp-ss-dl/swiftshader/x64/bin/vk_swiftshader_icd.json $SWIFTSHADER_DEST_DIR/vk_swiftshader_icd.json
110+
rm -rf temp-ss-dl/
111+
echo "VK_ICD_FILENAMES=$SWIFTSHADER_DEST_DIR\vk_swiftshader_icd.json" >> $GITHUB_ENV
112+
fi
77113
78114
- name: Install Rust
79115
uses: dtolnay/rust-toolchain@stable

0 commit comments

Comments
 (0)