swung0x48
|
91900bdc5e
|
[Test] (P11 B2): the unset knob on a stream and on a no-AHardwareBuffer shared-segment session - T2, no W/I fallback line, the fallback counted; the 0x80 ask accepted and 0x81 refused
|
2026-09-29 20:15:29 -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
|
e44d6ac7da
|
[Docs] (P11 B2): CONTRACT-P11 - a buffer deleted while bound to an indexed point: the defect, the fix, Magma's behaviour before it, the tests with their red-once, and the G1 delta
|
2026-09-29 19:44:08 -04:00 |
|
swung0x48
|
8571e0c001
|
[Test] (P11 B2): DeletedBoundBufferScenario - a buffer deleted while bound to a storage, uniform, atomic-counter or transform-feedback point, its slot reused, then a dispatch and a draw, on monolith and Split/Spawn/Tcp for both backends; and the one-process arena pair as a regression
|
2026-09-29 19:32:19 -04:00 |
|
swung0x48
|
7784d6bbf7
|
[Fix] (Magma): a uniform block declared at an empty binding point reads a zeroed block on the monolith arm instead of dereferencing a null buffer, as the wire arm already does
|
2026-09-29 19:32:19 -04:00 |
|
swung0x48
|
4aec5621a8
|
[Fix] (MG_State, P11 B2): glDeleteBuffers moves the bind-point generation of every indexed target it unbinds, and a transform-feedback object swap moves it too - the server's window no longer names a deleted buffer's handle after its slot is reused
|
2026-09-29 19:32:19 -04:00 |
|
swung0x48
|
4c02279f22
|
[Docs] (P11 B2): CONTRACT-P11 B2 - the Espryt split/spawn itest entries now pin MOBILEGL_ITEST_REQUIRE_GPU themselves
|
2026-09-29 19:12:46 -04:00 |
|
swung0x48
|
e869d18ce8
|
[Test] (P11 B2): pin MOBILEGL_ITEST_REQUIRE_GPU=1 on every Espryt split/spawn itest environment, as the Magma and Espryt TCP lists do - a handshake-time Fatal fails there instead of skipping as a ctest pass
|
2026-09-29 18:57:04 -04:00 |
|
swung0x48
|
9d1e788597
|
[Docs] (P11 B2): CONTRACT-P11 B2 - M2 staying green on Espryt is consistent with the driver holding its own reference, not verified
|
2026-09-29 18:44:25 -04:00 |
|
swung0x48
|
ce5753c883
|
[Docs] (P11 B2): CONTRACT-P11 B2 - the tier table that replaces A1's shared-segment Fatal, revision 5, the Offer and its thread, POST, the staged-copy audit, lifetime, CPU reads, host and device gates with their red-once
|
2026-09-29 18:24:53 -04:00 |
|
swung0x48
|
5e65907d63
|
[Test] (P11 B2): RemoteClientAdoptT0.KnobTwoIsTodaysT2WithNoT0Line - the default asks 2 and neither side settles, imports or logs T0 even where the stand-in platform could run it
|
2026-09-29 18:20:25 -04:00 |
|
swung0x48
|
98bf1925aa
|
[Test] (P11 B2): LargeArenaAdoptionScenario - a draw still queued when the arena is rewritten or respecified keeps the bytes it was issued against (no readback between the two draws, so an in-place write or an early free shows)
|
2026-09-29 18:06:48 -04:00 |
|
swung0x48
|
17f1c0b59b
|
[Tool] (P11 B2): extmem probe --hold-ms - the T0S child keeps its AHardwareBuffer locked while the parent holds both imports, for the dmabuf memory calibration
|
2026-09-29 17:50:50 -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
|
7cde55b1c1
|
[Feat] (Magma, P11 B2): import a T0 store through VK_ANDROID_external_memory_android_hardware_buffer as a wire buffer (external VkBufferObject), serial-gated release, done-no-bytes readback, and the sustained-lock POST on the renderer's device
|
2026-09-29 17:50:50 -04:00 |
|
swung0x48
|
2a69f61c88
|
[Feat] (Espryt, P11 B2): import a T0 store with glBufferStorageExternalEXT as the adopted twin - no staged copy, server writes queued GPU-ordered, CPU readers on the import's coherent map, fence-gated release, re-import after a context loss, and the sustained-lock POST in a throwaway context
|
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
|
b57276b88a
|
[Tool] (extmem_probe, P11 B2): route mode - the probe serves in the render server's place (-Pmobilegl.extmemProbeAsServer) and --route-client sends a held-lock AHB over B1's fd: pair, directly on aux and through a socketpair hop
|
2026-09-29 16:44:37 -04:00 |
|
swung0x48
|
ac25e3323a
|
[Tool] (extmem_probe): build inside the API-26 trace APK - memfd_create through syscall() below API 30, the two Vulkan 1.1 calls through vkGetInstanceProcAddr below API 28
|
2026-09-29 16:31:52 -04:00 |
|
swung0x48
|
96881f639c
|
[Build] (P11 A3): MOBILEGL_BUILD_EXTMEM_PROBE / -Pmobilegl.buildExtmemProbe packages tools/spikes/extmem_probe as libMobileGLExtmemProbe.so in the trace flavour
|
2026-09-29 16:31:52 -04:00 |
|
swung0x48
|
16ea23c927
|
[Tool] (extmem_probe): marker/args-file mode for the trace APK exec hook, --regions-at-end, and the T0S sustained-lock rows (Vulkan copy/fill + GL compute on a never-unlocked client AHB)
|
2026-09-29 16:31:52 -04:00 |
|
swung0x48
|
b9b14c4775
|
[Docs] (P11): status page - the two handed-on dev bugs are merged, the gate row points at the B1 and M2 rulings
|
2026-09-29 16:14:34 -04:00 |
|
swung0x48
|
37c7aede31
|
[Docs] (P11): ruling ID-P11-16 on B1 (fd: endpoint, token broker pairing at hand-off, app_process helper, per-peer apply affinity, the HyperOS battery requirement, the device pass), the B1 debts, the status page, the phase README and the roadmap row
|
2026-09-29 16:14:18 -04:00 |
|
swung0x48
|
64b5794bc9
|
[Docs] (P11 B1): CONTRACT-P11 B1 - under the EOF Hello wait a second client slower than 2 s sees a send failure rather than Refuse{Busy}, and the unix-reach argument is the device's
|
2026-09-29 16:10:45 -04:00 |
|
swung0x48
|
ce4dca2835
|
[Docs] (P11 B1): CONTRACT-P11 B1 - the rebased head's device pass: rd12 shm vs tcp on both routes, Magma openra re-measured clean, the 10 s slow start and the plugin flavour
|
2026-09-29 16:06:30 -04:00 |
|
swung0x48
|
df826f426f
|
[Docs] (P11 B1): CONTRACT-P11 B1 - the broker pairs at hand-off, a paired unix session waits for its Hello until EOF (the decision and its file:line), the lone-prime guard, the supervisor's announced core as the one source, and the follow-up gates
|
2026-09-29 15:03:52 -04:00 |
|
swung0x48
|
7ccb920ad2
|
[Feat] (Plugin, P11 B1): the broker presents the PairBind pair at hand-off (PairBindFrames, the encoder's bytes) and answers v2 with that flag and the apply core its supervisor announced; the helper passes MOBILEGL_IPC_FD_PAIRED=1 on, and Java no longer re-derives the reserved core
|
2026-09-29 15:03:52 -04:00 |
|
swung0x48
|
582adb0dd6
|
[Test] (P11 B1): the broker's PairBind templates against the encoder, a pair presented at hand-off whose Hello comes 5 s later, a pair presented only at program start refused by name, and the reserved core on lone-prime, symmetric and unreadable topologies
|
2026-09-29 15:00:30 -04:00 |
|
swung0x48
|
578795c84d
|
[Feat] (MG_Remote, P11 B1): pairing at hand-off - the fd: endpoint presents no PairBind when MOBILEGL_IPC_FD_PAIRED=1 says the broker did, names the server's refusal when its own PairBinds arrive too late, and a paired unix session waits for its Hello until EOF instead of 10 s
|
2026-09-29 15:00:30 -04:00 |
|
swung0x48
|
9af4c8aefd
|
[Feat] (MG_Remote, P11 B1): the reserved apply core never takes a lone prime core - several prime cores give the lowest, one gives a big core beside it or none, and the log names which - and the supervisor announces the core it reserves on stdout at start-up, the one source the broker relays
|
2026-09-29 15:00:30 -04:00 |
|
swung0x48
|
5a97eb8d1b
|
[Docs] (P11 B1): CONTRACT-P11 B1 - anchor the evidence paths to ~/w7/notes/p11/evidence/b1 and the report
|
2026-09-29 14:47:31 -04:00 |
|
swung0x48
|
fc427a14d6
|
[Docs] (P11 B1): CONTRACT-P11 - the external-client route (helper, token broker, fd: endpoint), the token rule and the named refusals, the apply-thread policy by peer and plane with its selection measurements, the keep-alive setting users must make, the ROM dependence and the gates
|
2026-09-29 14:47:31 -04:00 |
|
swung0x48
|
54e7c92cf4
|
[Feat] (Plugin, P11 B1): the broker hands the helper the core the server reserves for the session's apply thread and the helper execs the program through taskset on every other core (--keep-affinity opts out), so a client the scheduler would put there is not starved
|
2026-09-29 14:47:31 -04:00 |
|
swung0x48
|
1abddf0d00
|
[Test] (P11 B1): ApplyThreadPolicy - every row of the auto table by peer and plane, the Redmi topology, the shapes with no prime pair to split, explicit masks, spins and unrecognised text
|
2026-09-29 14:47:31 -04:00 |
|
swung0x48
|
0819f9d410
|
[Feat] (MG_Remote, P11 B1): the apply thread's auto affinity and spin chosen per session from the peer's dial mode and data plane - a dialled-in shared-segment client leaves the apply thread only the lowest prime core, stream, forked and in-process peers keep every big core
|
2026-09-29 14:47:31 -04:00 |
|
swung0x48
|
952a1ca4a7
|
[Tool] (P11 B1): trace flavour gate tooling - package the retrace CLI as libMobileGLRetrace.so (packageRetraceExe) and run an external client as a child of the app kept in front (mobilegl_exec_argv)
|
2026-09-29 14:47:31 -04:00 |
|
swung0x48
|
bd05e061fc
|
[Feat] (Plugin, P11 B1): same-device external clients - the exported token-checked broker that connects twice to the server's own endpoint and answers every request, the app_process helper that execs the program on the pair, a private broker listener beside a TCP-only supervisor, and the copyable launch command on the server screen
|
2026-09-29 14:47:31 -04:00 |
|
swung0x48
|
23a9470a28
|
[Test] (P11 B1): the fd: endpoint end to end against a real server process after two bare connects, its PairBind pair read off the server side, and its named refusals that write nothing
|
2026-09-29 14:47:31 -04:00 |
|
swung0x48
|
53098bc57f
|
[Feat] (MG_Remote, P11 B1): the fd:<control>,<aux> client endpoint - adopt two connected unix sockets a broker opened for this process, refuse by name anything that is not a distinct connected AF_UNIX stream pair, and present the client's own PairBind pair before the Hello, over shared segments
|
2026-09-29 14:47:31 -04:00 |
|
swung0x48
|
76f75f3a0c
|
[Docs] (P11): ruling ID-P11-15 on the M2 dev merge - the scattered-upload fix completed on the split arms, the trim fence re-audited on the split server, the census and ratchet notes; DEBTS closes the two merged dev bugs and takes M2 leftovers
|
2026-09-29 13:46:37 -04:00 |
|
swung0x48
|
d587d394fe
|
[Docs] (P11): zero-copy stays switchable (ruling ID-P11-14) - MOBILEGL_IPC_ADOPT_TIER 2 (default) keeps today shared-memory push, 0 takes the T0 import, and an unusable T0 falls back to T2 with a named line; the server gets its own allow switch
|
2026-09-29 13:45:57 -04:00 |
|
swung0x48
|
de996d539f
|
[Test] (P11 M2): DescriptorPoolGrowthScenario waits for the inproc server to apply every record it emitted before each census read - under run-ahead a census right after the burst's swap read the pools before the burst, or a trim a frame late
|
2026-09-29 13:29:38 -04:00 |
|
swung0x48
|
b4b1825951
|
[Docs] (P11 M2): TextureEmit.h and the applier's accumulation name the one box-only record that is not a whole level - the oversize fallback's withheld cover, a partial box spanning gaps
|
2026-09-29 12:36:41 -04:00 |
|
swung0x48
|
ec5f6ead3f
|
[Test] (P11 M2): TextureEmit.MoreThanKMaxDirtyRectsCollapsesToTheBoxWithRegionCountZero keeps its name and pins the one collapse left - a footprint larger than a record carries falls back to the storage's rect list
|
2026-09-29 12:26:10 -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
|
e2333d98a8
|
[Fix] (Magma, P11 M2): DirectVulkan::GetDescriptorPoolCensus reads the server renderer's pools on the apply thread under inproc (the test probe, between drain batches) instead of racing its growth, rewinds and trims, and answers unavailable on spawn and tcp
|
2026-09-29 12:20:15 -04:00 |
|
swung0x48
|
5c9ad5b499
|
[Test] (P11 M2): RemoteGuards pins GetStorageDirtyFootprint on the apply thread as Fatal{RoleViolation, "texture-legacy-arm"}, beside the rest of the dirty model's rows
|
2026-09-29 12:16:55 -04:00 |
|
swung0x48
|
9145433890
|
[Fix] (P11 M2, Espryt, Magma): the texture emitter carries a level's exact dirty footprint as its regions (dev 9524c688) - a single partial box as one region, only a whole-level write as none - so both servers upload exactly the texels written over GPU content; the applier keeps it exact up to 4096 regions, and Espryt's handle arm applies the storage's box-or-rects cut-offs itself while its texture holds no GPU writes
|
2026-09-29 12:16:55 -04:00 |
|
swung0x48
|
c371599811
|
[Merge] (P11): dev@c14283ee - scattered sub-image writes upload exactly their texels, Magma submits a frame's recording every 16384 draws with backpressure, and Magma grows descriptor pools geometrically and trims a quiet slot whole; the handle arm notes driver-side writes by handle and the wire arm splits recordings and keeps the trim's epoch peak across descriptor rewinds
|
2026-09-29 12:11:37 -04:00 |
|