Skip to content

test(audience-sample): pin frame rate to 1 on Linux for llvmpipe fill rate#762

Closed
ImmutableJeffrey wants to merge 1 commit intochore/sdk-318-linux-playmode-xvfbfrom
chore/audience-linux-perf-render-suppression
Closed

test(audience-sample): pin frame rate to 1 on Linux for llvmpipe fill rate#762
ImmutableJeffrey wants to merge 1 commit intochore/sdk-318-linux-playmode-xvfbfrom
chore/audience-linux-perf-render-suppression

Conversation

@ImmutableJeffrey
Copy link
Copy Markdown
Collaborator

Summary

  • Adds LinuxRenderSuppression [SetUpFixture] gated on UNITY_STANDALONE_LINUX.
  • On Linux PlayMode runs only: Application.targetFrameRate = 1 and QualitySettings.vSyncCount = 0 for the duration of the suite, restored on teardown.
  • Mac and Windows PlayMode runs unaffected.

Why

Tests assert on UI Toolkit's visual-element tree (layout state), not on rasterised pixels. Painting more frames between assertions doesn't help the assertions; it just spends llvmpipe CPU cycles on fragment fill. Capping at 1 fps lets the player do logic work at full speed while skipping most paint cost.

Experiment success criteria

  • Unity 6 Linux Mono cell wall time under 18 min (currently around 27 min).
  • Unity 2021.3 Linux cells stay at or below their current 4 min.
  • All 4 Linux PR cells go green; no UI Toolkit state assertions regress.

🤖 Generated with Claude Code

@ImmutableJeffrey
Copy link
Copy Markdown
Collaborator Author

Closing without merging. Render suppression made things worse: Unity 2021.3 cells went from 3-4 min to 8-11 min because Application.targetFrameRate=1 starved frame-paced test coroutines. Correct fix is the inverse - decouple test polling from frame pacing entirely. Pursuing that in a new PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant