From 1f029fd69bcd47f4b2c6ccdb0914399a292d5fea Mon Sep 17 00:00:00 2001 From: Robear Selwans Date: Wed, 6 May 2026 01:52:35 +0300 Subject: [PATCH] Replaced apt packages with LunarG's Vulkan SDK --- Dockerfile | 47 ++++++++++++++++++++++------------------------- README.md | 5 +++-- 2 files changed, 25 insertions(+), 27 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4deb097..1c1773a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,7 +11,6 @@ FROM ${BASE_IMAGE} ARG LLVM_VERSION=22 ARG MESON_VERSION=latest -ARG USE_LUNARG_VULKAN=false ARG LUNARG_SDK_VERSION=1.4.309.0 ENV DEBIAN_FRONTEND=noninteractive @@ -21,10 +20,14 @@ ENV AR=llvm-ar ENV RANLIB=llvm-ranlib ENV NM=llvm-nm ENV STRIP=llvm-strip +ENV VULKAN_SDK=/opt/vulkan-sdk/current/x86_64 +ENV PATH="${VULKAN_SDK}/bin:${PATH}" +ENV LD_LIBRARY_PATH="${VULKAN_SDK}/lib:${LD_LIBRARY_PATH}" +ENV PKG_CONFIG_PATH="${VULKAN_SDK}/lib/pkgconfig:${PKG_CONFIG_PATH}" SHELL ["/bin/bash", "-o", "pipefail", "-c"] -# Base compiler/build/Python/Vulkan packages from Ubuntu. +# Base compiler/build/Python packages from Ubuntu. RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ set -eux; \ apt-get update; \ @@ -50,15 +53,7 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ ninja-build \ cmake \ gcovr \ - valgrind \ - libvulkan-dev \ - libshaderc-dev \ - vulkan-tools \ - vulkan-validationlayers \ - mesa-vulkan-drivers \ - glslang-tools \ - spirv-tools \ - spirv-headers; \ + valgrind; \ rm -rf /var/lib/apt/lists/* # LLVM/Clang from apt.llvm.org. @@ -82,20 +77,19 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ "llvm-${LLVM_VERSION}-tools"; \ rm -rf /var/lib/apt/lists/* -# Optional LunarG Vulkan SDK repo. Disabled by default because Ubuntu distro -# Vulkan packages are more stable for CI and usually enough for building/testing. -RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ +# LunarG Vulkan SDK from the official tarball. +RUN --mount=type=cache,target=/root/.cache/vulkan-sdk \ set -eux; \ - if [ "${USE_LUNARG_VULKAN}" = "true" ]; then \ - codename="$(. /etc/os-release && echo "${VERSION_CODENAME}")"; \ - curl -fsSL https://packages.lunarg.com/lunarg-signing-key-pub.asc \ - | gpg --dearmor -o /usr/share/keyrings/lunarg.gpg; \ - echo "deb [signed-by=/usr/share/keyrings/lunarg.gpg] https://packages.lunarg.com/vulkan/${LUNARG_SDK_VERSION}/ubuntu ${codename} main" \ - > /etc/apt/sources.list.d/lunarg-vulkan-sdk.list; \ - apt-get update; \ - apt-get install -y --no-install-recommends vulkan-sdk; \ - rm -rf /var/lib/apt/lists/*; \ - fi + sdk_archive="/root/.cache/vulkan-sdk/vulkansdk-linux-x86_64-${LUNARG_SDK_VERSION}.tar.xz"; \ + if [ ! -f "${sdk_archive}" ]; then \ + curl -fL "https://sdk.lunarg.com/sdk/download/${LUNARG_SDK_VERSION}/linux/vulkansdk-linux-x86_64-${LUNARG_SDK_VERSION}.tar.xz" \ + -o "${sdk_archive}"; \ + fi; \ + mkdir -p /opt/vulkan-sdk; \ + tar -xJf "${sdk_archive}" -C /opt/vulkan-sdk; \ + ln -sfn "/opt/vulkan-sdk/${LUNARG_SDK_VERSION}" /opt/vulkan-sdk/current; \ + echo "${VULKAN_SDK}/lib" > /etc/ld.so.conf.d/vulkan-sdk.conf; \ + ldconfig # Make LLVM_VERSION the default clang toolchain. RUN set -eux; \ @@ -127,6 +121,9 @@ RUN set -eux; \ clang --version; \ clang++ --version; \ meson --version; \ - ninja --version + ninja --version; \ + glslangValidator --version; \ + spirv-val --version; \ + pkg-config --modversion vulkan CMD ["bash"] diff --git a/README.md b/README.md index 00192fd..379c2e2 100644 --- a/README.md +++ b/README.md @@ -24,8 +24,7 @@ Included tools: - Meson - Ninja - Python 3 / pip / venv -- Vulkan headers/tools -- Mesa Vulkan drivers +- LunarG Vulkan SDK headers/tools - `build-essential` - `pkg-config` - Git @@ -34,6 +33,8 @@ Included tools: ```bash docker build -t evol-testbed:latest . +# Optional: choose a different LunarG Vulkan SDK version +# docker build --build-arg LUNARG_SDK_VERSION=1.4.309.0 -t evol-testbed:latest . ``` Test locally: