From 54acc4d194fde61f5ea26537e579a6b13f27b6a5 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Sat, 7 Nov 2026 07:59:40 -0800 Subject: [PATCH 1/3] chore(quest): claim quest/m0/ui-frame-rate.md Quest-Claim: 50ca11f50a96e3d8 From eef09ce550f65f8ff7c586dc5c12b0dc94512473 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Sat, 7 Nov 2026 08:50:54 -0800 Subject: [PATCH 2/3] quest: drop ui-frame-rate, whose 25 fps was Xvfb's presentation Co-Authored-By: Claude Opus 5.5 --- quest/m0/README.md | 1 - quest/m0/ui-frame-rate.md | 27 --------------------------- 2 files changed, 28 deletions(-) delete mode 100644 quest/m0/ui-frame-rate.md diff --git a/quest/m0/README.md b/quest/m0/README.md index 357a5c9..9525fb6 100644 --- a/quest/m0/README.md +++ b/quest/m0/README.md @@ -101,7 +101,6 @@ repository. - [Virtual camera](/quest/m0/vcam/README.md) - the program or a published scene exposed as a system camera on Linux, Windows, and macOS - [Browser sources on the GPU under Mesa](/quest/m0/cef-headless.md) - shared-texture pages paint on Intel and AMD under Wayland, and a page that cannot paint fails loudly - [A media file's sound plays with its pictures](/quest/m0/media-av-sync.md) - media sources write a bus latency ahead, as broadcast sources do -- [The UI keeps its frame rate while the program renders](/quest/m0/ui-frame-rate.md) - the editor draws without waiting on the program's render - [The Apple signing identity is available](/quest/m0/signing.md) - the Apple credentials packaging and the macOS camera need; Windows ships unsigned - [Packaging](/quest/m0/packaging.md) - a signed macOS app, a Windows installer, and a Flatpak for Linux - [The persistable portal restore token is pinned](/quest/m0/pin-portal-token.md) - moq-video's restore token, for Wayland sources diff --git a/quest/m0/ui-frame-rate.md b/quest/m0/ui-frame-rate.md deleted file mode 100644 index 101d2ea..0000000 --- a/quest/m0/ui-frame-rate.md +++ /dev/null @@ -1,27 +0,0 @@ -# [M] The UI keeps its frame rate while the program renders - -## Goal - -The studio's UI draws its frames without waiting on the program's render, so -the editor stays as smooth as the display allows while the studio publishes -or records. - -## Plan - -From [moq-dev/studio#85](https://github.com/moq-dev/studio/pull/85), picked -2026-11-07 (maintainer away under /afk, recommended option), m0 by the rule -that fixes join m0. - -#85 measured the UI at about 25 fps (40 ms a frame) with effects Full, -Reduced, and Off alike, while the program rendered in about 19 ms, on -`nixos`'s RTX 3070 Ti under Xvfb at 1440x900. The UI's own CPU work was -under 2 ms. Its unprofiled guess is that the UI waits on `engine.state`'s -lock while the program renders. - -- Profile first, on a real display as well as Xvfb, since Xvfb's - presentation may account for some of it. Report frame time, where the UI - thread waits, and GPU queue contention between the UI and the compositor. -- Fix the cause found, such as holding `engine.state` only to copy what a - frame draws, or keeping the compositor's submit off the UI's path. If the - wait is only Xvfb's, record that in the PR and delete this quest. -- Show the program's render time and encoder load are unchanged. From 111838161f801c790566b25a169260a601f889a5 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Sat, 7 Nov 2026 08:53:26 -0800 Subject: [PATCH 3/3] docs(agents): measure UI frame time under headless sway, not Xvfb Co-Authored-By: Claude Opus 5.5 --- AGENTS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/AGENTS.md b/AGENTS.md index eabea7e..27af7a8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -6,6 +6,7 @@ MoQ Studio is a native, cross-platform streaming studio that composites scenes o # Required - Measure performance by frame time, GPU copies, and encoder load. +- Measure the UI's frame time under a real compositor, such as headless sway (`WLR_BACKENDS=headless sway`), not Xvfb, whose present caps it at 12–25 fps on the NVIDIA test hosts. # Upstream