swung0x48
65a403284c
[Merge] (MGPipe, P5): joint - v1@c9d84e33c5e51075e9c6ec7374740fb314cc755c
2026-09-16 09:17:01 -04:00
swung0x48
2536ffb920
[Merge] (MGPipe, P5): joint - c1@5682f429d0c877ae5d50ad723b76253b182c98f6
2026-09-16 09:17:01 -04:00
swung0x48
5682f429d0
[Fix, Test] (MG_Remote/Client, MG_Impl/Pipe): c1 round 3 - route the five by-address delete sites (B1); observe the client arm (B3); readback requires Status=OK and the exact extent and refuses a pack-PBO read by name (M2/M8/codex11/ID-57); one ERROR->Fatal{ReplyError} rule across the two escapes and an honest ShutDown decline (M4/codex5); InitialBytesNotCarried is role-aware (M5); a routed call during teardown refuses by name not runs the applier (codex4); caps adopted on every make-current (codex12); set_dynamic_state carries an optional blob; PACK_SKIP_IMAGES ignored for a 2-D read (codex6); one tight-size function for production and test (M3/codex10); redcheck 9/9 red each on its own string (M6)
2026-09-16 09:11:47 -04:00
swung0x48
b2dcae713f
[Fix] (IntegrationTest): give Split entries private diagnostic logs
2026-09-16 08:48:30 -04:00
swung0x48
c9d84e33c5
[Fix] (DirectGLES/Managers): under an active transport a resource_subdata that finds no twin MINTS one (GetOrCreateBufferResourceForHandle) so its bytes reach the server StagedShadowStore - the twin is otherwise lazy until the first draw (D-A2) and the reduced-path VBO bytes were lost, so the milestone frame rendered a shifted store; monolith keeps the lazy twin (R-11/ID-52 item 3)
2026-09-16 08:11:05 -04:00
swung0x48
f280baf2b3
Merge branch 'feat/disaggregated' into p5/c1
2026-09-16 08:07:59 -04:00
swung0x48
455b475c5d
[Fix] (DirectGLES/Managers, MG_Remote/Server): m-5 nulls a stale hostBytes only when its server shadow is actually gone (StagedShadowStore::HasShadow), not on a twins first-ensure generation sync - the unguarded null dropped a subdatas freshly staged base and made the reduced-path VBO read shifted; HasShadow unit control added
2026-09-16 08:03:52 -04:00
swung0x48
a85aa95401
[Test] (MG_Test/Wire): ServerLoopTest - the R-11 production gate through the real ops table (M-1), the C2/M-6/M-7/C6/C7 controls, actual-blocked-park arming (C10), an explicit-mask affinity case (M-4), and the coverage death control naming SIGABRT (m-2)
2026-09-16 07:45:29 -04:00
swung0x48
05bcb73477
[Fix] (MGPipe): resource_flush_range carries no companion bytes under an active transport - the consumer reads the server-owned StagedShadowStore instead of faulting the null carrier as corruption (item-12, R-13.2/ID-37)
2026-09-16 07:45:29 -04:00
swung0x48
61d6cd8e30
[Fix] (MG_Remote/Server): OnReadPixels reads with neutral pack state into a tight w*h*bpp reply so a server-visible pack state cannot overflow the slot (ID-49); the present<->swap 1:1 is a convention not structural (m-1); the reply-ordering invariant is documented against ReplySlot.h (m-7)
2026-09-16 07:45:29 -04:00
swung0x48
7a925b3259
[Fix] (DirectGLES): the seven backend format-capability reads use the server-private cache via ActiveBackendFormatCaps under split, not pActiveBackendObject (C6); guarded so the pull build is byte-identical
2026-09-16 07:45:29 -04:00
swung0x48
0fde95357c
[Fix] (DirectGLES/Managers): under an active transport the server staged copy is the only base - liveHostBase no longer falls back to the client object (M-2); the pool-reuse and whole-store respecify readers go through RequireCoverage (M-3); a twin surviving DropAll has its freed hostBytes nulled (m-5)
2026-09-16 07:45:29 -04:00
swung0x48
0244fc4a50
[Fix] (MG_Backend/Init): ShutdownSplitRoles stops the apply thread and drops the server backend on the early ClientSession::Start-failure path (M-6), and the consumer-mask cross-check re-runs after the client object exists (m-6)
2026-09-16 07:45:29 -04:00
swung0x48
e7fe3b9770
[Fix] (MG_Remote/Server): ServerLoop - clear m_running under m_controlMutex and re-check before publishing (C2); a backend with no thread is Fatal{ApplyThreadNotRunning} not an inline app-thread fallback (M-7); ApplyAffinity logs the effective sched_getaffinity mask (M-4/codex-11); ServerMakeEGLCurrent binds once per tuple and records a client release without unbinding (C7/ID-54); Start resets its own diagnostics (m-3); doorbell Fatal text corrected (m-4)
2026-09-16 07:45:29 -04:00
swung0x48
41992649c9
Merge branch 'feat/disaggregated' into p5/c1
...
# Conflicts:
# MobileGL/MG_Remote/Client/ClientSession.cpp
# MobileGL/MG_Test/Wire/CMakeLists.txt
2026-09-16 07:23:35 -04:00
swung0x48
c3e736a343
[Docs] (Disaggregated): SEG_REPLY is 16 MiB in eight 2 MiB slots (ID-47) - the segment table still said 8 MiB with 4 KiB slots
2026-09-16 07:14:26 -04:00
swung0x48
02f15bb675
[Feat] (MG_Pipe, MG_Remote/Client, MG_Impl/Pipe): R-17 - install the two generated MGPipe tables over the 37 apply entry points, 40 call sites onto the thunks, 37 wire emitters, the reply mailbox, and ID-47/ID-49 readback
2026-09-16 07:10:51 -04:00
swung0x48
39292958e0
[Merge] (MGPipe, P5): integrate package s1, round 3 - ID-47 and ID-48 findings 5, 6, 7, 10, ID-51
2026-09-16 07:07:11 -04:00
swung0x48
949ba509f3
[Fix, Test] (MG_Remote, MG_Test, CONTRACT): wave 1.5 s1 - ID-47 SEG_REPLY is 16 MiB / 8 slots of 2 MiB and ReplySlotPool::CanHold+RequireReadPixelsFits refuse an oversize ReadPixels at the CLIENT by name (ProtocolSmokeTest pin, CONTRACT row 23); CapsAbiFingerprint IS MixAbiFingerprint over CapsAbiFingerprintInputs and the sensitivity case drives it; the null-union Hello/Welcome frames go THROUGH Accept/StartOverTransportPair; the pad-bit case stamps the bit past Reserve; both death controls name their diagnostic via WireLogFatal (stderr echo); the RSS ledger reads /proc once and keeps its own running peak (GitHub run 35079459114)
2026-09-16 07:04:08 -04:00
swung0x48
129969c327
[Merge] (MGPipe, P5): integrate package t1, round 2 - ID-48 finding 8
2026-09-16 07:01:45 -04:00
swung0x48
0a22f363ff
[Doc] (workflows): correct the two G5 self-test descriptions to b1 round 2 - the eleventh row is pinned in the script at 3dadd4c1 and compared against the reviewed body, p3a runs eight canned controls and p4a nine negative ones
2026-09-16 06:58:58 -04:00
swung0x48
2e2b41ab49
[Fix, Test] (workflows, scripts/ci): make the three CI negative controls assert their own failure reason instead of accepting any non-zero ctest exit, count the arming baseline by PASSED rather than by not-skipped, and put both control bodies in files a smoke test can drive against a stubbed ctest
2026-09-16 06:58:34 -04:00
swung0x48
cd2079ec8f
[Merge] (MGPipe, P5): integrate package w1, round 2 - ID-48 findings 1, 3, 4
2026-09-16 06:44:37 -04:00
swung0x48
aa7ad670c4
Merge branch 'p5/v1' into p5/c1
...
# Conflicts:
# MobileGL/MG_Test/Wire/CMakeLists.txt
2026-09-16 06:43:30 -04:00
swung0x48
3fb97cc536
Merge branch 'feat/disaggregated' into p5/v1
2026-09-16 06:42:04 -04:00
swung0x48
bb6ba28241
[Fix] (MG_Remote, Wire): send the codec's MapPersistent arm through the same adoption-tier gate the applier uses, so MOBILEGL_IPC_ADOPT_TIER=0/1 die on their named diagnostic
2026-09-16 06:41:01 -04:00
swung0x48
ba6dc4f7f1
[Fix] (MG_Remote, Wire): require every client-server content blob to declare SEG_STAGE and refuse any other carrier by name, which also puts the audit's run bookkeeping out of reach
2026-09-16 06:41:00 -04:00
swung0x48
1a06b40a58
[Fix] (MG_Remote, Wire): let an empty SEG_STAGE take a blob that fits by rebasing its cursors to zero, so the wrap skip is only ever charged against bytes still in flight
2026-09-16 06:40:55 -04:00
swung0x48
7110cdb61a
[Fix] (scripts): make gen_pipe.py's expect_trip require the tripped guard's own message and a non-zero exit code, with an R-16 meta-control that an unrelated SystemExit or sys.exit(0) cannot pass as a trip - the any-SystemExit defect fb70704e fixed in the field-ownership generator, confirmed still present here by codex review finding 9
2026-09-16 06:33:07 -04:00
swung0x48
ce53553c79
[Merge] (MGPipe, P5): integrate package b1, round 2 - ID-41 and ID-42
2026-09-16 06:12:53 -04:00
swung0x48
6cabc6b070
[Fix, Test] (MG_IntegrationTest, MG_Test): make the persistent-map membership expectation a function of the arm the map landed in, and pin the arm-independent half on IsLivePersistentMap where both answers can be produced
2026-09-16 06:03:52 -04:00
swung0x48
f63c9483de
[Fix] (scripts): compare G5's eleventh row against its pin ALWAYS and re-pin it on the reviewed P5 body, with a negative control that the pin itself can fail
2026-09-16 05:56:08 -04:00
swung0x48
571cbabb53
[Fix] (MobileGL/Init, MG_Backend): ShutdownSplitRoles exists only under MOBILEGL_BUILD_DISAGGREGATED - G1 admits no new pull symbol and the unconditional call moved DestroyImpl by 32 bytes
2026-09-16 05:54:33 -04:00
swung0x48
7ea3b1d1f1
[Test] (MG_Test/Wire): ServerLoopTest - the apply thread, the control mailbox, the verb stamp, the audit poison, the bounded shutdown, and StagedShadowTest
2026-09-16 05:45:15 -04:00
swung0x48
d623118485
[Feat] (MG_Backend, MobileGL/Init): the single split hook in MG_Backend::Init - server backend, CallMask halves, ClientSession::Start, remote object - and ShutdownSplitRoles at the top of Destroy
2026-09-16 05:45:15 -04:00
swung0x48
23c0468775
[Feat] (MG_Remote/Server): ServerLoop - the mgl-srv-apply thread, its affinity mask, the three-way park predicate, the blocking control mailbox, the bounded Stop, and the twelve EGL forwarders
2026-09-16 05:45:15 -04:00
swung0x48
8dbe230ae3
[Feat] (MG_Remote/Server): PipeApplier - attach the decoder on the apply thread, stamp/apply/clear per record, and ServerVerbSink for the five class-B verbs
2026-09-16 05:45:15 -04:00
swung0x48
377356f8ca
[Feat] (DirectGLES/Managers, MG_Remote/Server): R-11 - copy staged bytes into a server-owned StagedShadowStore with exact coverage; Fatal{StageSnapshotTooNarrow} before the flush drain instead of a widened INVALIDATE_RANGE
2026-09-16 05:45:15 -04:00
swung0x48
4ba14fa4ed
[Test] (MG_Test, Wire): ID-43 - RingTest.TheTwoFlagSpacesAreDisjointByTranslation states the tree: a header stamped with the CALL flags outside Reserve is POPPED with its lying kRecPad/kRecBorrowSlot bits visible, and the control that a genuine filler still vanishes names Pop kind check as the defence
2026-09-16 05:42:12 -04:00
swung0x48
87c1e1bebd
Merge branch 'feat/disaggregated' into p5/c1
2026-09-16 05:35:48 -04:00
swung0x48
5e5bf7b9d6
[Merge] (dev): bring fff9d639 - the DirectVulkan resident-buffer ordering and coherent trace-copy fix for Minecraft 26.3-rc-3 - into feat/disaggregated
2026-09-16 05:19:41 -04:00
swung0x48
fff9d639f0
[Fix] (DirectVulkan, tools/trace_replay): preserve resident buffer ordering and coherent trace copies - fix intermittent geometry and UI corruption in Minecraft 26.3-rc-3
...
Stage updates to adopted GPU-resident buffers on the command timeline instead of overwriting memory that earlier draws still read. Wait for submitted copies as well as pending commands before CPU readback.
Commit coherent mapped writes before Android trace buffer copies, and retire buffer shadows on deletion so copies see current vertices and name reuse cannot leave dangling dirty-shadow entries.
Validated draw ordering, submitted-copy readback, traced buffer copies, and mapped-buffer deletion/name reuse on Redmi Adreno 830. Minecraft 26.3-rc-3 Magma passed movement, HUD, and menu checks and exited normally; the new trace parsed all 64,410 frames without warnings.
2026-09-16 01:22:11 -04:00
swung0x48
d628d906d1
[Feat] (MG_Remote, P5): land the client role - BackendObject_Remote, the 71-slot emit table, the caps mirror and the verb barrier
2026-09-11 16:46:24 -04:00
swung0x48
bfaf5f9d0e
[Merge] (MGPipe, P5): integrate package t1
2026-09-11 15:57:13 -04:00
swung0x48
3089ce8c1a
[Merge] (MGPipe, P5): integrate package b1
2026-09-11 15:57:13 -04:00
swung0x48
a6bcf28da0
[Merge] (MGPipe, P5): integrate package p1
2026-09-11 15:57:13 -04:00
swung0x48
2de7d40555
[Merge] (MGPipe, P5): integrate package s1
...
# Conflicts:
# MobileGL/MG_Remote/CapsCodec.cpp
2026-09-11 15:57:13 -04:00
swung0x48
511e902f27
[Merge] (MGPipe, P5): integrate package w1
2026-09-11 15:56:17 -04:00
swung0x48
505b5084cf
[Test] (MG_Test): drive the live-host-writes probe through the production chain instead of writing the record by hand, and pin both map edges and the disabled-push control by serial arithmetic
2026-09-11 15:48:28 -04:00
swung0x48
6afa044701
[Docs] (PipeStats): state in both entries that persistent-map-push and stage-buffer cover the same bytes under split, because at tier T2 a pushed block IS an ordinary resource_subdata
2026-09-11 15:48:28 -04:00