Skip to content

Commit a5010de

Browse files
committed
Set up Vulkan SDK for VGF wheel builds
Signed-off-by: Rob Elliott <Robert.Elliott@arm.com> Change-Id: I5680de25e7a004ac6883bd4f855baee1bf6b4874
1 parent cca8b86 commit a5010de

3 files changed

Lines changed: 92 additions & 2 deletions

File tree

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#!/bin/bash
2+
# Copyright (c) Meta Platforms, Inc. and affiliates.
3+
# All rights reserved.
4+
#
5+
# Copyright 2026 Arm Limited and/or its affiliates.
6+
#
7+
# This source code is licensed under the BSD-style license found in the
8+
# LICENSE file in the root directory of this source tree.
9+
10+
set -ex
11+
12+
install_vulkan_sdk() {
13+
VULKAN_SDK_VERSION=$1
14+
_vulkan_sdk_url="https://sdk.lunarg.com/sdk/download/${VULKAN_SDK_VERSION}/mac/vulkansdk-macos-${VULKAN_SDK_VERSION}.zip"
15+
_vulkan_sdk_dir=/tmp/vulkansdk
16+
_vulkan_sdk_extract_dir=/tmp/vulkansdk-installer
17+
18+
mkdir -p "${_vulkan_sdk_dir}"
19+
rm -rf "${_vulkan_sdk_extract_dir}"
20+
mkdir -p "${_vulkan_sdk_extract_dir}"
21+
22+
_tmp_archive="/tmp/vulkansdk-macos.zip"
23+
24+
curl --silent --show-error --location --fail --retry 3 \
25+
--output "${_tmp_archive}" "${_vulkan_sdk_url}"
26+
27+
unzip -q -o "${_tmp_archive}" -d "${_vulkan_sdk_extract_dir}"
28+
29+
_vulkan_sdk_app_path="$(
30+
find "${_vulkan_sdk_extract_dir}" -maxdepth 3 -type d \
31+
\( -name "vulkansdk-macOS-${VULKAN_SDK_VERSION}.app" \
32+
-o -name "vulkansdk-macos-${VULKAN_SDK_VERSION}.app" \) \
33+
-print -quit
34+
)"
35+
if [[ -z "${_vulkan_sdk_app_path}" ]]; then
36+
echo "Failed to find Vulkan SDK installer app"
37+
exit 1
38+
fi
39+
_vulkan_sdk_installer="${_vulkan_sdk_app_path}/Contents/MacOS/$(basename "${_vulkan_sdk_app_path}" .app)"
40+
if [[ ! -x "${_vulkan_sdk_installer}" ]]; then
41+
echo "Failed to find Vulkan SDK installer binary at ${_vulkan_sdk_installer}"
42+
exit 1
43+
fi
44+
45+
"${_vulkan_sdk_installer}" \
46+
--root "${_vulkan_sdk_dir}/${VULKAN_SDK_VERSION}" \
47+
--accept-licenses \
48+
--default-answer \
49+
--confirm-command install
50+
51+
export PATH="${PATH}:${_vulkan_sdk_dir}/${VULKAN_SDK_VERSION}/macOS/bin/"
52+
export VULKAN_SDK="${_vulkan_sdk_dir}/${VULKAN_SDK_VERSION}/macOS"
53+
export DYLD_LIBRARY_PATH="${_vulkan_sdk_dir}/${VULKAN_SDK_VERSION}/macOS/lib${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}}"
54+
55+
_moltenvk_icd="${VULKAN_SDK}/share/vulkan/icd.d/MoltenVK_icd.json"
56+
if [[ -f "${_moltenvk_icd}" ]]; then
57+
export VK_DRIVER_FILES="${_moltenvk_icd}"
58+
fi
59+
}
60+
61+
VULKAN_SDK_VERSION="1.4.321.0"
62+
63+
install_vulkan_sdk "${VULKAN_SDK_VERSION}"

.ci/scripts/wheel/pre_build_script.sh

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
# Copyright (c) Meta Platforms, Inc. and affiliates.
33
# All rights reserved.
44
#
5+
# Copyright 2026 Arm Limited and/or its affiliates.
6+
#
57
# This source code is licensed under the BSD-style license found in the
68
# LICENSE file in the root directory of this source tree.
79

@@ -57,13 +59,37 @@ fi
5759

5860
"${GITHUB_WORKSPACE}/${REPOSITORY}/install_requirements.sh" --example
5961

62+
setup_vulkan_for_vgf() {
63+
if [[ "$UNAME_S" == "Linux" && "$(uname -m)" == "x86_64" ]]; then
64+
source "${GITHUB_WORKSPACE}/${REPOSITORY}/.ci/scripts/setup-vulkan-linux-deps.sh"
65+
elif [[ "$UNAME_S" == "Darwin" ]]; then
66+
source "${GITHUB_WORKSPACE}/${REPOSITORY}/.ci/scripts/setup-vulkan-macos-deps.sh"
67+
fi
68+
69+
if ! command -v glslc >/dev/null 2>&1; then
70+
return 1
71+
fi
72+
73+
for _var in PATH VULKAN_SDK LD_LIBRARY_PATH DYLD_LIBRARY_PATH VK_ICD_FILENAMES VK_DRIVER_FILES ETVK_USING_SWIFTSHADER; do
74+
if [[ -n "${!_var:-}" ]]; then
75+
echo "${_var}=${!_var}" >> "${GITHUB_ENV}"
76+
fi
77+
done
78+
79+
return 0
80+
}
81+
6082
# Enable VGF in pybind wheel builds when the platform-specific build input is
6183
# available from pip.
6284
if [[ "$UNAME_S" == "Linux" || "$UNAME_S" == "Darwin" ]]; then
6385
if python3 -m pip install -r \
6486
"${GITHUB_WORKSPACE}/${REPOSITORY}/backends/arm/requirements-arm-vgf-runtime.txt"; then
65-
export EXECUTORCH_PYBIND_ENABLE_VGF=ON
66-
echo "EXECUTORCH_PYBIND_ENABLE_VGF=ON" >> "${GITHUB_ENV}"
87+
if setup_vulkan_for_vgf; then
88+
export EXECUTORCH_PYBIND_ENABLE_VGF=ON
89+
echo "EXECUTORCH_PYBIND_ENABLE_VGF=ON" >> "${GITHUB_ENV}"
90+
else
91+
echo "glslc unavailable after VGF build dependency install; building without VGF"
92+
fi
6793
else
6894
echo "VGF build dependency unavailable on this platform; building without VGF"
6995
fi

tools/cmake/preset/pybind.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# Copyright (c) Meta Platforms, Inc. and affiliates.
22
# All rights reserved.
3+
# Copyright 2026 Arm Limited and/or its affiliates.
34
#
45
# This source code is licensed under the BSD-style license found in the
56
# LICENSE file in the root directory of this source tree.

0 commit comments

Comments
 (0)