Skip to content

Keep ready monitor inputs updating when one source is unavailable (#517) #801

Closed

Description

@iamfatness

Parent #517, approved October 6 render specification: missing monitor inputs must not refuse unrelated valid work.

Code audit: MonitorFrameAdmission.h::prepareMonitorFrames removes unused sources and releases production GPU leases, but returns false when any still-demanded GPU source has no private monitor copy or CPU fallback. D3D11CompositorAdapter::submitMonitors then refuses the entire batch. The existing MonitorFrameAdmission.MissingPrivateCopyReleasesProductionLeaseAndRefusesJob explicitly tests that behavior. A warming/faulted capture in multiview can therefore stop fresh Preview and all other multiview cells, even when their own inputs are ready. This is an identified dependency in the gated GPU path; it is not attribution of the current CPU-only recording losses.

Implement source-scoped admission and explicit holds/refusals through the existing monitor request/worker seams. Preserve last-good private monitor content and actual source epoch/identity; never borrow production GPU leases, synthesize fresh input identity, or report a held image as a new source arrival. Ready unrelated inputs must continue updating. Bound retained source/cache residency and retire obsolete epochs/hidden consumers off Program.

Done when: deterministic real-pixel mixed-ready/missing input tests show unrelated Preview and multiview motion; affected source reports its hold/refusal; production leases are released; all-missing and recovery cases are explicit; resize/reconnect/demand retirement remain bounded. Repeat the matched delivery harness and relevant GPU fault tests. Default isolation/GPU ingress changes and real installed qualification remain parent work. This follows the active #797 slice and proposes no independent rank change.

Activity

  1. iamfatness commented on Oct 7, 2026

    @iamfatness
    OwnerAuthor

    Implementation is in draft PR #803, head 768c47d, under the approved #517 scope. Healthy inputs now compose independently while missing optional copies hold their original pixels/epoch/frame ID. Retention is on the monitor owner (64 sources, 256 MiB logical payload references), and undemanded backend references retire there with independent GPU completion leases. Epoch-aware source-export dedup prevents a reconnect reusing an ID from keeping the prior exported pixels.

    Local Release validation before the final additive snapshot helper: 3 admission, 4 cache, 4 worker, and 3 actual GPU/pixel monitor tests passed. The new mixed-input test reads independent Preview/multiview textures and an Inspector export: healthy content changes while one private GPU image holds; all-input hold, recovery and reused-ID/new-epoch publication pass. The isolated blocked-monitor Program test passes. Real desktop WGC opt-in validation passes: GPU view sampled, independent CPU/ISO arrivals, 20 production frames advancing with all optional monitor slots retained, and three reconnects with fresh epochs. This is finite functional evidence, not 60 fps or installed acceptance.

    Support tests: 34 passed. Full Release MediaCore: 2,331 passed on quiet repeat; initial 2,330 passed/1 failed reproduced #754's double recovery-completion assertion, separately retained with a successful targeted repeat. Cause remains unresolved; no recovery source changed here.

    The final per-source snapshot observation/helper test requires final build/hosted CI verification. Matched delivery trials and installed validation are pending: the installed app reopened into an active meeting, and the owner explicitly requested preserving it. No app stop, replacement, default rollout or additional performance load will be performed during that session. PR remains draft and #801/#517 remain open until their acceptance conditions are met. Private raw logs and recordings remain local.

  2. iamfatness commented on Oct 7, 2026

    @iamfatness
    OwnerAuthor

    Final snapshot helper now has passing hosted Linux/macOS native stub suites and ThreadSanitizer at head 768c47d. Windows production/shell and C++ CodeQL checks remain running. Draft status and quiet-window qualification requirement are unchanged; the active installed meeting remains preserved.

  3. iamfatness commented on Oct 7, 2026

    @iamfatness
    OwnerAuthor

    Exact native source 768c47d, Release core SHA256 af092d4fca30a9cee3aee54bd2bb9446c0a824f9d9e85b1017fdfef34d7933ac. Maintained harness, 3 paired two-minute measured trials, 10-second warmup, AB/BA/AB. 8 fake Zoom I420 1080p30, 1080p60/1440p60 synthetic BGRA captures, Program/Preview/MV 1080p60, two-frame buffer, local Program MP4. No installed meeting or concurrent build/QA. All failed runs retained privately in artifacts/monitor-admission-ab-3pairs.

    Trial Underruns Scheduled misses Recording missing Render late Mean Program work ms
    inline 1 34 1 34 407 8.455
    isolated 1 2 0 2 1 1.479
    isolated 2 2 0 2 89 1.737
    inline 2 186 13 186 870 9.864
    inline 3 124 8 124 746 8.821
    isolated 3 0 0 0 26 1.660

    All trials: zero Program sequence gaps, render skipped slots, audio lost samples and encoder queue drops/failures. Isolated worker failure delta zero; superseded job deltas 0/5/0. Isolated monitor retention remained 10 admitted inputs, 47,923,200 logical bytes, no holds/unavailable/refusals in this normal-ready workload; SHM pool-busy delta zero. This normal run does not replace the real-pixel missing-input fault tests.

    Isolated 1/2 FAIL the strict Program/recording gate. Logs locate one measured post-GPU-ready publication expiry in each: export wall time 19.426/16.593 ms, expiry late 19.744/17.038 ms. The resulting timeline skip and discarded packet account the underruns. GPU-not-ready and acquisition/completion miss counters were zero. #804 tracks this separate publication boundary, including the still-unknown driver/mutex/preemption contribution inside the measured API wall interval. Shutdown-only source-miss log lines are excluded. No claim #803 introduced this behavior.

    The source-admission implementation has passing actual-pixel missing/held/recovery, private-role/production-lease, resource retirement, reconnect-epoch and blocked-monitor Program checks. Final additive evidence test also passes locally; all hosted CI/CodeQL checks passed for 768c47d. These functional results do not qualify release/default rollout: #517 remains open with CPU upload #802 and publication #804 dependencies plus installed/receiver/latency/A/V/resource/fleet gates. No installed app files, settings, Program buffering or default flags changed.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    backlogRanked in docs/BACKLOG.md

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions