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
3fb97cc536
Merge branch 'feat/disaggregated' into p5/v1
2026-09-16 06:42:04 -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
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
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
swung0x48
f858841c5f
[Fix] (MG_Remote, GLImpl): gate the transform-feedback reconciliation on the transport like every other new site, and give the unwritten writeback wait a named Fatal instead of an empty body
2026-09-11 15:48:28 -04:00
swung0x48
3dadd4c1e0
[Fix] (DirectGLES): make the extent hostBase is good for a parameter of the flush ladder, so tier 1's widening refusal is live code the moment a SEG_STAGE snapshot is narrower than the queued range
2026-09-11 15:48:28 -04:00
swung0x48
0598cfffe0
[Fix, Test] (MG_Pipe): replace the always-false live-host-writes wire, which no producer can survive, with the one statement that stays true - the bit is the buffer family's
2026-09-11 15:48:28 -04:00
swung0x48
950968044c
[Fix] (MG_Impl, PipeFill): make buffer_subdata_resident declare the live-host-writes bit - ApplyBufferWrite assigns it, so a silent content record writes false over a live write map
2026-09-11 15:48:28 -04:00
swung0x48
3a5e26215d
[Fix] (MG_State, BufferObject): publish the live-host-writes bit on the RISING edge too - the only content record a coherent persistent map emits is the push, and a draw-clean answer skips the ensure the push lives in and then latches it
2026-09-11 15:48:28 -04:00
swung0x48
6e858fa3f6
[Docs] (MG_Remote): record R-16 and R-17 - the fourteen reply-slot rows and why the barrier makes them cost no block, and the two flag spaces being disjoint by translation
2026-09-11 15:44:24 -04:00
swung0x48
ab112eb0ed
[Fix, Test] (gen_pipe, Wire): stop the generated header comment inviting a stamp of the call flags into the ring's framing flags - three of the six bits mean something else there, and only one of the three is masked on one path
2026-09-11 15:44:24 -04:00
swung0x48
d55e37337b
[Fix] (MG_Pipe): give the four acceptance calls the kReplySlot their applier entry points have always answered through, so the flags table is the single thing that sizes the reply pool and the decoder posts against
2026-09-11 15:44:24 -04:00
swung0x48
f33e5d6090
[Fix] (MG_Remote, Transport, Client): SEG_STAGE is w1's encoder-local linear allocator and not a ring - drop the stage RingProducer and its power-of-two rounding, pin the stage cursor triple dead, require a wrap filler to carry kind kRingPadRecordKind as well as the flag it shares with kVarTail, and name every kRecBorrowSlot sighting
2026-09-11 15:41:56 -04:00
swung0x48
949ed1f037
[Test, CI] (tools/trace_replay, workflows): give retrace-split the negative control it was cloned without, match ConfigLoader's whole INFO sentence rather than a KEY=VALUE an env dump also prints, read the three-arm names file the identity step was writing and discarding, and refuse an unknown manifest key that silently empties a CI matrix
2026-09-11 15:30:17 -04:00
swung0x48
8b425a9718
[Test] (MG_IntegrationTest): arm the split lanes from the running process - MG_Config::Transport, ClientSession::Active() and ImplementedVerbCount() - instead of from a grep over c0's stub messages, which a one-word rename disarmed into eight green monolith runs, and require the encoder's record ordinal to move before any split case may pass
2026-09-11 15:30:17 -04:00
swung0x48
79b7866511
[Fix] (MG_Remote, Wire): close R-2 arm 4 over MGHostSpan, stop the producer writing SEG_STAGEs consumer cursors, bound the stage-mark queue, and answer a reply slot only for rows the catalogue flags kReplySlot
2026-09-11 15:20:15 -04:00
swung0x48
3f1eaee787
[Test] (MG_Test, Wire): pin the seven findings of fix round one - the frozen CapsSnapshot field ids, the verifiable frame with a null union, the borrowed slot that is not handed back, the peer's own mapping, the backwards-watermark abort, the lagging watermark and the refused reply geometry
2026-09-11 15:04:54 -04:00
swung0x48
8024dab9f4
[Fix] (MG_Remote, Client): fold the null union payload into both handshake guards, close the server session on every Start failure that ran after Accept succeeded, and drain teardown against the producer's own published seq rather than a watermark the ring lets lag
2026-09-11 15:04:54 -04:00
swung0x48
da8f030459
[Fix] (MG_Remote, Transport): the knob names the ring and the segment adds a control page, a backwards watermark is Fatal rather than a permanent hang, RetireThrough stops at a borrowed slot, the inproc peer gets a real second mapping through dup and Adopt, and the producer remembers its own published seq
2026-09-11 15:04:54 -04:00
swung0x48
ed60c06b98
[Fix] (MG_Remote, Protocol): mark CapsSnapshot's four retired fields deprecated instead of deleting them - a deletion FREES the vtable slot, so callMask took slot 14 from an [int] vector as an 8-byte ulong with no ABI-major bump and a fingerprint that mixes struct sizes rather than the schema
2026-09-11 15:04:54 -04:00
swung0x48
c5c12b489a
[Fix] (MG_Remote, Server): delete CallMask's two derived defaults and make an unset mask Fatal{UnsetCallMask} - the consumer default read MGPipeGetResourceOps, a process-wide global, so under inproc the server answered R-8's client-side gate with the client's own registration and under spawn it collapsed to P2's mask, dropping five P4a families with the dirty flags cleared anyway and the lane green
2026-09-11 15:04:54 -04:00
swung0x48
3aa48bccdc
[Test] (CI): run the field-ownership generator's --check and --self-test in pipe-gates - R-7.1 rests on a generated table that nothing in CI diffed, and the build assertion only catches an unclassified row
2026-09-11 14:53:39 -04:00
swung0x48
126bd9aa62
[Test] (MG_Test, Pipe): pin the applier's own clear on the path a spawned server takes, and four named fields the stamp case must not re-derive from the table it is testing
2026-09-11 14:53:39 -04:00
swung0x48
3cb2c4aa9a
[Fix] (MGPipe): make the applier's own verb-boundary clear mandatory rather than inherited from the client's fill, and name the argument in an argument-narrowed abort so the two halves of the pixel store do not print the same line
2026-09-11 14:53:39 -04:00
swung0x48
c16411aa33
[Feat] (MG_Pipe, scripts): refuse an OMITTED stamp row and not only a typo - every verb-shaped call now has a row or a named exemption, because a record with no stamp point applies under the previous verb's serial, mask and name
2026-09-11 14:53:39 -04:00
swung0x48
fb70704e74
[Fix] (scripts): assert every field-ownership negative control against its OWN message - one of the eleven was a silent duplicate of another because the harness asked only whether something exited, and the harness now has a control of its own
2026-09-11 14:53:39 -04:00
swung0x48
7ad0ff3c33
[Test] (MG_IntegrationTest): assert which persistent-map arm the scenario landed in through a peek at IsBackendPersistentMapped, not by inferring it from the push byte counter - "the push was never wired" and "the store was adopted" are different defects with different owners and the counter reads the same for both
2026-09-11 14:40:30 -04:00
swung0x48
31de23142f
[Test] (MG_Test, Wire): assert a payload crosses byte for byte including the bytes spelled Pad - a codec that normalised one would silently delete the fields P5 and b1 have just put there
2026-09-11 14:37:43 -04:00
swung0x48
db1a5dbc27
[Test] (MG_Test): one case per GPU-write row, the lifted live-host-writes pin from both sides, the widened INVALIDATE_RANGE edge and a non-zero persistent-map-push
2026-09-11 14:31:46 -04:00