ci(audience): Linux PlayMode under xvfb (SDK-317 / SDK-318)#765
Draft
ImmutableJeffrey wants to merge 1 commit intochore/sdk-317-audience-linux-platform-supportfrom
Draft
Conversation
ImmutableJeffrey
added a commit
that referenced
this pull request
May 9, 2026
Commit e7718f6 added a comment block above the xvfb-run line that contained 'xvfb's own screen size'. The apostrophe terminated the outer bash -c '...' single-quoted heredoc, the rest of the inner script became outer-shell tokens, and every Linux PlayMode cell on PR #765 exited 1 right after license activation (cell time 90 seconds). Rewords the comment without the apostrophe. No semantic change to the docker invocation or the Unity command line.
4 tasks
ImmutableJeffrey
added a commit
that referenced
this pull request
May 9, 2026
…SampleApp Drops 30 of 39 manifest.json entries that the SampleApp does not use. Verified by grepping the SampleApp source, the SampleApp scene, and the Audience SDK runtime for any reference to each removed module or package. Removed packages: - com.unity.textmeshpro: no TMP_Text or TMPro references - com.unity.timeline: no PlayableDirector or TimelineAsset references - com.unity.ugui: SampleApp uses UI Toolkit, no Canvas references - com.unity.visualscripting: no ScriptMachine or graph references Removed engine modules: - ai, animation, assetbundle, cloth, director, imageconversion, particlesystem, physics, physics2d, screencapture, terrain, terrainphysics, tilemap, ui, umbra, unityanalytics, vehicles, video, vr, wind, xr: no runtime references in SampleApp or audience SDK - unitywebrequestassetbundle, unitywebrequestaudio, unitywebrequesttexture, unitywebrequestwww: SDK uses System.Net.Http.HttpClient, not UnityWebRequest variants Kept (verified used or required): - com.immutable.audience: the SDK - com.unity.test-framework: test runner - com.unity.modules.androidjni: Android plugin compatibility - com.unity.modules.audio: AudioListener present in SampleApp scene - com.unity.modules.imgui: test runner overlay - com.unity.modules.jsonserialize: defensive - com.unity.modules.uielements: UI Toolkit, primary UI surface - com.unity.modules.unitywebrequest: defensive (test framework) Expected impact: - Smaller IL2CPP and Mono player binaries. - Faster IL2CPP compile and Bee/Tundra build phases on every cell. - Faster project init (less to load, fewer InitializeOnLoad hooks). - Per-frame UI Toolkit cost on llvmpipe is unchanged; that is targeted separately by PR #765's log-pane suppression. Risk: a build link error on a platform that needs a removed module shows immediately in CI; revert is one-line.
153b0f8 to
cf5e5d9
Compare
5 tasks
- Adds playmode-linux job using docker + xvfb. game-ci/unity-test-runner@v4 hardcodes -nographics, so PlayMode tests came back inconclusive and silently passed. - Watchdog SIGTERMs Unity 30s after "Test run completed" so cells exit on suite finish; handles Unity 6's known shutdown hang. - Replaces cartesian + partial-include matrix with explicit per-cell entries; partial includes failed to merge the runner column and spawned zero tests. - Forces StandaloneLinux64 to OpenGLCore-only at build to skip Vulkan shader variants and runtime negotiation. - Suppresses in-app log pane on Unity 6 Linux to skip llvmpipe rasterising UI Toolkit triangles per frame. - Stamps CI provenance into Player.log on player startup; gated to CI runs only. - Mirrors SDK output and OnError fires to Debug.Log so failures land in Player.log. - Captures Unity profiler binary log when AUDIENCE_PLAYER_PROFILE_PATH is set. - DiskStore.ReadBatch treats missing queue dir as empty (matches existing guards). - Trims 30 unused packages from the sample-app manifest. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
cf5e5d9 to
9da4f4c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds Linux PlayMode CI for the Audience SDK sample app, with the perf trims that bring Unity 6 cell wall time down from initial-failure to ~22-25 min, plus diagnostics and one SDK fix surfaced by the investigation.
CI workflow
playmode-linuxjob running underxvfbinside theunityci/editor:ubuntu-...-linux-il2cpp-3container. The image ships both Mono and IL2CPP playback engines plus xvfb, so one tag covers both backends.game-ci/unity-test-runner@v4with manualdocker runbecause the action hardcodes-batchmode -nographics, so PlayMode tests came back inconclusive and silently passed.Test run completedso cells exit on suite finish; handles Unity 6's known post-test shutdown hang. 40 min hard cap as fallback.Perf trims (Unity 6 Linux)
GraphicsApisLinuxOverridebuild hook forcesStandaloneLinux64to OpenGLCore-only at build time, skipping Vulkan shader variants the runtime never uses.LinuxLogPaneSuppressionsetup-fixture hides the in-app logScrollViewon Unity 6 Linux, skipping llvmpipe rasterising thousands of UI Toolkit triangles per frame.-force-glcoreto skip Unity 6's Vulkan init negotiation.Diagnostics
LogCiProvenanceruntime hook stamps[CI] buildGuid=... runId=... cellId=...intoPlayer.logon player startup. Gated to CI runs only.OnErrorandLog.Writeroutput toDebug.Logso SDK warnings and failure callbacks reachPlayer.log, not just the in-app pane.PlayerProfilerLoggerruntime hook writes a Unity profiler binary log whenAUDIENCE_PLAYER_PROFILE_PATHis set.audience_ci_test_markerPlayMode test that emits a CDP marker row so this run's events can be filtered out of analytics.SDK fix
DiskStore.ReadBatchnow treatsDirectoryNotFoundExceptionas empty queue, matching the existing guards inDeleteAllandApplyAnonymousDowngrade. Prevents external test cleanup orpersistentDataPathwipes from surfacing asOnError.Sample-app cleanup
examples/audience/Packages/manifest.json.Linear: SDK-317, SDK-318, SDK-340, SDK-341