swung0x48
1ec54d876f
[CI] (scripts/ci): read every DirectGLES source in the memo purity gate
2026-10-16 04:47:34 -04:00
swung0x48
7f7c596213
[Docs] (docs/Disaggregated, docs/MobileVA, docs/Performance, MG_Impl/Pipe, MG_IntegrationTest/Scenarios, MG_State/GLState, MG_Test/Buffer, MG_Test/Wire, scripts/ci): name the renderer's new files
2026-10-16 04:28:53 -04:00
swung0x48
265966a15d
[Docs] (MG_Backend/DirectGLES, MG_Backend/MGPipe, MG_Backend/Record, MG_Impl/Pipe, MG_IntegrationTest, MG_IntegrationTest/Harness, MG_IntegrationTest/Scenarios, MG_Pipe, MG_Pipe/generated, MG_Remote, MG_Remote/Client, MG_Remote/Server, MG_Remote/Transport, MG_Remote/Wire, MG_State/GLState, MG_Test/Pipe, MG_Test/Wire, MG_Util/Metrics, MobileGL, scripts, scripts/ci): cite symbols, not line numbers, in the shortened files
2026-10-15 22:27:15 -04:00
swung0x48
73d4511bc1
[Chore] (MG_Backend/DirectVulkan, MG_Benchmark, MG_Benchmark/Buffer, MG_Benchmark/Container, MG_Benchmark/Driver, MG_Benchmark/Program, MG_Benchmark/ShaderCache, MG_Benchmark/Transpile, MG_Gbm, MG_IntegrationTest, MG_IntegrationTest/Harness, MG_Test, MG_Test/Backend, MG_Test/BackendLoader, MG_Test/Buffer, MG_Test/EGLState, MG_Test/Framebuffer, MG_Test/Gbm, MG_Test/Pipe, MG_Test/Pipeline, MG_Test/Program, MG_Test/Purity, MG_Test/Query, MG_Test/SelfTest, MG_Test/ShaderTranspiler, MG_Test/State, MG_Test/Swapchain, MG_Test/Texture, MG_Test/Util, MG_Test/VertexArray, MG_Test/Wire, scripts, scripts/ci, tools/cts, tools/device_bench, tools/spikes, tools/trace_replay): extend license headers to shell, CMake, Java and GLSL
2026-10-15 10:15:40 -04:00
swung0x48
5370d917d0
[Docs] (.github/workflows, MG_Backend/DirectGLES, MG_Backend/DirectVulkan, MG_Benchmark/Driver, MG_Impl/EGLImpl, MG_Impl/Pipe, MG_IntegrationTest, MG_IntegrationTest/Harness, MG_IntegrationTest/Scenarios, MG_Pipe, MG_State/GLState, MG_Test, MG_Test/Pipe, MG_Test/Program, MG_Test/SelfTest, MG_Test/ShaderTranspiler, MG_Test/Swapchain, MG_Test/Wire, MG_Util/Async, MG_Util/BackendLoaders, MG_Util/SelfTest, MG_Util/ShaderTranspiler, MobileGL, scripts/ci, tools/spikes, tools/trace_replay): name drivers and techniques instead of external projects
2026-10-15 10:15:37 -04:00
swung0x48
c4fb9397cb
[Chore] (MG_Backend/DirectGLES, MG_Backend/DirectVulkan, MG_Impl/EGLImpl, MG_Impl/Pipe, MG_IntegrationTest/Harness, MG_IntegrationTest/Scenarios, MG_Pipe, MG_Remote, MG_Remote/Client, MG_Remote/Server, MG_Remote/Transport, MG_Test/Backend, MG_Test/EGLState, MG_Test/Wire, scripts, scripts/ci, tools/cts, tools/device_bench, tools/spikes, tools/trace_replay, tools/wgl-smoke): add the license header where it is missing
2026-10-15 10:15:34 -04:00
swung0x48
fdb93e9e65
[Fix] (CI): treat a process that exits mid-read of its /proc stat as gone in the TCP server fixture
2026-10-14 18:59:27 -04:00
swung0x48
5980349b33
[Fix] (CI): the parity gate sanctions Magma's spawn-only AdoptTier0 fallback case
2026-10-13 08:02:36 -04:00
swung0x48
9ff97c2e7e
CI: the control smoke test's stub ctest follows E1 to ApplierReset as well.
2026-10-09 06:52:45 -04:00
swung0x48
9eed5a27d7
CI: the E1 wait-boundary control follows its unit case to ApplierReset (GenerateMipmap went kWaitNone in 2fbcc224), and ScenarioIsolationScenario's four verify-split entries are listed as reaching no verb.
2026-10-09 06:41:45 -04:00
swung0x48
80c6aa39da
[Fix] (CI): the spawn-lane parity gate sanctions the inproc-only .SyncValidation. tail, as it does .Mip3DValidation.
2026-10-07 22:20:45 -04:00
swung0x48
92da2486c5
[Fix] (CI): the latch-site gate's DrainRing pattern accepts the drain's poll-head parameter.
2026-10-07 22:13:20 -04:00
swung0x48
781a7446c4
[CI] (Magma): the run-ahead and cache sync-validation gates turn on submit-time validation, without which a cross-submission hazard is never reported (a broken upload barrier now reds the run-ahead gate).
2026-10-07 19:49:33 -04:00
swung0x48
f7360fe210
[CI] (P13): the memo-purity gate drops its last allow entry and the fatal census holds at 70 abort sites.
2026-10-06 21:58:43 -04:00
swung0x48
9fa61b84a5
[Build] (P13 W7): the library links from module OBJECT targets along the ratchet's partition, and a server-only link check target must link without the frontend modules.
2026-10-06 19:50:31 -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
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
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
6cb6fa88f1
[CI] (P13): the skip census keys parameterised cases without their printed GetParam bytes
2026-10-06 05:28:55 -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
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
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
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
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
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
swung0x48
0a6af63655
[Feat] (P11 PAIR): the PairBind control message - the client's nonce and which of its two connections this is, the first frame on each - with the control revision 3 -> 4 and its pin
2026-09-29 10:19:59 -04:00