Commit Graph

  • b4f0c53426 [Docs] (Disaggregated): the cross-host eglMakeCurrent hang was the host's xray TUN proxy stalling its relay, not MobileGL; direct Wi-Fi runs pass and are bandwidth-bound swung0x48 2026-09-28 22:57:20 -04:00
  • 429b4472bb [Fix] (tools): cross-host runs first prove the WSL -> phone TCP path is end to end, and netbench's pkill no longer kills its own shell swung0x48 2026-09-28 22:57:20 -04:00
  • 221a8144c2 [Docs] (Disaggregated): sync stage progress and roadmap with the five-arm perf comparison and the cross-host hang blocker swung0x48 2026-09-28 22:33:53 -04:00
  • 1987bdff5c [Feat] (Android): the render server screen and binary ship in the plugin APK too, not just trace swung0x48 2026-09-28 22:10:56 -04:00
  • 2fa58940e4 [Fix] (ci): the trace APK is a launchable app; assert exactly one launcher activity swung0x48 2026-09-28 21:54:16 -04:00
  • 35dddc0c89 [Fix] (MG_Remote): the socket-io stats are LinkMetrics free functions, not StreamLink members swung0x48 2026-09-28 21:54:08 -04:00
  • 3bdd565dc6 [Chore] (docs): Remove orphaned CS_Refactor notes accidentally committed in 4e48702f2 swung0x48 2026-09-28 21:16:35 -04:00
  • 884f6aac96 [Feat] (Android): trace APK boots to POST; bottom nav bar switches to the render server swung0x48 2026-09-28 21:06:44 -04:00
  • b9a89967b0 [Docs] (Disaggregated): five-arm transport perf comparison and bottleneck attribution swung0x48 2026-09-28 20:55:45 -04:00
  • 141227e8ba [Feat] (tools): add the disaggregated-mode device perf matrix and profiling harness swung0x48 2026-09-28 19:36:30 -04:00
  • 930c29e9e0 [Feat] (Android): the render server screen takes intent extras for prefill and autostart swung0x48 2026-09-27 08:36:57 -04:00
  • c16fb5a8ac [Feat] (MG_Remote): the in-process display server serves unix endpoints too swung0x48 2026-09-27 07:43:56 -04:00
  • e3e890ed5d [Feat] (Trace): the replay runner builds as an adb-shell executable for Android, and unix endpoints carry a headless window swung0x48 2026-09-27 06:28:00 -04:00
  • bf6feebb22 [Perf] (MG_Remote): The producer's transport park is timed as its own per-frame number, and a reducer pairs the two role logs into a frame-time breakdown swung0x48 2026-09-27 02:55:38 -04:00
  • f10db410e8 [Feat] (Android): the render server screen also starts the on-screen display server swung0x48 2026-09-27 04:00:51 -04:00
  • aaa50c88e1 [Feat] (Android): the render server screen takes unix endpoints, and is titled for what it serves swung0x48 2026-09-27 03:35:48 -04:00
  • 1f72597dd8 [Feat] (Android): a launcher screen starts and stops the offscreen TCP server swung0x48 2026-09-27 02:54:17 -04:00
  • a078b6bcee [Perf] (MG_Remote): The producer's transport park is timed as its own per-frame number, and a reducer pairs the two role logs into a frame-time breakdown codex/frame-stats-20260926 swung0x48 2026-09-27 02:55:38 -04:00
  • 6bccf98d7f [Perf] (MG_Remote): Frame time is accounted on both sides, down to the socket reads and the client's waits. BZLZHH 2026-09-26 17:57:48 +08:00
  • 3a6c5c7f04 [Perf] (MG_Remote): The create window ships at 10, and the server now reports where its own frame time goes. BZLZHH 2026-09-26 15:30:48 +08:00
  • b017ec1c1f [Test] (MG_IntegrationTest/Scenarios): The P4a white-box applier reads fence on a readback. BZLZHH 2026-09-26 12:53:10 +08:00
  • 102f2ca7d5 [Perf] (MG_Remote/Client): The create window's shipped depth is 6, and its ceiling 8. BZLZHH 2026-09-26 11:26:54 +08:00
  • 1f1ece8a33 [Test] (MG_IntegrationTest/Scenarios): Fence the object-death gates on a readback instead of a clear. BZLZHH 2026-09-26 09:36:37 +08:00
  • 677689454a [Test] (P12): the window's gates move onto the arm it ships on - a real stream session with an answering peer, and it goes red by name when the store is a bounded ring BZLZHH 2026-09-26 03:41:48 +08:00
  • 3a2555805a [Perf] (P12): the create window lands as the default - declared-answer retention replaces the ring, and the load frame goes 28.66 s -> 16.52 s (11.02 s at window 4) BZLZHH 2026-09-26 03:31:14 +08:00
  • 1ef7439625 [Perf] (P12): with the budget off and a deep reply buffer the window pays - 28.66 s -> 11.45 s at W=4, and the round trip does NOT grow, so the ~5 ms is a wakeup the server batches away BZLZHH 2026-09-26 03:01:20 +08:00
  • 82de3f6826 [Docs] (P12): the ring-1024 experiment - every deferred answer comes back (readfail 8,872 -> 0), so eviction was the whole cause and the residency budget is now the brake BZLZHH 2026-09-26 02:44:30 +08:00
  • b1ef484116 [Perf] (MG_Remote): the residency budget does not make the window usable either - the answer is gone before the client next looks, so a deferral needs RETENTION, not a budget BZLZHH 2026-09-26 02:35:05 +08:00
  • 4e48702f26 [Feat] (MG_Remote): a record can tell the server its answer will never be read - the bit works and cuts a frame's replies by 92%, and it proves the window's real blocker is the FIFO drain, not the pool depth BZLZHH 2026-09-26 02:00:44 +08:00
  • 7c822cdc85 [Docs] (P12): the no-reply flag reviewed - the arithmetic holds and the flag is cheap, but the predicate has to be "this answer will never be read", not "fire-and-forget" BZLZHH 2026-09-26 01:13:31 +08:00
  • 7205509a9a [Docs] (P12): the create window is dead by arithmetic, and the two debts it exposed (the applier can no longer say it dropped a record; the picture still has no real control) BZLZHH 2026-09-26 00:51:56 +08:00
  • d011395939 [Docs] (MG_Test, P12): the dropped-records repair is gone, not merely narrowed - the first-use work removed the last row that read an applier refusal, and the case that pins the debt BZLZHH 2026-09-26 00:50:00 +08:00
  • d2efd1d79d [Perf] (MG_Remote/Client): the create window lands OFF - the deferral cannot be collected, 8 reply slots against 59,673 replies in one frame - measured on the device at 4,536 blocking creates either way BZLZHH 2026-09-26 00:47:19 +08:00
  • a2c1f5f292 [Fix] (MG_Remote/Transport): StreamLink::ReadReply answers by seq instead of "is it the newest" - the contract ShmLink already kept, and the reason a deferred answer could never be read back BZLZHH 2026-09-26 00:47:06 +08:00
  • 82ed1df90e [Perf] (MG_Pipe, MG_Remote/Client): a texture respecify for a CONFIRMED object stops waiting - the row pays its round trip once, at first use - and the frame drops from 130.9 s to 31.3 s BZLZHH 2026-09-25 23:29:08 +08:00
  • f2b55b9d2d [Perf] (MG_Remote/Client): the buffer half of resource_respecify stops waiting - its answer is discarded at both call sites - and the measurement says the texture half is where the other 20,611 waits live BZLZHH 2026-09-25 22:53:38 +08:00
  • 5ad8370b37 [Docs] (P12): the first-use confirmation measured on the device - 43,232 waits to 25,176, 221.5 s to 134.4 s, op 47 gone and every other row identical BZLZHH 2026-09-25 22:36:51 +08:00
  • b62709604d [Perf] (MG_Impl/Pipe, MG_Remote/Client): a parameter change for an object whose existence is confirmed takes no reply - the round trip moves to the object's FIRST USE BZLZHH 2026-09-25 22:31:16 +08:00
  • c05e702d8c [Docs] (P12): the server's spin budget is the portable half of the idle-exit fix - 221.5 s -> 182.8 s on the same frame, no root and no code change BZLZHH 2026-09-25 21:36:39 +08:00
  • 7c72dfde2b [Docs] (P12): the ~5 ms per round trip is the DEVICE's deep-idle exit, not the link and not the client - which is what the handoff measured and could not explain BZLZHH 2026-09-25 21:28:13 +08:00
  • 6e7c0ce710 [Docs] (P12): the per-wait 5 ms is not the link - the same frames over adb forward move it by only a quarter, which is what the handoff measured and could not explain BZLZHH 2026-09-25 21:14:15 +08:00
  • f99415a493 [Docs] (P12): the atlas window's exact composition, and the negative result that kills the record-dedup idea before anyone builds it BZLZHH 2026-09-25 21:03:42 +08:00
  • 1d363eb109 [Perf] (MG_Remote): the client counts RECORDS SENT per op beside the waits each row PAID, and the pair says item B stopped the waiting without stopping the sending BZLZHH 2026-09-25 20:52:01 +08:00
  • d057e1cb8a [Docs] (P12): the first device run of A and B - the crash path walked twice without a crash, and the atlas frame says item B is necessary but not sufficient BZLZHH 2026-09-25 20:46:23 +08:00
  • 170b789e7f [Perf] (MG_Remote/Transport): the per-op reply-wait split prints with every frame, because a whole-session total cannot name the rows behind one frame BZLZHH 2026-09-25 20:45:18 +08:00
  • e734880cf2 [Docs] (P12): the device page names the by_op ids, and the note says where the per-op line comes from BZLZHH 2026-09-25 20:20:24 +08:00
  • 618395529f [Perf] (MG_Remote/Transport): the per-op reply-wait split also lands in the exit summary, because a spawn client never prints a frame line BZLZHH 2026-09-25 20:20:04 +08:00
  • ce0235b190 [Docs] (P12): the three rows that keep their wait get a ruling with evidence behind it, and the handoff's open op-split question gets its numbers BZLZHH 2026-09-25 20:17:22 +08:00
  • fa8b500ba8 [Perf] (MG_Remote/Transport): the reply-wait metric gains a per-op tally, and the measurement says which rows actually buy the waits BZLZHH 2026-09-25 20:17:13 +08:00
  • bfd6392668 [Docs] (P12): the P5E contract records the texture half's paid-off wait, and the round's note carries the measured G1 BZLZHH 2026-09-25 20:00:44 +08:00
  • 3b9f536dd2 [Docs] (P12): the device-lost reply tolerance and the texture-upload wait granularity get their own record - what landed, the gates that can go red, and what is still owed BZLZHH 2026-09-25 19:44:51 +08:00
  • 33e02f4bcf [Perf] (MG_Pipe, MG_Remote/Client): on the wire arm a texture upload stops owning a reply - the wait moves from every record to the SEG_STAGE window BZLZHH 2026-09-25 19:44:38 +08:00
  • 096fa1a8c1 [Fix] (MG_Remote/Client): a DECLINED reply is an answer, not a corruption - the fence and query consumers stop folding status 1 into the abort, and the uncarried-bytes self-check spares a session that has latched device-lost BZLZHH 2026-09-25 19:43:40 +08:00
  • c984d95205 [Fix] (MG_Remote): CapsSnapshot.apiVersion carries the backend's own API version string, so a split client's GL_RENDERER names the real device instead of the target GL version (split build only; the pull build is unchanged, G1) BZLZHH 2026-09-25 17:25:21 +08:00
  • 41b35536e3 [Docs] (P12): record post-review verification swung0x48 2026-09-25 01:34:29 -04:00
  • 0fe015886e [Docs] (Disaggregated): the top-level files become short indexes in plain language; the design text moves to design/, the how-to and reference material to guide/ swung0x48 2026-09-24 22:39:46 +00:00
  • 43b5cfa94e [Docs] (Disaggregated): the four index documents keep only summaries, and every phase's detail lives in its own notes/<phase>/README.md swung0x48 2026-09-24 22:21:09 +00:00
  • 1fb18d9e73 [Docs] (P12 review): the status page says the P12 subset and its review round are integrated into feat/disaggregated, and that the device re-check is the next thing owed swung0x48 2026-09-24 14:03:49 +00:00
  • 341b43fa4f [Docs] (P12 review): ID-P12-15 - G1 holds for the review round: the pull build at cb0404f2 and at this head, same machine and compiler, has .text 0x9b1bf2 on both sides and 30614 symbols with 0 added / 0 removed swung0x48 2026-09-24 14:03:48 +00:00
  • 2cf3298023 [Docs] (P12 review): ID-P12-14 records the review round's host gate - the new cases' red-without-fix demonstrations, and every remaining red traced to the container's CMake/CTest, not to the fixes swung0x48 2026-09-24 14:03:48 +00:00
  • b240bd942f [Docs] (P12 review): the review round's host gate log and the container variant of the gate script swung0x48 2026-09-24 14:03:48 +00:00
  • b7ad6113ee [Docs] (P12 review): the P12 decision log, ARCHITECTURE §15.2's on-screen path, and the ROADMAP P12 row record the review round swung0x48 2026-09-24 14:03:48 +00:00
  • 251d333231 [MG_Backend] (P12 review): Magma's renderer is dropped when a server session ends, so a session that ended without a clean teardown leaves nothing attached to the server's window swung0x48 2026-09-24 14:03:48 +00:00
  • 74ba390db5 [MG_Backend, MG_Test] (P12 review): the ended server session's texture and sampler unit shadows are emptied with its twins, so the next session's binds are not skipped against freed twins swung0x48 2026-09-24 14:03:47 +00:00
  • ee456ccc40 [MG_Util, MG_Remote] (P12 review): the in-process display server forwards only its live session's own log lines to that session's client, and sends them outside the log mutex swung0x48 2026-09-24 14:03:47 +00:00
  • 7680b78621 [MG_Backend] (P12 review): an ended server session's swap interval is forgotten, so the next session in the in-process display server starts at the driver's default swung0x48 2026-09-24 14:03:47 +00:00
  • 29a82617e0 [MG_Remote, MG_Backend] (P12 review): a server-owned surface resizes the server's window and reports its real size, every server-owned surface keeps its geometry, and Espryt reports a window's extent only for the server's own window swung0x48 2026-09-24 14:03:47 +00:00
  • 277940f39f [MG_Remote, MG_Test] (P12 review): a session asking for the window's own size after a fixed-size session waits for the layout's size instead of leasing the stale fixed one swung0x48 2026-09-24 14:03:46 +00:00
  • 8f2a084354 [MG_Remote, MG_Test] (P12 review): a lost server window is answered before every ring record, and a stopping in-process server leaves a streaming client's queue unapplied swung0x48 2026-09-24 14:03:46 +00:00
  • cb0404f2b9 [Docs] (P12): the on-screen server window's plan, audit, harness and device evidence move into the tree, and the status page says what this line is and what it still owes - CURRENT_STAGE_STATUS records that the P12 subset is implemented but NOT handed off (both exit gates unrun: no cross-machine TCP, no FCL + kill-server device-lost), the ROADMAP P12 row stops reading "待排", and notes/p12 carries the brief, the four read-only audits, the gate and device harness, and the curated device evidence (check transcripts, replay verdicts, on-screen captures; logcat left out per notes/README.md's evidence-data rule) swung0x48 2026-09-24 07:44:40 -04:00
  • 29b7b284b9 [tools] (P12): trace_replay README - the two device servers, tcp_device_server.py --surface window, and the headless client's MOBILEGL_IPC_SURFACE=server --window-surface replay swung0x48 2026-09-24 00:51:13 -04:00
  • e7486f8a4c [android-plugin] (P12): MobileGLServerService logs its supervisor's closed output as the service stopping, not as a failure with a stack trace, when the display Activity stops it swung0x48 2026-09-24 00:51:13 -04:00
  • 06dad59dbd [MG_Remote] (P12): the in-process pin line names the pin it records - MOBILEGL_BACKEND_TYPE when the environment set it, the first session's otherwise swung0x48 2026-09-24 00:51:13 -04:00
  • a4a940db2b [MG_Remote] (P12): the display geometry up-call attaches the apply thread to the JVM under its own name, so the rest of the session is not logged as the up-call's thread swung0x48 2026-09-24 00:40:35 -04:00
  • c2758abdf9 [MG_Backend, MG_Test] (P12): the server backend's destruction drops every Espryt twin under a transport, so the in-process display server's next session no longer adopts the ended session's programs, VAOs and buffers (split build only; the pull build is unchanged, G1) swung0x48 2026-09-24 00:40:35 -04:00
  • 984db45576 [tools, scripts] (P12): tcp_device_server.py --surface window|pbuffer (default pbuffer, unchanged) starts the on-screen display Activity on a lit screen, and --backend pins either server swung0x48 2026-09-24 00:20:11 -04:00
  • 3726b1f7e5 [android-plugin, tools] (P12): MobileGLDisplayActivity - the on-screen display server in :mglwin (software window, fullscreen SurfaceView, aspect-fit geometry, env applied before the library loads), one shared server environment with MobileGLServerService, and one server at a time (the Activity stops the service, the service kills :mglwin) swung0x48 2026-09-24 00:20:11 -04:00
  • 02801c2acb [MG_Remote] (P12): the in-process display server's JNI - install the display with ANativeWindow hooks and a JVM-attached geometry up-call, serve/stop on a Java thread, attach from surfaceCreated/Changed and a blocking detach from surfaceDestroyed (Android split build only) swung0x48 2026-09-24 00:20:11 -04:00
  • 37b53152cc [MG_Test] (P12): host proofs - the in-process server entry on a thread (sequential sessions, latch reset, Busy, backend pin, stop), a forked session child's parent-death signal, and a MOBILEGL_IPC_SURFACE=server client refused by name on both sides by a display-less server swung0x48 2026-09-23 23:55:23 -04:00
  • 4fb5aadfa2 [tools] (P12): Linux glws creates a headless window surface for MOBILEGL_TRACE_SURFACE=window - the MobileGL server's window under MOBILEGL_IPC_SURFACE=server, refused by name otherwise swung0x48 2026-09-23 23:55:23 -04:00
  • 2fa4714fc9 [MG_Backend] (P12): Espryt publishes a remote session's window-surface extent with its default-framebuffer format (split build only; the pull build is unchanged, G1) swung0x48 2026-09-23 23:55:23 -04:00
  • 826584d265 [MG_Remote] (P12): the in-process display server - RunSession returns its exit code, TcpSupervisor hands authenticated sessions to threads (Busy, ResetSessionLatch between sessions, the backend pinned for the process, a non-blocking stop), and forked session children die with their supervisor (PR_SET_PDEATHSIG) swung0x48 2026-09-23 23:55:23 -04:00
  • d481393f8f [MG_Remote, MG_Impl, MG_State, Config] (P12): MOBILEGL_IPC_SURFACE=server - headless window surfaces (NULL accepted), one ServerOwned CreateWindowSurface and no SetWindowHandle, the server's geometry into the EGL state before the create returns, and every refusal named on the client swung0x48 2026-09-23 23:55:23 -04:00
  • 844b217661 [MG_Remote, MG_Test, scripts] (P12): the server's own window - ServerDisplay (an opaque window with hooks, a lease, a bounded Detach), the ServerOwned arm with the one-mode-per-session latch and the named no-display refusal, the lost-window release on the apply thread and the ServerWindowLost family swung0x48 2026-09-23 23:55:23 -04:00
  • 457aebe7f0 [MG_Remote, MG_Test, scripts] (P12): WindowKind::ServerOwned on the wire - control revision 3 with SurfaceRefusal and SurfaceReply width/height/refusal, the codec's ServerOwned rules (creation only, token 0, SetWindowHandle a named refusal) on a frame-local marker, and the non-zero-token latch row swung0x48 2026-09-23 23:55:23 -04:00
  • 9f669e5215 [docs] (P7): ID-P7-63 - P7 closes: the final device window reads gate 3 36/36 and gate 5 PASS, and the handoff records the end state swung0x48 2026-09-23 20:51:30 -04:00
  • 78e71f2b01 [docs] (P7): ID-P7-60/61/62 - the codex closeout fixes, the spawn cold-start heartbeat, and gate 3's nondeterministic-monolith ruling; window 2 reads gate 5 PASS swung0x48 2026-09-23 19:34:55 -04:00
  • 990bc649a6 [docs] (P7): CONTRACT-P7 7.2 and the window-2 RUNBOOK record the ID-P7-62 final ruling (1.5 x Delta_mm + 8, monolith x5), its simulated pass rates, gate 3's x5 timing and the window-2 re-reductions at 36/36 swung0x48 2026-09-23 19:32:56 -04:00
  • 5662901100 [tools] (P7): ID-P7-62 final ruling: clause (2) bounds the nearest-monolith delta at 1.5 x Delta_mm + 8, and 30-gate3.sh runs the monolith x5 whatever --repeat swung0x48 2026-09-23 19:25:59 -04:00
  • b44a1c3df3 [docs] (P7): CONTRACT-P7 7.2 and the window-2 RUNBOOK record the nearest-monolith form of ID-P7-62, its window-2 re-reductions and the simulated monolith x3 pass rates swung0x48 2026-09-23 19:13:59 -04:00
  • b98dc9f890 [tools] (P7): ID-P7-62 clause (2) holds every split pass to its nearest monolith pass within 1.25 x D_mm + 32 px and Delta_mm + 1, and 30-gate3.sh / window.sh are executable again swung0x48 2026-09-23 19:13:59 -04:00
  • 2fafe1f438 [docs] (P7): CONTRACT-P7 7.2 records the ID-P7-62 nondeterministic-monolith amendment, and the window-2 RUNBOOK its ruling, re-reductions and bliss's pass rate under monolith x3 swung0x48 2026-09-23 18:51:47 -04:00
  • 9d026e1ab6 [tools] (P7): gate 3 runs the monolith x3 and 60-reduce.py judges a case whose same-session monolith is not bit-identical by the ID-P7-62 distributional check swung0x48 2026-09-23 18:51:47 -04:00
  • 74636c8432 [MG_Backend, MG_Test] (P7): the wire arm's shader colour blit samples an unscaled blit through its nearest sampler, so a 1:1 GL_LINEAR glBlitFramebuffer into the default framebuffer is an exact copy swung0x48 2026-09-23 18:33:44 -04:00
  • cfe830cf44 [MG_Remote, MG_Test, MG_IntegrationTest, scripts] (P7): a spawned server reports SurfaceProgress while its apply thread runs a surface op, so the client's reply budget bounds silence and a cold bring-up past 20 s is waited for swung0x48 2026-09-23 18:15:22 -04:00
  • dd415408dd [docs] (P7): CONTRACT-P7 §10.7 and §12 and the ROADMAP Ph row record the int3 follow-ups: the narrowed latch window, null-or-unit-private image units and five new debts swung0x48 2026-09-23 17:49:47 -04:00
  • 2069887874 [tools] (P7): the window-2 reducer takes an adjudicated lost CTS case out of its block's rate on both sides and prints it ADJUDICATED swung0x48 2026-09-23 17:48:25 -04:00
  • a23ae93753 [MG_Remote, MG_Test, scripts] (P7): the latch comments say the check before every pop narrows the control-thread window to check-to-pop and the session ends at the next check swung0x48 2026-09-23 17:45:57 -04:00
  • 9eb798a60e [MG_Backend, MG_Test, MG_IntegrationTest, scripts] (P7): a private image placeholder is keyed by (shape, unit) and capped, and the depth-resolve identity is built by a tested helper swung0x48 2026-09-23 17:45:57 -04:00
  • 8f3d179ced [tools] (P7): window-2 reducers enforce the contract's repeats, arms and case set, and gate Pass-to-NotSupported losses swung0x48 2026-09-23 16:37:39 -04:00