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
|
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 |
|
swung0x48
|
0b847d462a
|
[Feat] (GLImpl): mark the pack PBO after a glReadPixels and the capture targets at glEndTransformFeedback, in place of a stall and an unbounded fence wait
|
2026-09-11 14:31:46 -04:00 |
|
swung0x48
|
d9ade1e7cd
|
[Feat, Docs] (PipeStats, MEASUREMENTS): wire persistent-map-push to the bytes the client ships, rewrite the inventory line that called it unwired, and correct the persistent-map census from 20 to 21
|
2026-09-11 14:31:46 -04:00 |
|
swung0x48
|
142bf921d4
|
[Fix] (DirectGLES): retire the probe's last frontend read under split and refuse tier 1 of the flush ladder when the map and the queued range disagree in either direction
|
2026-09-11 14:31:46 -04:00 |
|
swung0x48
|
13827e376f
|
[Feat] (MG_Pipe): give HasLiveHostWrites its producer, decline every persistent-map acquisition under split, and retire the verify pin that was waiting for exactly this
|
2026-09-11 14:31:46 -04:00 |
|
swung0x48
|
feca3994d1
|
[Feat] (MG_State, BufferObject): under split cut the mapped span into blocks, publish the live-host-writes edge, and let the writeback rather than the request clear a GPU write
|
2026-09-11 14:31:46 -04:00 |
|
swung0x48
|
851a0b6f76
|
[Feat] (MG_Remote, Client): the conservative GPU-write set and the persistent-map block tracker, on the client, where the decision SyncGpuWrites makes synchronously actually lives
|
2026-09-11 14:31:46 -04:00 |
|
swung0x48
|
eaf2b28b8c
|
[Feat] (MG_Pipe): give MGPSubData's pad byte to HasLiveHostWrites - the live-host-writer fact is content-shaped, and MGPResourceDesc's only carrier costs a buffer a spurious reallocation on every map
|
2026-09-11 14:31:46 -04:00 |
|
swung0x48
|
ff2994d9a8
|
[Docs] (MG_Remote): record R-15 and split the emit table's 71 slots into answered-locally, emitted and Fatal, with the forty-one null checks that are really capability probes
|
2026-09-11 13:23:46 -04:00 |
|
swung0x48
|
38f34c13b8
|
[Feat] (MG_Pipe): give resource_respecify's redefinition scope a wire carrier in the descriptor's two existing pad fields, so a per-level glTexImage cannot cross as a whole-resource redefinition and eat every other level's pending upload
|
2026-09-11 13:23:46 -04:00 |
|
swung0x48
|
d965b29899
|
[Docs] (MG_Remote): CONTRACT-P5.md - the encoding, byte-carrier, field-ownership and role-ownership tables every P5 package is held to
|
2026-09-11 13:05:05 -04:00 |
|
swung0x48
|
245ad14e6c
|
[Docs, Test] (MG_Remote, Wire): state the five sequence watermarks, the late-never-early batching rule and the pad-does-not-count rule on RingControl, and pin all three with five cases
|
2026-09-11 13:05:05 -04:00 |
|
swung0x48
|
bf30909aab
|
[Fix, Test] (MG_Test): include the header that defines MOBILEGL_PIPE_POISON - seven emitter suites tested the macro without it, compiled the non-aborting arm, and turned eighteen expected refusals into aborts the moment a disaggregated build armed it
|
2026-09-11 13:05:05 -04:00 |
|
swung0x48
|
a45c0a0e18
|
[Feat] (MG_Remote): land the P5 contract headers and their named-Fatal stubs so all seven parallel packages compile and link on day one
|
2026-09-11 13:05:05 -04:00 |
|
swung0x48
|
274250b9ac
|
[Build] (CMake): add MOBILEGL_BUILD_DISAGGREGATED_INPROC, make DISAGGREGATED imply PIPE_PUSH, and list the new MG_Remote Wire/Client/Server sources
|
2026-09-11 13:05:05 -04:00 |
|
swung0x48
|
7417bfcfbf
|
[Feat] (Config, ConfigLoader): parse MOBILEGL_TRANSPORT and the MOBILEGL_IPC_* family entirely behind the disaggregated option, so the pull build's symbol set cannot move
|
2026-09-11 13:05:05 -04:00 |
|
swung0x48
|
8eea6ccf2a
|
[Fix] (MG_Pipe, gen_pipe): export the per-opcode call flags and give GetCaps and CreateSamplerState the kHasBlob their payloads have always owned
|
2026-09-11 13:05:05 -04:00 |
|
swung0x48
|
0648b0d979
|
[Docs] (Disaggregated): record P4a as landed - the fourteen family calls and six re-keyed kinds, the seven contract corrections and the defect each one closed, the three-arm A/B on a pinned Adreno 830 with active cooling, the upload shape that did not move, and the seam taxonomy the next brief has to carry
|
2026-09-11 11:37:08 -04:00 |
|
swung0x48
|
420c0dbdfd
|
[Fix, Test] (clientfb): heal a texture's record from its first set_texture_params - a texture born while the family was not live (the context's default textures are constructed before the backend registers its consumer) has no record, so the application's first glTexParameter* on texture 0 was refused, silently latched away before m-1 and the retrace census's one residual after it went loud; the params path now publishes the create, the storage if the texture has any, and then the parameters, the respecify path's own self-heal shape
|
2026-09-09 00:43:38 -04:00 |
|
swung0x48
|
35f3468edb
|
[Fix, Docs] (MG_Pipe, clientfb): latch set_texture_params on acceptance, and two comments - the emitter advanced its version latch before the applier answered, so a refused record (no record for the handle, no consumer) was not re-sent until the next glTexParameter* moved a version (final review m-1, audit F-7): the applier now returns whether the record took the parameters and the emitter latches on true, counting and naming a refusal; Config.h's mask table gains the fourth D-K2 row (0x400 requires 0x800), and MGPipeTypes.h's metadata paragraph says what the applier does (replaces the descriptor whole with the client's sticky OR) instead of "ORed, never replaced"
|
2026-09-09 00:16:35 -04:00 |
|
swung0x48
|
03082b8367
|
[Fix, Test] (clientsp, MG_Pipe, Espryt): produce kMGPipeBindSampler and kMGPipeBindShaderImage where D-A4 places them - nothing set either bit, so ImageBindableHint was always 0, the metadata respecify had no live trigger and the remint pull the hint prevents was neither prevented nor counted (final review M-A); the sampler-view resolution notes SAMPLER, glBindImageTexture's state setter notes SHADER_IMAGE at the bind (so the hint precedes the first sync) and the image walk notes it too, both through a contract door since neither may include TextureEmit.h, and Espryt counts every re-mint of storage it already held as tex-remint-pulls (trp= on the stats line, ROADMAP open question 2's number)
|
2026-09-09 00:09:30 -04:00 |
|
swung0x48
|
a7d56a2fe5
|
[Fix, Test] (MG_Pipe, clientfb, clientsp): retire every emitter's entry at the object's death - the six death helpers freed the slot and told no emitter, so a dead-but-unrecycled texture handle still resolved to the freed ITextureObject* (the allocator's generation moves only at the next hand-out) and the drain list kept the level: glTexImage2D; glDeleteTextures; <any verb> called a virtual on freed memory from the next validate point (final review C-2); the helpers now forward to the texture, renderbuffer, framebuffer, sampler-view and shader-CSO emitters between the wire delete and the free, ResolveTexture refuses a dead slot loudly on IsLive, the sticky-mask producers stamp the generation they write under, and the delete-then-use sequence is pinned for every kind, for a recycled slot, and under MALLOC_PERTURB_ on both backends
|
2026-09-08 23:59:48 -04:00 |
|
swung0x48
|
4bb5e082d3
|
[Fix, Test] (clientfb, MG_Pipe): pass the level a texture respecify redefines - every per-level glTexImage*D and glGenerateMipmap grow took the applier's whole-resource arm and dropped the texture's every pending upload, including a level the applier had accepted at an earlier verb with the client's dirty flag already clear, so L0; draw(other); L1; draw(T) read a black level 0 on the handle arm (final review C-1); the storage entry points now state the scope (one level, a chain cut, the whole resource), the emitter builds wire's MGPRespecifiedLevel with the drain's packed target, a per-level call is never deduped on the descriptor, and the applier drops a named level whether or not the descriptor moved
|
2026-09-08 23:55:44 -04:00 |
|
swung0x48
|
f7091eb610
|
[Tools] (trace_replay): let a caller that installed the APK itself skip the harness install - ColorOS confirms every adb install with a dialog whose tap drops adb mid-stream, so the install has to settle outside a run
|
2026-09-08 21:39:37 -04:00 |
|
swung0x48
|
a25b997380
|
[Fix] (Espryt, Integration): compile the in-place storage-redefinition generation bump under MOBILEGL_PIPE_PUSH - it is Espryt code the pull build shares and G1 keeps the pull library byte-identical to the P4a baseline (0/0/2/0 on 419f9941), so the pull build keeps the pre-P4a hole until the bump lands on dev on its own and the F-3 texture cases decline by name there
|
2026-09-08 21:11:11 -04:00 |
|
swung0x48
|
ceb190d1c9
|
[Fix] (Espryt): re-sync a framebuffer's cross-object masks after an attachment's storage is redefined in place - a mutable texture regenerated on its driver id or a renderbuffer re-storaged on its moved neither the FBO memo's frontend versions nor the backend-id generation, so the pre-handle arm kept the widening masks of the storage the object was attached with; the renderbuffer half of the F-3 scenario asserts on the handle arm only, where the resource record closes D-D2 (found by the F-3 scenarios on the 0x1ff, 0 and pull lanes)
|
2026-09-08 20:50:25 -04:00 |
|
swung0x48
|
a6eb3c706f
|
[Docs] (Pipe): the record-field -> setter -> shutter table for the seven P4a dirty bits at the shutter block, and the bit-11 note that an attached object's storage redefinition moves it
|
2026-09-08 20:29:55 -04:00 |
|
swung0x48
|
e9133d9e4e
|
[Fix, Test] (Espryt): drive a unit's sampler through the CSO's own twin on the handle arm - the record arm looked a content-addressed handle up in the identity-keyed registry and could never hit, so only the pre-handle program pass ever put a glBindSampler'd object on the driver (P4a seam F-4)
|
2026-09-08 20:29:24 -04:00 |
|
swung0x48
|
0b1a540e91
|
[Fix, Test] (Pipe): mix the program identity into the shader-image shutter's plain arm - the per-program counter is equal across programs and against no program, so a switch never moved the image window and a buffer image never reached set_shader_images (P4a seam F-2, esprytdraw SD-4)
|
2026-09-08 20:28:56 -04:00 |
|
swung0x48
|
0f82c9d757
|
[Fix, Test] (Pipe): mix the program in use and the params aggregate into the sampler-view shutter - set_sampler_views is resolved for the current program and a glUseProgram alone never re-emitted it, so a texture bound to an empty slot under one program was never synced for the next (P4a seam F-1 / F-1b)
|
2026-09-08 20:28:29 -04:00 |
|
swung0x48
|
54566e806f
|
[Fix, Test] (MG_State, Integration): move the framebuffer aggregate from a texture's or renderbuffer's storage definition - set_framebuffer_state inlines an attachment's format and a respecify while attached left Espryt's handle arm answering its four cross-object masks from the stale copy (P4a seam F-3)
|
2026-09-08 20:15:55 -04:00 |
|
swung0x48
|
c397b99d0d
|
[Fix] (Test): warm the whole content space before the SamplerCso leak baseline, so the case measures the death path and not the content-addressed cache filling up
|
2026-09-08 19:08:12 -04:00 |
|
swung0x48
|
33a7c554c5
|
[Test] (Pipe): erase only the cube face a respecify names, not every pending upload that shares its level
|
2026-09-08 19:08:12 -04:00 |
|
swung0x48
|
82484f615d
|
[Test] (Pipe): pin that the applier's no-consumer belt never fires behind the client's gate, on the backend that has a consumer and on the one that has none
|
2026-09-08 19:08:12 -04:00 |
|
swung0x48
|
1ea5d472e8
|
[Test] (Espryt): take G9's reading while the texture is still attachment-only - the applier's params record, Espryt's applied value and the absence of a sampler view, before the sample that would repair all three
|
2026-09-08 19:08:12 -04:00 |
|
swung0x48
|
afcee801cc
|
[Fix] (Test): read the DIRECTION of the subsystem refusal, so the two dependency lanes stop accepting each other's sentence
|
2026-09-08 19:08:12 -04:00 |
|
swung0x48
|
df94d592f4
|
[Fix] (Test): let a repair that did not put the tree back reach the descriptor control's exit code, from the loop and from the EXIT trap
|
2026-09-08 19:08:12 -04:00 |
|
swung0x48
|
77088a681d
|
[Fix] (Magma): drop the per-kind ABA wrapper no build ever evaluates and say why the constexpr table and the knob stand alone
|
2026-09-08 19:08:12 -04:00 |
|
swung0x48
|
f6a2b9f439
|
[Fix] (Test): stop G7's descriptor control carrying on past a Ctrl-C - latch the interrupt from the trap and from a signalled child, and report it as an interruption rather than as the contract tree's verdict
|
2026-09-08 19:08:12 -04:00 |
|
swung0x48
|
4714561f85
|
[Fix, CI] (Pipe): order the byte-identity listing, prove every protected region reaches its closing brace, and pin the include-closure probe count
|
2026-09-08 19:08:12 -04:00 |
|
swung0x48
|
3049dc1d53
|
[Fix, Test] (Pipe): read the shader composite band's own counters in the composite leak case, arm the ABA flip from anywhere under a backend, match Espryt's exact refusal line and pin the bit-10-requires-bit-11 arm
|
2026-09-08 19:08:12 -04:00 |
|
swung0x48
|
13c02437e6
|
[Fix] (Test): make G7's descriptor negative control able to report success - a patch that compiles into a scoped enum, a verdict its own patcher cannot pollute, and repair state the signal traps can see
|
2026-09-08 19:08:12 -04:00 |
|
swung0x48
|
0ba404caec
|
[CI] (Pipe): gate that the unpack ring, the attachment permutation, the depth-stencil sampling core and the format caveat did not move
|
2026-09-08 19:08:12 -04:00 |
|