Commit Graph
100 Commits
Author SHA1 Message Date
swung0x48 f018c0ef05 [Feat] (MG_Remote, P5b sync): migrate fence lifecycle and wait replies to the apply thread 2026-09-16 13:46:49 -04:00
swung0x48 56c6e49d1d [Feat] (MG_Remote): lower named framebuffer blits through scoped wire bindings 2026-09-16 13:44:35 -04:00
swung0x48 12905a7eb8 [Merge] (P5b): land r1 core fixes with multi-tail command-ring retry 2026-09-16 13:41:40 -04:00
swung0x48 db8b347952 [Fix] (Remote): preserve server ownership and wait for ring retirement 2026-09-16 13:39:50 -04:00
swung0x48 cc0d56e464 [Docs] (Disaggregated): record P5 final gate stop and scoped control evidence 2026-09-16 13:39:46 -04:00
swung0x48 9606466ab6 [Merge] (MG_Remote, P5b): combine d1 draw migration with f1 i1 t2 and r2 2026-09-16 13:30:01 -04:00
swung0x48 5443bced9a [Merge] (P5b): integrate t2 and reconcile all migrated emitter families 2026-09-16 13:27:15 -04:00
swung0x48 2deca994b2 [Merge] (P5b): integrate i1 alongside f1 and r2, preserving the combined slot partition 2026-09-16 13:25:44 -04:00
swung0x48 a523d6195a Merge branch 'p5b/r2' into p5b/integrate-codex 2026-09-16 13:24:41 -04:00
swung0x48 d50183cb1a [Fix] (IntegrationTest): assert actual staging backpressure in the small ring lane 2026-09-16 12:34:33 -04:00
swung0x48 6fa6a925bd [Fix] (CI): make split controls mandatory and isolate runner evidence 2026-09-16 12:34:33 -04:00
swung0x48 fc5b52e456 [Merge] (P5b, t2): merge feat/disaggregated at 37fc4fdb (x2 via x2m, ID-65) into p5b/t2 2026-09-16 12:24:02 -04:00
swung0x48 c831ab0390 [Test] (MG_Test, MG_IntegrationTest, P5b/t2): pin the span order and the accounting fields, the six flipped slots by name, and run the tessellation-capture and buffer-reuse scenarios under inproc 2026-09-16 12:23:57 -04:00
swung0x48 dd293203ca [Feat] (MG_Remote, P5b/t2): emit the four stream-output span rows, the XFB object bind and the patch parameter, and give each ServerVerbSink body its backend call 2026-09-16 12:23:57 -04:00
swung0x48 c240557fe0 [Feat] (MG_Pipe, MG_Remote, P5b/t2): add kCapBackendOwnsXfbCapture, publish it from the server table EndTransformFeedback slot, and answer the capture-ownership probe from it 2026-09-16 12:23:57 -04:00
swung0x48 fbe17d06d6 [Test] (MG_IntegrationTest, P5b d1): keep GuiBatchScenario out of the d1 split lists - past its draws it stops at Fatal{UnmigratedVerb, "MemoryBarrier"}, which is i1's slot to flip and register 2026-09-16 12:23:35 -04:00
swung0x48 e564939615 [Feat] (MG_Remote, P5b d1): flip the nineteen indexed / instanced / multi-draw / indirect draw slots to class B on draw_vbo - the emitters plan the record from the GL call and the bound element / indirect / parameter buffers, stage a client index array as the kDrawHasUserIndices span, refuse +CLIENT_INDICES / +CLIENT_COMMANDS / +INDEX_OFFSET by name, and the sink dispatches every shape to the backend slot the monolith calls (a base vertex of 0 is DrawElements, never DrawElementsBaseVertex with 0: ANGLE has no glDrawElementsBaseVertex) 2026-09-16 12:10:38 -04:00
swung0x48 e352e9a6c9 [Merge] (P5b, i1): merge feat/disaggregated at 37fc4fdb (x2 via x2m, ID-65) into p5b/i1 2026-09-16 12:10:25 -04:00
swung0x48 a72a96d85f [Test] (MG_Test, MG_IntegrationTest, P5b): pin i1 seven class-B slots and the served compute program, and arm 24 inproc lane entries whose results only exist if the records crossed 2026-09-16 12:10:09 -04:00
swung0x48 b82c63a9ec [Feat] (MG_Pipe, DirectGLES, P5b): move GetProgramForDispatch FATAL to BARRIER_PULLED now that compute crosses, and skip the copy-image shadow mirror under a non-monolith transport 2026-09-16 12:10:01 -04:00
swung0x48 734287ac56 [Feat] (MG_Remote, P5b): emit i1 seven image/compute/barrier/copy-image/storage-block slots as class B and give each ServerVerbSink body the backend call the contract names 2026-09-16 12:09:55 -04:00
swung0x48 fe5ac006f8 [Merge] (Remote): bring f1 up to the integrated P5 wire ledger 2026-09-16 11:50:00 -04:00
swung0x48 7ffa4998ab [Feat] (Remote): migrate f1 clear copy and mipmap verbs under inproc 2026-09-16 11:49:41 -04:00
swung0x48 37fc4fdb0f [Merge] (MGPipe, P5): land x2 via x2m - the E2 draw-drop control, R-10 maxrec, the small-ring wrap counters (ID-65) 2026-09-16 11:32:23 -04:00
swung0x48 bd11ab189f [Merge] (MGPipe, P5): land x2 - the E2 draw-drop control, R-10 maxrec and the small-ring wrap counters, resolved against j0 (ID-65) 2026-09-16 11:30:12 -04:00
swung0x48 94ce2ee778 [CI] (apk): pin cmdline-tools and drop the removed 'tools' package so Setup Android SDK stops failing before the build 2026-09-16 11:28:37 -04:00
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 579118a1b3 [Test, CI] (scripts/ci, workflows): E2's draw-drop control requires the SSIM red AND the library's dropped-record count, E3(a) requires its private-log line as well as the pixels, and the smoke red-check finally perturbs the split control (ID-65) 2026-09-16 11:09:21 -04:00
swung0x48 a7b43cbbcd [Test] (MG_IntegrationTest): exit gate E3(e) drives the small ring past its own capacity and asserts the wrap, and both split arms of TriangleScenario publish R-10's maximum record bytes against the ring's cap (ID-65) 2026-09-16 11:09:15 -04:00
swung0x48 9f52878313 [Feat] (MG_Remote, MG_Util): the wire ledger - maxrec/maxcap/ringwraps/ringpads/ringwaits on the MGPipe stats line and at session teardown, MOBILEGL_IPC_E2_DROP_DRAW beside the clear drop, and E3(a)'s named persistent-map-push-disabled line (ID-65) 2026-09-16 11:09:09 -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
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