swung0x48
737ef5e980
[CI] (P13 W6e): the W6c-e unit removals are logged and retired from the skip census, and the link ratchet falls to 58 symbols.
2026-10-06 18:58:24 -04:00
swung0x48
8bc39c79d2
[Test] (P13 W6d): the unmigrated-emulation list is empty, the dead storage-view format case goes, and Espryt's bring-up check is the colour-attachment cap alone.
2026-10-06 18:20:50 -04:00
swung0x48
e822c933c9
[CI] (P13 W6b): the frontend-arm unit removals are logged and retired from the skip census.
2026-10-06 16:56:32 -04:00
swung0x48
740dd301b9
[CI] (P13 W6a): the skip census retires the deleted frontend-arm cases and the AbaControlHandles lane, and records the retired live-host-writes wire's skip.
2026-10-06 16:21:17 -04:00
swung0x48
7fb18840dc
[Refactor] (P13 W5 S8): MOBILEGL_BUILD_RECORD_ARM is folded away - the record arm is unconditional - and retired_switches keeps it from coming back.
2026-10-06 15:03:11 -04:00
swung0x48
23593c9f15
[Feature] (P13 W5 S7): the record arm is built into every library, so monolith without MG_Remote runs it too.
2026-10-06 13:30:09 -04:00
swung0x48
851251671c
[CI] (P13 W5 S4): an include-closure probe keeps the record core clear of MG_Remote and the wire serializer.
2026-10-06 13:13:39 -04:00
swung0x48
ed7800a550
[CI] (P13 W5 S4): the latch-site map follows the record verbs into RecordVerbSink.cpp.
2026-10-06 12:37:43 -04:00
swung0x48
b965a18e15
[CI] (P13 W5 S2): the wire declines audit reads MOBILEGL_BUILD_RECORD_ARM as a build-selecting opener.
2026-10-06 10:52:27 -04:00
swung0x48
534f14e3f2
[Feat] (P13 W5 S1): the fatal vocabulary moves to MG_Pipe and the record arm gets its own fail / latch seam.
2026-10-06 09:48:58 -04:00
swung0x48
a32ca0017d
[Test] (P13 W3b): the HandleRecycle Handles lanes run their leak cases again on the fixed-on mask, and the retired residual row leaves the census baseline
2026-10-06 08:14:28 -04:00
swung0x48
6cb6fa88f1
[CI] (P13): the skip census keys parameterised cases without their printed GetParam bytes
2026-10-06 05:28:55 -04:00
swung0x48
883b861490
[CI] (P13 W3b): the restored unit-memo probe is back in the skip-census baseline
2026-10-06 04:23:44 -04:00
swung0x48
1d380a6ede
[CI] (P13 W3b/W3c): retire the removed lanes' and tests' names from the skip-census baseline
2026-10-06 04:12:33 -04:00
swung0x48
4d2a244382
[CI] (P13 W3b): link ratchet at 171, the VAO attribute-version getter left the server image
2026-10-06 04:12:17 -04:00
swung0x48
daf2b44c71
[Test] (P13 W3b): a GL-level successor for the borrowed-slot unit-memo probe
2026-10-06 04:10:51 -04:00
swung0x48
e2c9098648
[Refactor] (P13 W3c): delete ResidualValueBlock, op 46 becomes a retired declined row and the verify comparator owns the capability check
2026-10-06 04:04:51 -04:00
swung0x48
a4d10dd9b6
[CI] (P13 W3b): retired-switch hygiene gate and the fatal census at its new floor
2026-10-06 04:04:50 -04:00
swung0x48
5e547add80
[CI] (P13 W3b): memo-key purity has no exempted arm once the legacy memos are gone
2026-10-06 04:04:47 -04:00
swung0x48
a0bff7cee1
[Refactor] (P13 W3b): backends read MG_Pipe::gPipeInputs directly, MGB_CTX and its switch header are gone
2026-10-06 04:04:46 -04:00
swung0x48
55de98a006
[Build] (P13 W3a): MOBILEGL_PIPE_PUSH is no longer an option, the macro stays 1 until W3b
2026-10-06 04:04:42 -04:00
swung0x48
9f05e66591
[CI] (P13 W2): retire the pull control library, the transport control runs the push library without MG_Remote
2026-10-06 04:04:41 -04:00
swung0x48
c6cb5dea68
[CI] (P13 W1): skip census baseline from run 37425662897, deduped name sets and a quiet self-test
2026-10-06 04:04:39 -04:00
swung0x48
5ff33cbb77
[CI] (P13 W1): push-without-MG_Remote control and zero-MG_Remote check, monolith means no transport, skip census
2026-10-06 02:39:49 -04:00
swung0x48
d409731632
[Fix] (CI): restore hosted builds and pin CMake 3.31.10
2026-10-05 10:41:03 -04:00
swung0x48
039b342b97
[Fix] (CI): separate CPU builds from GPU stages and repair CTest metadata
2026-10-05 10:00:48 -04:00
swung0x48
ee9919ba39
[Fix] (CI): merge Arch WSL runner and prefer it over hosted runners
2026-10-05 09:16:06 -04:00
swung0x48
d8edc8baa2
[Fix] (MG_IntegrationTest): validate specialized controls and classify strict skips
2026-10-05 08:45:28 -04:00
Swung0x48
2d42414667
[CI] (Test): annotate failed ctest entries with their failure lines, since the run logs need a signed-in reader
2026-10-04 07:20:04 -04:00
Swung0x48
78c5f8dae7
[CI] (Census): record Refuse{Recover} as a local refusal; the client declines to redial and there is no peer to tell
2026-10-04 07:20:04 -04:00
swung0x48
58c3d9bde5
[Fix] (P14): latch a lost GPU device per session on Magma and Espryt instead of aborting the whole server
2026-10-02 13:37:58 -04:00
swung0x48
0b314ddae7
[Fix] (P14): serialize sessions on one backend turn and give each client surface its own native surface
2026-10-02 01:38:20 -04:00
swung0x48
4ed1c9cef2
[Feature] (P14): state ownership - multi-session, multi-context, share groups
...
Breaks the one process = one server = one session = one context equation
that the whole stack's correctness used to rest on. Design and per-slice
shape: docs/Disaggregated/design/11-state-ownership.md.
S1 wire: bind_context ring record (opcode 84) announces the current
context at the make-current edge; CreateContext/DestroyContext join the
SurfaceOp control frames; control revision 5 -> 6; the server keeps a
per-session token table and refuses unknown tokens by name.
S2 server: SessionRuntime per session with thread-scoped resolution
(singletons become fallbacks), per-thread gPipeInputs, per-session latch
domains, per-thread segment resolvers; the in-process unix supervisor
serves up to MOBILEGL_IPC_INPROC_MAX_SESSIONS (16) concurrent sessions;
surface mode is declared per session and the display lease refuses a
second on-screen session by name.
S3 frontend: ShareGroupState owns the shared object stores and name
generators (buffer/texture/renderbuffer/sampler/program), GLContext keeps
per-context bindings/errors/container objects; pGLContext becomes
thread-local with a process default context preserving the single-context
world verbatim; eglCreateContext builds a real GLContext and joins the
sharing context's group.
S4 backend: native EGL tuples keyed by (session, context token);
InitDisplayAndContext's unconditional teardown is gone - creating a
second context or surface no longer destroys the first; eglCreateContext
sharing is wired to the native driver; bind_context is the native switch
point.
S5 applier: MGPipeApplierState splits into MGPipeObjectRecords (per
share group) and MGPipeWorkingState (per context), resolved through a
{session, token} registry with a thread-local cached fast path.
Tests: MultiSessionTest (incl. two sessions x two contexts interleaved
with real clear/readback witnesses), ApplierOwnershipTest (with a
null-resolver negative control), ContextStateOwnershipTest,
ServerLoopEglTest native-context liveness; 99/99 of the acceptance set
green on the host build.
Known debts (documented in the design doc): twin registries still keyed
by handle alone, no per-record ContextSlot, process-global backend
generations, MakeCurrent dedup per current binding.
2026-10-01 19:16:41 -04:00
swung0x48
494305381e
[Merge] (P8): integrate wave 2 package MF - the push flush ladder gets dev's Adreno 830 queued-ring-copy guard (FlushPendingRangesFrom, create-instancing x Espryt x monolith 0.870 -> 0.99998 on the Redmi), and both G5 scripts pin the two reviewed ladder bodies under ID-P8-14
2026-09-30 07:12:50 -04:00
swung0x48
c8c4397475
[Merge] (P8): integrate wave 2 package SV - Magma's 3D native mip blit uses one layer, the depth/stencil mip decline gets its tally row, 1D depth mips decline by name, and the wire arm issues glDispatchComputeIndirect natively
...
# Conflicts:
# MobileGL/MG_IntegrationTest/CMakeLists.txt
2026-09-30 06:11:04 -04:00
swung0x48
9c24a14d2b
[CI] (scripts, P8-MF): pin G5's tenth row as well and re-pin both flush ladders on the reviewed post-fix bodies (ID-P8-14) - dev f973008c moved FlushPendingRangesNow past every base ref CI passes (the Adreno 830 queued ring copy) and ac9ab078 mirrors it into FlushPendingRangesFrom; both scripts' self-tests now run the pin-precedence and one-token controls on both ladders
2026-09-30 05:45:10 -04:00
swung0x48
0222852b94
[Fix] (Espryt, P8-SE): a spawn / tcp server publishes the default framebuffer's depth/stencil format (it has no frontend placeholder; the case leaves pending-fix for the three arms); the server CPU mip arm declines by name (generate-mipmap-store-declined) instead of filtering a store the driver wrote over, and E's refused-readback knob reaches it (CpuMipRefused. entries); WireIndirectDrawScenario case 3 runs on the Espryt split arms; copy-image-shadow-mirror goes and unmigrated_emulation_sites.py holds PipeCatalogueTest's list to the call sites
2026-09-30 03:44:29 -04:00
swung0x48
2edb2aa82a
[Test] (P8-SV): WireMipShapeScenario (3D chain on both backends x every arm, 1D depth decline on Magma split+spawn, the 3D chain under the validation layer inproc) and WireIndirectDispatchScenario (both backends x every arm, Magma gated .IndirectDispatch.), the MipmapDepthStencilAspect tally in F1's depth/stencil decline case, WireDeclinePeek, and the two parity rows
2026-09-30 03:44:03 -04:00
swung0x48
39cd8fb73b
[Merge] (P8): integrate package E - a texture readback the Espryt driver refuses is answered from the split server's staged store, which now follows glCopyImageSubData (FollowCopy, client-box merge, sticky driver-written mark, named decline texture-readback-store-declined); CopyImageStoreReadbackScenario on both backends x every arm plus the extent-scoped StoreRead knob; the dead CopyImageSubData+RENDERBUFFER latch goes (census 79 -> 78)
2026-09-30 02:17:51 -04:00
swung0x48
24b8aef616
[Fix] (P8 A): exempt F's Magma-only F1WireScenario.GenerateMipmapWithoutAShaderArmShapeDeclinesAndKeepsTheSession on DirectGLES as single-backend - it landed with P8-F after A's exemption table was cut, skips on Espryt like its F1Wire decline siblings, and split_coverage.py named it missing on the merged head
2026-09-29 23:41:10 -04:00
swung0x48
8133cd52ae
[Merge] (P8): integrate package A - register the monolith-only cases on split/spawn/tcp (P8Coverage.cmake, five server-knob tcp supervisors), gate them with split_coverage.py and its exemption table, pin the tcp supervisor's Vulkan env
2026-09-29 23:37:12 -04:00
swung0x48
f823422bfa
[Fix] (Espryt, P8-E): a texture readback the driver refuses is answered from the server's staged store, which now follows glCopyImageSubData (FollowCopy, client-box merge, sticky driver-written mark, named decline); CopyImageStoreReadbackScenario on both backends x four arms plus the extent-scoped store-read knob; the dead CopyImageSubData+RENDERBUFFER latch goes (census 79 -> 78)
2026-09-29 22:43:02 -04:00
swung0x48
c7a14ed790
[Test] (P8-F): give the mip shader-shape decline its own .ShaderMipDecline. tail - spawn_lane_parity.py holds each server-knob tail to exactly one case, and sharing .ShaderMip1. named two
2026-09-29 22:37:49 -04:00
swung0x48
976fbe4cd4
[Test] (P8-A): register the monolith-only integration cases on the split, spawn and tcp arms (P8Coverage.cmake: 246 ambient cases, five server-knob lanes each on its own tcp supervisor), retire the ClientSideIndices and GuiBatch exclusions, and gate the rest with split_coverage.py and its exemption table
2026-09-29 22:14:31 -04:00
swung0x48
b32140e614
[Feat] (MG_Remote, P11 B2): T0 is the default - an unset MOBILEGL_IPC_ADOPT_TIER asks T0 (ask 0x80) and falls back to T2 quietly (MGLOG_D, still counted: client T0Fallbacks, server T0Refusals), while an explicit 0 keeps every named line; revision 5's schema comment and pin fixed up
2026-09-29 20:15:29 -04:00
swung0x48
2522f1803c
[Test] (P11 B2): T0 protocol on the host - the Offer inbox (late, out of order, stale, missing) over both aux channels, the whole T0 path on a stand-in platform, A1's two handshake-Fatal cases rewritten as named fallbacks, revision 4 refused by name, AdoptTier0 lanes on the shared-segment arms and the allow switch through spawn
2026-09-29 17:50:50 -04:00
swung0x48
590d74525d
[Feat] (MG_Remote, P11 B2): T0 behind MOBILEGL_IPC_ADOPT_TIER - control revision 5 (LinkTerms.adoptTier ask), kCapAdoptT0 granted at the first native bind after the backend's POST, the AHardwareBuffer Offer on the aux socket matched to its map_persistent record by seq, named T2 fallbacks instead of A1's handshake Fatal, the server allow switch, done-no-bytes CPU reads
2026-09-29 17:40:56 -04:00
swung0x48
f636a4cdae
[Test] (P11 M2): the link ratchet records TextureObjectWithOneMipmap::GetStorageDirtyFootprint - dev 9524c688's new virtual on the placeholder vtable UniformManager already reaches (171 -> 172)
2026-09-29 12:26:10 -04:00
swung0x48
bd2e43ede3
[Test] (P11 M2): dev's two Magma scenarios on the split arms - both on Espryt's three arms, OversizedRecordingSplitScenario on Magma's three (and pinned to a 64-draw budget on split and spawn, where the server reads it), DescriptorPoolGrowthScenario's census cases on Magma's split arm only; the split-recording arming reads both role logs and dev's pinned lane holds its log's RESOURCE_LOCK, and the census cases count the sets the wire arm holds between its descriptor rewinds
2026-09-29 12:20:15 -04:00
swung0x48
35e1c861a3
[Docs] (P11): ruling ID-P11-12 on pairing by PairBind nonce and revision 3 -> 4; B0 F2 corrected - the product TCP path already paired by identity, the defect was unix endpoints and the one-shot TCP server; the TCP fixture comment no longer names AcceptPair
2026-09-29 10:20:53 -04:00