diff --git a/.github/workflows/test-audience-sample-app.yml b/.github/workflows/test-audience-sample-app.yml index 1e0be9918..9b1939bd8 100644 --- a/.github/workflows/test-audience-sample-app.yml +++ b/.github/workflows/test-audience-sample-app.yml @@ -509,6 +509,22 @@ jobs: exit 1 fi + # Install Mesa software Vulkan (lavapipe) and vulkan-tools. + # The unityci/editor image is Debian-based; apt-get works as + # root inside the container. + echo "::group::install lavapipe" + apt-get update + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + mesa-vulkan-drivers vulkan-tools + echo "::endgroup::" + + # Force lavapipe selection if multiple Vulkan ICDs are present. + # MESA_VK_DEVICE_SELECT=lvp picks the LLVM-pipe Vulkan device. + export MESA_VK_DEVICE_SELECT=lvp + + # Capture the Vulkan device list for post-run inspection. + vulkaninfo --summary > /github/workspace/artifacts/vulkaninfo.txt 2>&1 || true + # xvfb-run gives Unity a virtual X display so PlayMode tests # that load scenes and exercise UI Toolkit can actually launch # the player. GLX + render are required for UIElements; the @@ -547,15 +563,13 @@ jobs: # only on UI Toolkit log-row presence (queried via the # VisualElement tree, not via screen capture). # - # Why -force-glcore: Unity 6 prefers Vulkan on Linux and - # falls back to OpenGL when Vulkan init fails. Each frame - # carries the negotiation overhead. -force-glcore tells the - # player to skip Vulkan entirely and open a GLX context - # directly, the same path Unity 2021.3 takes by default. + # Vulkan via lavapipe is the experiment. We do not pass + # -force-glcore here so Unity 6 picks its native Vulkan + # path. Unity 2021.3 and 2022.3 still default to OpenGL on + # Linux; for them this is a no-op. xvfb-run -a --server-args="-screen 0 320x240x24 -ac +extension GLX +render -noreset" -- \ unity-editor \ -batchmode \ - -force-glcore \ -screen-fullscreen 0 \ -screen-width 320 \ -screen-height 240 \ @@ -729,6 +743,7 @@ jobs: path: | artifacts/playmode-results.xml artifacts/playmode.log + artifacts/vulkaninfo.txt artifacts/activation.log artifacts/Player-*.log examples/audience/Logs/**