Commit Graph

  • 1f953c09ea [Test] (MG_Test, Wire): pin the session pair - twenty thousand records across two real threads, one case per watermark rule, the kRecPad rule against the session's own counter, the reply slot's seq stamp and a shutdown whose join is bounded at five seconds so a lost wakeup fails red swung0x48 2026-09-11 14:13:20 -04:00
  • 558fb210dc [Feat] (MG_Remote, Client, Server): the Hello/Welcome/CapsSnapshot handshake and both sessions' construction and teardown - the ABI assertion runs in Accept before a record is decoded and is Fatal{AbiMismatch} rather than a downgrade, and the two doorbell accessors live on the session rather than on ITransport swung0x48 2026-09-11 14:13:20 -04:00
  • 7c25130d5a [Feat] (MG_Remote, Protocol): delete CapsSnapshot's four redundant trailing fields and give CallMask, the server's backend type and the ABI fingerprint the carriers they never had - tableSlotMask could not address the 69-slot table its comment named and the two compute limits already ride inside dynamicParameters swung0x48 2026-09-11 14:13:20 -04:00
  • 817e1c40cf [Feat] (MG_Remote, Transport): the ring-owning session pair over ShmSegment - four segments, the five watermarks with their first real writers, the SEG_REPLY slot pool and the SEG_EVENT reverse channel, with the doorbell pair taken from the transport and the ring capacity derived as the largest power of two left after the control page swung0x48 2026-09-11 14:13:07 -04:00
  • 97df377381 [Docs] (Disaggregated): record the field-ownership generator and correct the two stale 61-field lines - the generated assertion has said 63 since P1 swung0x48 2026-09-11 14:12:32 -04:00
  • 96cc6a14af [Test] (MG_Test, Pipe): pin table 2 at runtime - the stamp rule, the four-way read verdict, rsp, the strict abort and the cancelled sticky exemption swung0x48 2026-09-11 14:12:32 -04:00
  • bc55da75fb [Feat] (MG_Pipe): give MGPipeUnmigratedEmulation teeth under a real transport - one function body arms five call sites, and the arm is the transport rather than the build so a split build's own monolith lanes stay green swung0x48 2026-09-11 14:12:32 -04:00
  • d709ef3ee9 [Feat] (MGPipe, MG_Util): stamp the poison generations at the server's verb boundary and withdraw what only the client can answer, so a barrier-pulled read is counted as rsp instead of reading fresh by accident swung0x48 2026-09-11 14:12:32 -04:00
  • bb6848c8d1 [Feat] (MG_Pipe, scripts): generate the PipeInputs field-ownership table - 63 fields plus the seven sticky forwards in exactly one of four classes, RECORD-SUPPLIED derived from the emitted list rather than asserted, and a field in none of them stops the generator swung0x48 2026-09-11 14:12:32 -04:00
  • f265f0a8e1 [CI] (workflows): add build-linux-split, integration-split and retrace-split - the first configurations in this workflow that compile MG_Remote at all, each asserting by nm that the option really took swung0x48 2026-09-11 14:00:14 -04:00
  • 55ed1c8784 [Test, Tools] (tools/trace_replay): give the retrace harness a SPLIT variant whose output and artifact directories carry the variant too, and assert the transport resolved - a pull library under MOBILEGL_TRANSPORT=inproc replays OpenRA at ssim 1.000, so the picture cannot be the gate swung0x48 2026-09-11 14:00:14 -04:00
  • eafa47ea46 [Test] (MG_IntegrationTest): add the Triangle and PersistentCoherentMap scenarios and the DirectGLES.Split. lanes - the split family skips naming c0's remaining signature stubs rather than going green against the monolith path it would otherwise run swung0x48 2026-09-11 14:00:14 -04:00
  • 91d0c6b06f [Fix] (MG_Remote, Wire): let an encoder caller omit a tail whose own count is zero - Count == 0 is a legal record for every kVarTail row and a required placeholder entry would be a trap swung0x48 2026-09-11 13:59:51 -04:00
  • 1af5e31f3b [Test] (MG_Test, Wire): drive encoder to ring to decoder to applier for every flag class, both double-tailed rows, DrawVbos conditional tail and each R-2 Fatal arm swung0x48 2026-09-11 13:58:06 -04:00
  • d17c6c225c [Feat] (MG_Remote): MGPCapss two blob serializers and the ABI fingerprint - sparse format-capability tables, length-prefixed renderer strings, every decoder refusing truncation and trailing bytes swung0x48 2026-09-11 13:58:06 -04:00
  • 713d1b51ac [Feat] (tools/gen_pipe, MG_Pipe): hand MGPipeApplyWireRecord to the installed decoder once its generated per-opcode bounds gate has passed, behind MOBILEGL_BUILD_DISAGGREGATED so the pull build gains no symbol swung0x48 2026-09-11 13:58:06 -04:00
  • aa263d2169 [Feat] (MG_Remote): the G3 record codec - encoder, decoder, SEG_STAGE allocator and R-2s honesty arms, with the per-opcode tail cross-check MGP_WIRE_CHECK_BOUNDS cannot see swung0x48 2026-09-11 13:58:06 -04:00
  • 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 swung0x48 2026-09-11 13:23:46 -04:00
  • 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 swung0x48 2026-09-11 13:23:46 -04:00
  • d965b29899 [Docs] (MG_Remote): CONTRACT-P5.md - the encoding, byte-carrier, field-ownership and role-ownership tables every P5 package is held to swung0x48 2026-09-11 13:05:05 -04:00
  • 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 swung0x48 2026-09-11 13:05:05 -04:00
  • 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 swung0x48 2026-09-11 13:05:05 -04:00
  • 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 swung0x48 2026-09-11 13:05:05 -04:00
  • 274250b9ac [Build] (CMake): add MOBILEGL_BUILD_DISAGGREGATED_INPROC, make DISAGGREGATED imply PIPE_PUSH, and list the new MG_Remote Wire/Client/Server sources swung0x48 2026-09-11 13:05:05 -04:00
  • 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 swung0x48 2026-09-11 13:05:05 -04:00
  • 8eea6ccf2a [Fix] (MG_Pipe, gen_pipe): export the per-opcode call flags and give GetCaps and CreateSamplerState the kHasBlob their payloads have always owned swung0x48 2026-09-11 13:05:05 -04:00
  • 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 swung0x48 2026-09-11 11:37:08 -04:00
  • 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 swung0x48 2026-09-09 00:41:46 -04:00
  • 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" swung0x48 2026-09-09 00:16:35 -04:00
  • 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) swung0x48 2026-09-09 00:09:30 -04:00
  • 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 swung0x48 2026-09-08 23:59:48 -04:00
  • 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 swung0x48 2026-09-08 23:55:44 -04:00
  • 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 swung0x48 2026-09-08 21:39:37 -04:00
  • 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 swung0x48 2026-09-08 21:11:11 -04:00
  • 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) swung0x48 2026-09-08 20:50:25 -04:00
  • 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 swung0x48 2026-09-08 20:29:55 -04:00
  • 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) swung0x48 2026-09-08 20:29:24 -04:00
  • 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) swung0x48 2026-09-08 20:28:56 -04:00
  • 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) swung0x48 2026-09-08 20:28:29 -04:00
  • 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) swung0x48 2026-09-08 20:15:55 -04:00
  • 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 swung0x48 2026-09-08 18:24:08 -04:00
  • 33a7c554c5 [Test] (Pipe): erase only the cube face a respecify names, not every pending upload that shares its level swung0x48 2026-09-08 18:11:04 -04:00
  • 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 swung0x48 2026-09-08 18:11:04 -04:00
  • 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 swung0x48 2026-09-08 18:11:04 -04:00
  • afcee801cc [Fix] (Test): read the DIRECTION of the subsystem refusal, so the two dependency lanes stop accepting each other's sentence swung0x48 2026-09-08 18:11:04 -04:00
  • 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 swung0x48 2026-09-08 18:11:04 -04:00
  • 77088a681d [Fix] (Magma): drop the per-kind ABA wrapper no build ever evaluates and say why the constexpr table and the knob stand alone swung0x48 2026-09-08 18:11:04 -04:00
  • 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 swung0x48 2026-09-08 14:58:25 -04:00
  • 4714561f85 [Fix, CI] (Pipe): order the byte-identity listing, prove every protected region reaches its closing brace, and pin the include-closure probe count swung0x48 2026-09-08 14:26:02 -04:00
  • 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 swung0x48 2026-09-08 14:26:02 -04:00
  • 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 swung0x48 2026-09-08 14:26:02 -04:00
  • 0ba404caec [CI] (Pipe): gate that the unpack ring, the attachment permutation, the depth-stencil sampling core and the format caveat did not move swung0x48 2026-09-08 13:22:17 -04:00
  • ab4384a007 [Test] (Pipe): switch P4a's four object subsystems off against the shipping mask and record the texture upload shape the two counters make visible swung0x48 2026-09-08 13:22:17 -04:00
  • b969ffa585 [Test] (Espryt): assert a glTexParameter on a texture that only ever was an attachment, an image binding or a copy endpoint reaches the driver swung0x48 2026-09-08 13:22:17 -04:00
  • 11044b990f [Test] (Pipe): reproduce the texture, framebuffer, renderbuffer, sampler, view and program handle ABA through public GL and prove the pre-rekey guards are what stops it swung0x48 2026-09-08 13:22:17 -04:00
  • 4399976942 [Fix] (Espryt, Pipe): carry the bound sampler state's CSO handle into the sampler twin's sync and mix the texture-bind generation into the shader-image shutter - the twin resolved a content-addressed record by an identity handle, and an image re-bind that only moved the level never re-emitted the set swung0x48 2026-09-08 18:46:58 -04:00
  • 868fdff6a6 [Fix] (Espryt): scope the two sampler-window refusals to a draw that actually touches a texture unit, because an empty window is the correct emission for one that touches none swung0x48 2026-09-08 17:35:11 -04:00
  • aeee64dec7 [Fix] (Espryt): flip every remaining seam-shaped decline site loud now that the client half has landed, and record against each mask-shaped one that it was left silent deliberately swung0x48 2026-09-08 17:15:07 -04:00
  • 19d6b9253a [Fix] (Espryt): resolve the framebuffer twin by handle, ask the applier's bound handles whether one framebuffer is bound to both bindings, and make an undescribed binding say so instead of declining in silence swung0x48 2026-09-08 17:15:07 -04:00
  • dd4d799677 [Refactor] (Espryt): call package D's four family wrappers instead of this package's temporary latches, and take wire v3's framebuffer accessors in their landed pointer form swung0x48 2026-09-08 17:15:07 -04:00
  • 3c9d2bb3d1 [Refactor] (Espryt): index every decline site with the flip it takes at the verification round, and invalidate rather than stamp the forced framebuffer bind swung0x48 2026-09-08 14:30:13 -04:00
  • 64fe696567 [Fix] (Espryt): make a half-described framebuffer applier and a mis-keyed program record say the seam line, and refuse a short global-constant block instead of falling back to the frontend block swung0x48 2026-09-08 14:30:08 -04:00
  • 6b5fb7373e [Fix] (Espryt): unbind the sampler on every touched unit the pushed window does not describe instead of leaving an earlier draw's object on it swung0x48 2026-09-08 14:30:02 -04:00
  • dab3004b69 [Fix] (Espryt): sweep every image unit the driver holds rather than only the pushed window, and say the seam line when a record names another texture at the validate point swung0x48 2026-09-08 14:29:56 -04:00
  • 0ab8185d4a [Refactor] (Espryt): read the applier's framebuffer records through one accessor, carry D-K2's fourth row into the temporary latches and tick the declining epoch arm as a miss swung0x48 2026-09-08 14:29:51 -04:00
  • 1e27597041 [Refactor] (Espryt): name every emulation that cannot survive a split and take the format decisions from the descriptor swung0x48 2026-09-08 13:15:16 -04:00
  • 56b23661f2 [Refactor] (Espryt): bind samplers and the program's resources from the applier's resolved sets and keep the raw-depth-fetch substitution on the server swung0x48 2026-09-08 13:10:39 -04:00
  • f14a935f87 [Refactor] (Espryt): bind shader images from the pushed set and leave the format recast and the split view where they are swung0x48 2026-09-08 13:04:23 -04:00
  • 8c4c324fcd [Refactor] (Espryt): drive the per-draw texture sync from the pushed sampler-view set and give a read-only attachment its texture parameters swung0x48 2026-09-08 12:58:52 -04:00
  • 9e2872432c [Refactor] (Espryt): resolve the current framebuffers from the pushed records and keep the shadowed default bind and the missing fast path exactly as they are swung0x48 2026-09-08 12:51:41 -04:00
  • 150bc4292a [Fix, Test] (MG_Impl, Pipe): gate the four P4a families on D-K2's dependency bits as well - Espryt refuses bit 10 without bit 11 or bit 7, but the client had already emitted and the acceptance-cleared level flags left its legacy arm nothing to upload swung0x48 2026-09-08 18:35:01 -04:00
  • 9aa17cf7e6 [Fix] (Espryt): stop calling a texture that was never glTexParameter-ed a malformed record - ParamsSerial 0 means no set_texture_params was ever applied, so there is no built-in sampler to push swung0x48 2026-09-08 17:40:46 -04:00
  • d4254ff023 [Fix] (Espryt): take the sampler CSO record from the handle the caller carries - a content-addressed record can never be named by the twins own identity handle, so every bound sampler objects parameters were refused on the integrated tree swung0x48 2026-09-08 17:30:39 -04:00
  • bb07005fb7 [Fix] (Espryt): close the nine re-review minors - the framebuffer refusal now claims only what it can, the adoption refusals have a reachable caller, the carried region offsets and the sub-data resource byte are cross-checked, the remint-pull marker fires only when a level is owed, and a record-empty point the frontend still holds is refused swung0x48 2026-09-08 17:30:33 -04:00
  • 55990c982e [Fix, Test] (Pipe): spell the skip twin's line continuation as a real newline - the previous commit left a literal backslash-n and the pull build of the suite did not compile swung0x48 2026-09-08 17:47:01 -04:00
  • 351baba677 [Test] (Pipe): give the no-consumer texture gate case its pull-build skip twin so the pull and push test-name sets stay equal swung0x48 2026-09-08 17:46:05 -04:00
  • f96f22ebbd [Fix] (MG_Pipe, MG_Impl): gate the four P4a families on a backend having registered MGPipeResourceOps - Magma emitted, the applier accepted, and the acceptance-cleared dirty flags left its legacy path nothing to upload swung0x48 2026-09-08 17:37:37 -04:00
  • 9eae68b516 [Fix] (Espryt): drop three #undefs for macros that were never defined and correct the attachment-version note that still called the record-driven walk another package's work swung0x48 2026-09-08 15:33:22 -04:00
  • 8233e1b546 [Test] (Espryt): assert an attachment-only texture's parameters reach the driver with no sampler view, prove every P4a kind's slot returns at a moved generation, and stop one refusal message claiming what it cannot tell swung0x48 2026-09-08 15:28:10 -04:00
  • c0d5078298 [Fix] (Espryt): consume the carried region offset, refuse a record whose regions disagree about the level pitch, stop reading the frontend border form on the handle arm, and drop a nested guard that repeats its parent swung0x48 2026-09-08 15:21:44 -04:00
  • 532abce9fc [Refactor] (Espryt): resolve framebuffer attachments and the four cross-object masks from the record's surfaces, adopting each twin by the handle the record carries, and drop the registry release helper nothing calls swung0x48 2026-09-08 15:18:36 -04:00
  • 9102cff811 [Fix] (Espryt): allocate texture storage from the pushed descriptor, honour a metadata-only respecify's sticky mask, and arm the server's own re-dirty in the applier's pending set instead of a model the handle arm never reads swung0x48 2026-09-08 15:12:04 -04:00
  • 6013097a13 [Fix] (Espryt): decode the sub-data target's upload half through the contract's accessor, read the depth-stencil aspect and surface-kind constants c0c minted, and refuse bit 10 without bit 11 swung0x48 2026-09-08 15:03:46 -04:00
  • 6e2e4c295d [Fix] (Espryt): resolve the framebuffer record by the handle it names and refuse before binding, so a DSA blit or clear configures the framebuffer it is about to write instead of one that never got its attachments swung0x48 2026-09-08 15:01:00 -04:00
  • 4c8ae0c53f [Test] (Espryt): drive the sampler-view table through the handle arm and prove every P4a death notice is idempotent swung0x48 2026-09-08 13:17:36 -04:00
  • c64913307a [Refactor] (Espryt): take the sampler parameters and the program artefacts from the applier instead of the frontend objects swung0x48 2026-09-08 13:14:27 -04:00
  • 6b7475fea4 [Refactor] (Espryt): sync the driver framebuffer from the pushed record and answer the read buffer from the resolved read surface swung0x48 2026-09-08 13:10:44 -04:00
  • e4208541e7 [Refactor] (Espryt): allocate renderbuffer storage from the pushed descriptor and keep the deferred out-of-memory report where it is swung0x48 2026-09-08 13:04:50 -04:00
  • 24c54bf4d7 [Refactor] (Espryt): drive texture storage, parameters and uploads from the pushed descriptors and take the upload strides from the record swung0x48 2026-09-08 13:02:12 -04:00
  • 86cfc379de [Refactor] (Espryt): key the texture, renderbuffer, framebuffer, sampler and program twins on the client-minted handle instead of the frontend object swung0x48 2026-09-08 12:40:37 -04:00
  • 782075ce78 [Fix, Test] (Pipe): reconcile the framebuffer and texture emit suites after the client replay - the union of wire's and the client's cases in one file, spelled against the contract's Named enumerator swung0x48 2026-09-08 16:54:50 -04:00
  • 5663e0ca32 [Docs] (Pipe): restate what the records-reach-the-applier predicate is for now that the constant is set - the A/B arm it keeps compilable, and the two places a discarded call may not be treated as an accepted one swung0x48 2026-09-08 15:58:50 -04:00
  • e540ffce17 [Test] (Pipe): pin the region tail against what the applier stored, the dirty flag surviving a refusal, the metadata respecify an immutable texture needs, the per-object Named record and the six minors swung0x48 2026-09-08 15:25:51 -04:00
  • c134634919 [Fix] (GLImpl, Pipe): republish a texture parameters when a write lands on its built-in sampler and give every DSA entry point that hands a framebuffer over by name a record for it swung0x48 2026-09-08 15:25:51 -04:00
  • cc1e68f136 [Fix] (Pipe, State): take the texture and framebuffer families through the contract own birth hooks, wire the texture subsystem bit, hand the applier the region tail it was promised and clear a level dirty flag only where the record was accepted swung0x48 2026-09-08 15:25:51 -04:00
  • fcfdc41380 [Feat, Test] (Pipe): wire the framebuffer subsystem bit and pin the resolved read surface, the sticky bind mask, the level-shadow strides and the union-box/region-list invariant swung0x48 2026-09-08 13:04:49 -04:00
  • b5f4660bcb [Feat] (Pipe): push the bound framebuffers with a resolved read surface, inline attachment formats and a content hash that covers the draw-buffer array swung0x48 2026-09-08 12:54:00 -04:00
  • 0cd0a0846f [Feat] (Pipe, State): mint a {slot, gen} handle for every texture and renderbuffer and publish its create, respecify, parameters and accumulated sub-data as pipe calls swung0x48 2026-09-08 12:50:53 -04:00
  • 92dffb81b4 [Test] (Pipe): drive the sampler cache's two unaccountable-release counters - a handle it never handed out and a second release of a reference only one holder owed swung0x48 2026-09-08 15:57:24 -04:00
  • 79b581984b [Fix, Test] (Pipe): read a forked refusal drive's log from the offset it had instead of unlinking the file - once a case initialises the library the log is already open, so the child was writing into a deleted inode and the parent read nothing swung0x48 2026-09-08 15:41:00 -04:00