swung0x48
|
f567610339
|
[Merge] (P5b, c0b): merge feat/disaggregated at f5614995 (v1 round 3, ID-62/ID-67) into p5b/c0b
|
2026-09-16 11:16:09 -04:00 |
|
swung0x48
|
538c3c19ee
|
[Docs] (MG_Remote): CONTRACT-P5B.md - the wire records, sinks, refusals and rulings for the 25 measured class-C slots
|
2026-09-16 11:15:45 -04:00 |
|
swung0x48
|
02972f70b6
|
[Test] (MG_Test, P5b): pin the 76-row catalogue, the 18 stamp rows and the 77 verify payloads, and round-trip each P5b row once through the codec
|
2026-09-16 11:15:45 -04:00 |
|
swung0x48
|
a164113029
|
[Feat] (MG_Remote, P5b): decode every P5b row to a WireVerbSink method, stub each ServerVerbSink body with a named UnmigratedVerb Fatal, and partition the emit table class-C list per migration package
|
2026-09-16 11:15:45 -04:00 |
|
swung0x48
|
4dd4027e80
|
[Feat] (MG_Pipe, P5b): append the five P5b verb rows at opcodes 72..76, arm draw_vbo with the kDrawIsIndirect second tail, give resource_copy_region its two GL names and the clear discriminants one spelling, and stamp every P5b verb boundary
|
2026-09-16 11:15:45 -04:00 |
|
swung0x48
|
f561499519
|
[Merge] (MGPipe, P5): land v1 round 3 - the review residue closed, bind-once per tuple, the R-11 and coverage gates (ID-62, ID-67)
|
2026-09-16 11:14:27 -04:00 |
|
swung0x48
|
b13f2b0283
|
[Fix, Test] (DirectGLES/BackendObject, MG_Test/Wire): G1 - the two Create*Surface pull arms are the original return statements byte for byte again (the ID-67 note lives in the #if MOBILEGL_BUILD_DISAGGREGATED arm; the first cut resized both symbols by 2 bytes); the park case names the POSTER thread as the caller now that N-9 posts from a helper, so control-runs-on-caller is red for its own reason again; the two C6 null-check gates use RGB8_SNORM, the format the fallback's three-channel widening actually applies to (with RGB8 both arms agreed and the runner caught it)
|
2026-09-16 10:58:33 -04:00 |
|
swung0x48
|
c9878d69f3
|
[Test] (MG_Test, Client): align make-current caps controls with ID-67
|
2026-09-16 10:47:42 -04:00 |
|
swung0x48
|
74060e8b5d
|
[Fix, Test] (DirectGLES/BackendObject, MG_Remote/Server, MG_Test/Wire): ID-67 - the native skip in BackendObject_DirectGLES::MakeEGLCurrent is keyed on the VIRTUAL (dpy, draw, read, ctx) tuple, not the surface: the surface's own creation bind is adopted by the first tuple, an identical tuple is a native no-op and publishes no caps snapshot (the client's mirror generation does not move), and a DIFFERENT tuple onto the same surface binds natively again (DirectGLES's invalidations describe the frontend context that changed) and republishes (R-12 arm (a)); ServerLoop tallies MakeCurrentRepublishCount and the control asserts 1 bind + 1 republish for a different tuple and 0 + 0 for a repeat at the EGL table and the tally; the EGL fixture gives the session its backend so the republish is real
|
2026-09-16 10:43:33 -04:00 |
|
swung0x48
|
edcdf771db
|
[Merge] (Docs, P5): land the P5 sections of README, ROADMAP, ARCHITECTURE and MEASUREMENTS
|
2026-09-16 10:36:11 -04:00 |
|
swung0x48
|
a48bc46ec1
|
[Docs] (Disaggregated): document the landed P5 inproc milestone
|
2026-09-16 10:32:58 -04:00 |
|
swung0x48
|
fbeea876b3
|
[Merge] (MGPipe, P5): land c1f - the client's missing gates and controls (ID-64)
|
2026-09-16 10:31:33 -04:00 |
|
swung0x48
|
1646049ac9
|
[Fix, Test] (DirectGLES/Managers, MG_Test/Wire): M-3's two whole-store refusals key on the DESCRIPTOR's HasDefinedContent - content the application supplied (glBufferData(size, data)) must be fully staged by the draw, a gap is a missing record and Fatal{StageSnapshotTooNarrow} by name; a store the application orphaned (glBufferData(size, NULL)) has undefined bytes by its own declaration, so the streaming idiom (orphan, partial glBufferSubData, draw) uploads the staged bytes plus zero-fill exactly as the monolith arm uploads MappedData(); round 2 refused both shapes and aborted six LargeArenaAdoption / ResourceSubsystemControl joint entries by name (hidden under c1 round 2's BlobMissing abort until c1 round 3); two positive gates run the idiom end to end in a forked child through each reader and red on their own string when the refusal is made unconditional again
|
2026-09-16 10:31:29 -04:00 |
|
swung0x48
|
13043e3ff4
|
[Test] (MG_Test/Wire): ServerLoopTest round 3 - an EGL fixture brings the server's REAL DirectGLES backend up on the apply thread through the twelve forwarders alone and counts native eglMakeCurrent at the EGL function table; the review-v2 N-5 gates each red on their own string: C7 one native bind / zero native releases / owner unchanged, N-3 destroy-recreate with the same handle values binds again, ID-49 the reply is the tight extent whatever DstSize the client sent, M-3 sparse shadow through pool-reuse and through respecify dies by name, M-1 a queued range outside the staged coverage dies by name at the drain, m-5 a twin surviving context loss drops its freed base, M-2 the ensure uploads the server shadow not MappedData (item 10), M-6 ShutdownSplitRoles after an early Start failure drops the backend, codex-11 the effective mask via an absent cpu, C6 the seven reads answered by two objects; N-9 the park case bounds its own post and the tally case names its tally
|
2026-09-16 10:17:29 -04:00 |
|
swung0x48
|
49fecc1686
|
[Fix] (DirectGLES/Managers, MG_Backend/Init, MG_Remote/Server): N-7 m-5's freed-base null is transport-guarded like the other two split hunks so monolith transport in a split build changes nothing by construction; N-8 the second consumer-mask check compares MGPipeGetResourceOps() against the table step 2 saw and refuses a replaced table as Fatal{ConsumerMaskLie, resource ops table replaced} (the re-run alone could not see a client-registered table); ServerVerbSink::ReadbackScratchBytes for ID-49's tight-size gate
|
2026-09-16 10:17:29 -04:00 |
|
swung0x48
|
a838c7879d
|
[Fix] (MG_Remote/Server, DirectGLES/BackendObject): ID-54 bind-once at the native layer - under an active transport BackendObject_DirectGLES skips the native eglMakeCurrent for a surface already current on the apply thread (its own creation bound it; measured 2 -> 1 native binds per process, 0 native releases, owner unchanged), and N-3 the held (dpy, draw, read, ctx) tuple is FORGOTTEN on ReleaseEGLResources, ReleaseEGLSurface of a surface it names, surface (re)creation and backend destruction so a recycled handle value after a destroy is a real bind again; ServerLoop.h's ownership prose states what is measured rather than what was hoped (review v2 item 10, N-3)
|
2026-09-16 10:17:29 -04:00 |
|
swung0x48
|
6d86f9d9be
|
[Fix] (Client): share teardown refusal and gate live wire producers
|
2026-09-16 10:16:11 -04:00 |
|
swung0x48
|
eec0e836c6
|
[Build] (Android): map mobilegl.buildDisaggregated and mobilegl.buildDisaggregatedInproc to the CMake options so the trace APK has a split flavour beside pull and push
|
2026-09-16 10:15:58 -04:00 |
|
swung0x48
|
fa924d34fb
|
[Merge] (MGPipe, P5): land j0 rounds 2-3 - the split-lane private logs wired into CI and the skipped-selection control failure (ID-62)
|
2026-09-16 10:15:58 -04:00 |
|
swung0x48
|
cc20de37da
|
[Fix] (IntegrationTest): reject skipped split control selections
|
2026-09-16 09:31:39 -04:00 |
|
swung0x48
|
ca92308bc0
|
Merge branch 'feat/disaggregated' into p5/v1
# Conflicts:
# MobileGL/MG_Test/Wire/CMakeLists.txt
|
2026-09-16 09:27:25 -04:00 |
|
swung0x48
|
68d8ef9f34
|
[Fix] (IntegrationTest): gate private split logs and repair control red-checks
|
2026-09-16 09:23:27 -04:00 |
|
swung0x48
|
e61d00123c
|
[Feat] (MG_Backend, MG_Remote/Server): construct BackendObject_Remote directly in the split hook and bracket PipeApplier::ApplyOne with ScopedApplierEntry - the two merge-time hunks (ID-59)
|
2026-09-16 09:18:10 -04:00 |
|
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 |
|