diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index f99a7a8cd8..f239b3b705 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -108,16 +108,27 @@ jobs: uses: actions/setup-python@v5 with: python-version: '3.x' - - name: Install python prereqs - run: pip install mako setuptools pyyaml - - name: Run script + - name: Cache Mesa and deps + id: mesa-cache + uses: actions/cache@v4 # Use a specific version + with: + path: | + $HOME/Library/Caches/Homebrew + mesa + key: ${{ runner.os }}-mesa-deps-${{ vars.MESA_VERSION }} + - name: Get Mesa + id: mesa-prereq + env: + MESA_VERSION: ${{ vars.MESA_VERSION }} run: | - echo "disabled test" -# bash test/renderdiff/test.sh -# - uses: actions/upload-artifact@v4 -# with: -# name: presubmit-renderdiff-result -# path: ./out/renderdiff_tests + bash test/utils/get_mesa.sh + - name: Run Test + run: | + bash test/renderdiff/test.sh + - uses: actions/upload-artifact@v4 + with: + name: presubmit-renderdiff-result + path: ./out/renderdiff_tests validate-wgsl-webgpu: name: validate-wgsl-webgpu diff --git a/test/renderdiff/test.sh b/test/renderdiff/test.sh index ea8c6399ac..354cdf6236 100755 --- a/test/renderdiff/test.sh +++ b/test/renderdiff/test.sh @@ -41,10 +41,10 @@ function prepare_mesa() { # - Run the python script that runs the test # - Zip up the result -set -e && set -x && prepare_mesa && \ +set -ex && prepare_mesa && \ mkdir -p ${OUTPUT_DIR} && \ - ./build.sh -X ${MESA_DIR} -p desktop debug gltf_viewer && \ - python3 ${RENDERDIFF_TEST_DIR}/src/run.py \ + CXX=`which clang++` CC=`which clang` ./build.sh -X ${MESA_DIR} -p desktop debug gltf_viewer && \ + python3 ${RENDERDIFF_TEST_DIR}/src/run.py \ --gltf_viewer="$(pwd)/out/cmake-debug/samples/gltf_viewer" \ --test=${RENDERDIFF_TEST_DIR}/tests/presubmit.json \ --output_dir=${OUTPUT_DIR} \ diff --git a/test/utils/get_mesa.sh b/test/utils/get_mesa.sh index d44d0b7103..ab2510b85e 100755 --- a/test/utils/get_mesa.sh +++ b/test/utils/get_mesa.sh @@ -14,13 +14,34 @@ #!/usr/bin/bash -set -xe +set -x +if [[ "$GITHUB_WORKFLOW" ]]; then + set -e +fi -# GITHUB_CLANG_VERSION is set in build/linux/ci-common.sh os_name=$(uname -s) LLVM_VERSION=16 -MESA_DIR=$(pwd)/mesa +MESA_VERSION=${MESA_VERSION-24.2.1} +ORIG_DIR=$(pwd) +MESA_DIR=${MESA_DIR-${ORIG_DIR}/mesa} +if [[ "$os_name" == "Linux" ]]; then + sudo apt install python3-venv +fi + +# Install python deps +python3 -m venv ${ORIG_DIR}/venv +source ${ORIG_DIR}/venv/bin/activate + +NEEDED_PYTHON_DEPS=("mako" "setuptools" "pyyaml") +for cmd in "${NEEDED_PYTHON_DEPS[@]}"; do + if ! python3 -m pip show "${cmd}" >/dev/null 2>&1; then + python3 -m pip install ${cmd} + fi +done +deactivate + +# Install system deps if [[ "$os_name" == "Linux" ]]; then if [[ "$GITHUB_WORKFLOW" ]]; then # We only want to do this if it is a CI machine. @@ -44,12 +65,16 @@ if [[ "$os_name" == "Linux" ]]; then set -e CURRENT_CLANG_VERSION=$(clang --version | head -n 1 | awk '{ print $4 }' | awk 'BEGIN { FS="\\." } { print $1 }') GITHUB_CLANG_VERSION=${GITHUB_CLANG_VERSION:-${CURRENT_CLANG_VERSION}} + GITHUB_CLANG_VERSION=${GITHUB_CLANG_VERSION:-${LLVM_VERSION}} sudo apt-get -y install clang-${GITHUB_CLANG_VERSION} \ libc++-${GITHUB_CLANG_VERSION}-dev \ libc++abi-${GITHUB_CLANG_VERSION}-dev \ llvm-${LLVM_VERSION} \ llvm-${LLVM_VERSION}-{dev,tools,runtime} - fi # [[ "$GITHUB_WORKFLOW" ]] + ! command -v clang > /dev/null 2>&1 && \ + sudo ln -s /usr/bin/clang-${GITHUB_CLANG_VERSION} /usr/bin/clang && \ + sudo ln -s /usr/bin/clang++-${GITHUB_CLANG_VERSION} /usr/bin/clang++ + fi # [[ "$GITHUB_WORKFLOW" ]] elif [[ "$os_name" == "Darwin" ]]; then if [[ ! "$GITHUB_WORKFLOW" ]]; then if [ ! command -v brew > /dev/null 2>&1 ]; then @@ -57,14 +82,7 @@ elif [[ "$os_name" == "Darwin" ]]; then exit 1 fi fi - brew install autoconf automake libx11 libxext libxrandr llvm@${LLVM_VERSION} ninja meson pkg-config libxshmfence - - NEEDED_PYTHON_DEPS=("mako" "setuptools") - for cmd in "${NEEDED_PYTHON_DEPS[@]}"; do - if ! pip3 show "${cmd}" >/dev/null 2>&1; then - sudo pip3 install ${cmd} - fi - done + HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=true brew install autoconf automake libx11 libxext libxrandr llvm@${LLVM_VERSION} ninja meson pkg-config libxshmfence fi # [[ "$os_name" == x ]] LOCAL_LDFLAGS=${LDFLAGS} @@ -88,10 +106,8 @@ fi if [[ "$CHECKOUT_MESA" = "true" ]]; then rm -rf ${MESA_DIR} - #git clone https://gitlab.freedesktop.org/mesa/mesa.git - git clone git://anongit.freedesktop.org/mesa/mesa - # Due to gitlab mesa outage. - if [[ "${MESA_DIR}" != "$(pwd)/mesa" ]]; then + git clone https://gitlab.freedesktop.org/mesa/mesa.git + if [[ "${MESA_DIR}" != "${ORIG_DIR}/mesa" ]]; then mv mesa ${MESA_DIR} fi fi @@ -100,10 +116,12 @@ pushd . cd ${MESA_DIR} # Need >= 24 to have llvmpipe for swrast. llvmpipe is needed for GL >= 4.1. -git checkout mesa-24.2.1 +git checkout mesa-${MESA_VERSION} mkdir -p out +source ${ORIG_DIR}/venv/bin/activate + if [[ "$os_name" == "Darwin" ]]; then LOCAL_LDFLAGS="-L/opt/homebrew/opt/llvm@${LLVM_VERSION}/lib" LOCAL_CPPFLAGS="-I/opt/homebrew/opt/llvm@${LLVM_VERSION}/include -I/opt/homebrew/include" @@ -118,8 +136,16 @@ fi # -Dvulkan-drivers=swrast => builds VK software rasterizer # -Dgallium-drivers=llvmpipe is needed for GL >= 4.1 pipe-screen (see src/gallium/auxiliary/target-helpers/inline_sw_helper.h) CXX=${LOCAL_CXX} CC=${LOCAL_CC} PATH=${LOCAL_PATH} LDFLAGS=${LOCAL_LDFLAGS} CPPFLAGS=${LOCAL_CPPFLAGS} \ - meson setup --wipe builddir/ -Dprefix="$(pwd)/out" -Dglx=xlib -Dosmesa=true -Dgallium-drivers=llvmpipe,swrast -Dvulkan-drivers=swrast + meson setup --wipe builddir/ -Dprefix="${MESA_DIR}/out" -Dglx=xlib -Dosmesa=true -Dgallium-drivers=llvmpipe,swrast -Dvulkan-drivers=swrast CXX=${LOCAL_CXX} CC=${LOCAL_CC} PATH=${LOCAL_PATH} LDFLAGS=${LOCAL_LDFLAGS} CPPFLAGS=${LOCAL_CPPFLAGS} \ meson install -C builddir/ +# Disable python venv +deactivate + popd + +if [[ "$GITHUB_WORKFLOW" ]]; then + set +e +fi +set +x