Commit Graph

  • d6e52f75c3 [Fix] (Pipe): count the sampler cache's unaccountable releases and its referenced evictions rather than asserting them, and state what a shared reference count, an over-capacity cache and the per-unit reconciliation really cost swung0x48 2026-09-08 15:33:42 -04:00
  • ac09e5b37a [Fix] (Pipe): key the composite resolver's memo on the context as well as the pipeline's GL name - the resolver is a process singleton while GL names are per context, so a make-current released the other context's live composite swung0x48 2026-09-08 15:33:42 -04:00
  • 820d1a60b9 [Fix] (Pipe): stop a make-current disarming the composite resolver's release path - the memo's freshness and the slot's release obligation were one flag, so after the first Reset no signature move ever spoke a delete swung0x48 2026-09-08 14:28:07 -04:00
  • f0f8cab682 [Fix] (Pipe): give the program family its birth-hook entry point and publication latch, invalidate the global-constants key whenever a create_shader_state is re-issued, and count a truncated module tail instead of asserting it swung0x48 2026-09-08 14:28:07 -04:00
  • b2edca2728 [Fix] (Pipe): give the sampler family the birth-hook entry points the contract declares, take the publication latch where its creates go out, and reference-count cache entries so an LRU eviction can never take a handle a standing record still names swung0x48 2026-09-08 14:28:07 -04:00
  • ccde29064a [Test] (Pipe): wire the sampler and program subsystems and pin the padding-proof CSO identity, the program-resolved unit sets, the linked-snapshot stage mask and the composite band's single release swung0x48 2026-09-08 13:14:46 -04:00
  • bc2aad2176 [Feat] (Pipe): resolve a program pipeline into one shader CSO out of the reserved composite band and release it exactly once swung0x48 2026-09-08 12:57:31 -04:00
  • 5a3e9f0857 [Feat] (Pipe): publish a program's per-stage SPIR-V and reflection archive as a shader CSO and its default uniform block as global constants swung0x48 2026-09-08 12:56:40 -04:00
  • 1534cf3784 [Feat] (Pipe): content-address sampler states, mint one sampler view per texture and push the three unit sets behind their own content hashes swung0x48 2026-09-08 12:55:50 -04:00
  • 712c946744 [Fix] (Pipe): retire wire's local Named constant now that the contract mints MGPipeFramebufferTarget::Named swung0x48 2026-09-08 15:08:22 -04:00
  • 8f1eaafa79 [Test] (Pipe): pin what a Named framebuffer record does and does not move, the stale-generation refusal on the per-object table, the two handles it will not store, and that a respecify which redefines no storage carries the mask without eating the texels swung0x48 2026-09-08 14:37:29 -04:00
  • 08922b6f78 [Fix] (Pipe): read a sub-data record's target halves through the contract's own accessors, answer the emitter whether a create or a respecify was accepted, and apply a respecify that restates the stored storage as a metadata update rather than a redefinition swung0x48 2026-09-08 14:32:28 -04:00
  • 711d5c61ba [Feat] (Pipe): key the framebuffer record by the framebuffer handle and resolve the two bindings through it, so a framebuffer that is named but bound to neither can still be described swung0x48 2026-09-08 14:32:28 -04:00
  • 5ab90dec24 [Test] (Pipe): pin a respecify's per-level scope, the sub-data acceptance signal, the upload targets that name no texture and what a release of the object records clears swung0x48 2026-09-08 14:01:33 -04:00
  • 4299acd9c1 [Docs] (Pipe): correct the refusal counter's family list - set_framebuffer_state resolves no record and can only fault - and warn that a texture's built-in sampler handle may outlive its CSO swung0x48 2026-09-08 14:01:33 -04:00
  • 953d73f111 [Fix] (Pipe): give unmap_persistent's kind check the verdict resource_destroy's has, and say why the other three buffer-only calls have nothing to check swung0x48 2026-09-08 14:01:33 -04:00
  • d01439d846 [Fix] (Pipe): release the framebuffer records and the three unit windows with the object records whose handles they hold swung0x48 2026-09-08 14:01:33 -04:00
  • c9958075e8 [Fix] (Pipe): scope a respecify's pending-upload clear to the level it redefines, answer the emitter whether a sub-data record was accepted, and refuse a resource target that names no texture swung0x48 2026-09-08 14:01:33 -04:00
  • ae1a1c503f [Test] (Pipe): pin every P4a record's lifecycle, its bounds gate and what a make-current does and does not clear swung0x48 2026-09-08 13:07:40 -04:00
  • a02f1571f5 [Feat] (Pipe): apply the shader CSO's artefacts and the default uniform block without ever re-linking on the server swung0x48 2026-09-08 12:52:03 -04:00
  • dca3eb868e [Feat] (Pipe): apply sampler states, sampler views and the three unit sets into the server's own working state swung0x48 2026-09-08 12:48:26 -04:00
  • 7408bad9fd [Feat] (Pipe): apply the framebuffer record per bound target and the texture and renderbuffer resource calls into their own slot-indexed records swung0x48 2026-09-08 12:43:58 -04:00
  • e8502a6100 [Fix] (Pipe): key the framebuffer record to the object it names - a fourth Target value for every DSA entry point that hands a framebuffer over by name, and the metadata-only respecify the sticky bind mask needs swung0x48 2026-09-08 14:47:55 -04:00
  • 9ea44389e7 [Fix, Test] (Pipe): widen the two shutters that cannot see their own subject rather than gate their emitters on a second bit - glBindSampler moves only bit 12's generation, and GetCurrentProgram() is null for the whole life of a bound separable pipeline, so bind_sampler_states and the entire program family under-fired swung0x48 2026-09-08 14:30:03 -04:00
  • 17db759891 [Fix] (Pipe): state the four seam encodings the packages were each inventing - the sub-data target packing, the depth-stencil aspect numbers, the surface kind constants and the texture target the surface record grew where its padding was swung0x48 2026-09-08 13:51:39 -04:00
  • 2cb44039b5 [Fix] (Pipe): stop the include-closure gate going green on a compiler it could not find or on a probe count nobody asked for swung0x48 2026-09-08 13:13:21 -04:00
  • 32033d6993 [Fix] (Pipe): land the birth half of the P4a client API behind a publication latch both halves read, gate every emitter on its family's wired constant, raise the sampler view's death notice and count the shader composite band apart from the ordinary slots swung0x48 2026-09-08 13:13:21 -04:00
  • 08192d7266 [Feat] (Pipe): land the P4a contract - the resource target enum, the framebuffer target byte, the texture params' builtin sampler, the sampler-parameter field table, four subsystem bits, seven dirty arms and the program archive codec swung0x48 2026-09-08 12:18:06 -04:00
  • 37da3c3a07 [Docs] (Disaggregated): record the P3a landing - the five-part gate on the finished tree, the three seam defects the real-path round found, the Track H census, the two-device three-arm A/B on Release APKs (pull / P2-only 0x7f / P3a) with the P2 -O0 erratum, DriverBench T1/T2 against the 0x7f arm, the exit-order UAF closure, and the rulings (ID-13/15/17) swung0x48 2026-09-08 10:23:59 -04:00
  • fde5fda3b5 [Fix] (MG_Impl): never destroy the four remaining MGPipe singletons - the vertex-input emitter is on ~VertexArrayObject own death path since C-1 and answered RecordIsPublished out of a freed latch vector swung0x48 2026-09-08 08:20:55 -04:00
  • 6515c8e6ae [Fix] (MG_Backend, MG_Impl): give the MGPipe input blocks leak-at-exit storage - gPipeInputs and the two verify blocks held the last SharedPtr to a deleted-but-bound vertex array, so __run_exit_handlers ran ~VertexArrayObject and ~BufferObject into a pipe and a backend that were already torn down swung0x48 2026-09-08 08:20:55 -04:00
  • d54ec57a5d [Fix] (MG_Impl, MG_Pipe): outlive the exit handlers - a frontend object destroyed by __run_exit_handlers reached the slot allocator, the resource tracker and the applier after their own destructors had run Swung0x48 2026-09-08 07:31:48 -04:00
  • c20e2f2b67 [Fix] (scripts): attribute G7 trip over the failing assertion BLOCKS - gtest prints the field name among the compared expressions, so a per-line match calls a real trip inconclusive swung0x48 2026-09-08 07:21:19 -04:00
  • 680ea63360 [Test] (MG_IntegrationTest): baseline the CSO slot leak case after two warm-up rounds so it measures growth with the churn, not the first draws one-off slots swung0x48 2026-09-08 07:09:25 -04:00
  • 959ca30810 [Test] (MG_Test): declare the new respecify-repair case in ResourceEmitTest pull-skip list so the pull and push ctest name sets stay identical (G2) swung0x48 2026-09-08 07:09:25 -04:00
  • 0bff6875b3 [Fix] (MG_Impl, DirectGLES, scripts): take the cheap review minors - the stale validate-point comment, G7's whole-log trip grep and missing INT/TERM traps, G5's CRLF stdout, and the dangling-twin invariant at its member swung0x48 2026-09-08 07:04:20 -04:00
  • 707bced438 [Fix] (MG_Impl, MG_Pipe, MG_IntegrationTest): close the four cross-package rows nobody claimed - symmetric vertex-input pairing asserts, the counter G10 reads, and the buffer ABA's Magma-only evidence swung0x48 2026-09-08 07:04:19 -04:00
  • 83c8101a9b [Fix] (DirectGLES): record the fp64 narrowing's dropped SyncGpuWrites as a ruled P3a deviation at the site, with its blast radius swung0x48 2026-09-08 07:00:28 -04:00
  • 2a5e0195b8 [Fix] (DirectGLES): stop on an armless P3a subsystem verdict now that every LEGACY_MEMOS=0 lane pins an explicit 0x1ff arm - warning and continuing drew through an unconfigured driver VAO swung0x48 2026-09-08 07:00:28 -04:00
  • afda613bd9 [Fix] (DirectGLES): publish GLESBufferResource::hostBytes under pendingMutex - it was the one member the off-thread SubData/FlushRange arm wrote with neither a lock nor an atomic swung0x48 2026-09-08 07:00:28 -04:00
  • 433f51a065 [Fix] (MG_Impl, MG_Test): publish the create a respecify's handle never got - a buffer born while the resource op table was unregistered had every later respecify refused and drew through id 0 with no diagnostic swung0x48 2026-09-08 07:00:06 -04:00
  • 9ba5d7ba1e [CI] (scripts, test.yml, DirectGLES): hash FlushPendingRangesFrom as G5's eleventh row - a push build compiles no FlushPendingRangesNow, so the tenth row protected text the shipping build never sees swung0x48 2026-09-08 06:54:25 -04:00
  • f0beefa85c [Test] (MG_Test, MG_IntegrationTest): assert a destroyed vertex array returns its CSO slot, on the client allocator and on the DirectVulkan lane where it leaked swung0x48 2026-09-08 06:49:59 -04:00
  • 78ff014547 [Fix] (MG_Impl, MG_State, DirectGLES): give the vertex-elements CSO a backend-neutral death path - the client minted every VAO's slot and only Espryt ever freed one, so under Magma each VAO leaked a slot and a 1.3 KB applier record for the life of the process swung0x48 2026-09-08 06:49:59 -04:00
  • 3e298c9ad1 [CI] (Pipe): add FlushPendingRangesNow's three-tier drain to G5's byte-identical set swung0x48 2026-09-08 03:48:50 -04:00
  • fd6b5bdbf2 [Fix] (Pipe): restore and rebuild on every exit path of the vertex-input negative control, and keep its logs out of the repository swung0x48 2026-09-08 03:48:50 -04:00
  • 8d3cd67b94 [CI] (Pipe): select the P3a subsystem and map-persistent lanes in the only job that unpacks a push build swung0x48 2026-09-08 03:48:50 -04:00
  • f6c7dcd1b6 [Fix] (Pipe): raise the four CSO stats lanes to the P3a subsystem mask so they stop asserting on a configuration nothing ships swung0x48 2026-09-08 03:48:50 -04:00
  • 4ad88214cd [Test] (Pipe): count the map-persistent round trips over a re-specified adopted arena in both arms, now that the VAO rebind fix is in the branch swung0x48 2026-09-08 03:48:50 -04:00
  • 4412cef00c [CI] (Pipe): gate that the buffer pool, the deferred-release drain and the three rings did not move swung0x48 2026-09-08 02:53:58 -04:00
  • 6e9943b36e [Test] (Pipe): assert a regrown adopted store costs one map-persistent round trip per storage definition, not one per draw swung0x48 2026-09-08 02:49:09 -04:00
  • 0cb46fe2bd [Test] (Pipe): reproduce the buffer handle ABA through public GL and prove the pre-rekey guards are what stops it swung0x48 2026-09-08 02:33:11 -04:00
  • 83302ca247 [Test] (MG_Test): scope the pipe resource op table in BufferTest's fixture the way it scopes BufferBackendOps - a push build installs both at bring-up, and these 86 cases are the BufferBackendOps arm's swung0x48 2026-09-08 06:00:46 -04:00
  • 3c55e02797 [Fix] (Espryt): republish the live shadow base on the ensure path so a lazily twinned store is not left with none for the readers that hold no frontend object swung0x48 2026-09-08 05:27:19 -04:00
  • 75ea7ee2df [Fix] (Espryt): ask the frontend object whether the shadow the ensure path is about to upload holds bytes, instead of a descriptor no content call refreshes swung0x48 2026-09-08 05:27:03 -04:00
  • 13b380feda [Fix] (Espryt): resolve an attribute's pushed vertex buffer by its attribute index, not by the GL binding point the wire attribute carries swung0x48 2026-09-08 05:26:48 -04:00
  • ed83424c75 [Fix, Test] (Espryt): pin that a live host map keeps the handle arm's draw probe dirty and that a backwards generation is refused swung0x48 2026-09-08 04:08:56 -04:00
  • df055eab13 [Fix] (Espryt): treat an unbound vertex-elements record as a memo miss and record the applier-reset serial rule the twin's gate depends on swung0x48 2026-09-08 04:08:55 -04:00
  • 511b3752c0 [Fix] (Espryt): make the vertex-input bit require the resource bit and give both new subsystems a named verdict when the knobs leave no arm swung0x48 2026-09-08 04:08:55 -04:00
  • b28058f37c [Fix] (Espryt): walk all 32 attribute slots so a vertex-elements record that shrinks still disables the arrays it dropped swung0x48 2026-09-08 04:08:55 -04:00
  • 14137bc9a6 [Fix] (Espryt): refuse a backwards generation and an out-of-range slot in the handle-keyed GetOrCreate instead of adopting them swung0x48 2026-09-08 04:08:55 -04:00
  • 39933613ae [Fix] (Espryt): re-read the client's shadow base at every use and forget it at the two events that free the allocation it names swung0x48 2026-09-08 04:08:55 -04:00
  • 816373ffd9 [Fix] (Espryt): keep the live-map question in the handle arm's draw-clean probe instead of a record field P3a pins false swung0x48 2026-09-08 04:08:55 -04:00
  • 7047331a41 [Fix] (Espryt): clamp the handle readback to the backend store past its offset, memoise the buffer handle lookup, and write down the two contracts the ops owed their callers swung0x48 2026-09-08 04:08:54 -04:00
  • 7ef8cb93fc [Fix] (Espryt): leave FlushPendingRangesNow as this file's only definition and call the one shared range ladder from both arms swung0x48 2026-09-08 04:08:54 -04:00
  • b97a228cea [Fix] (Espryt): carry the adopted-store respecify's buffer-id generation bump into the handle arm as well swung0x48 2026-09-08 04:08:54 -04:00
  • 3840cf734b [Test] (Espryt): extend the slot-table suite to the buffer kind and pin that its death crosses as resource_destroy swung0x48 2026-09-08 02:55:08 -04:00
  • 68db6db7f8 [Refactor] (Espryt): key the narrowed fp64 vertex stream on the buffer's handle instead of its lifetime id swung0x48 2026-09-08 02:52:21 -04:00
  • cd05de504e [Refactor] (Espryt): drive the driver VAO from the pushed vertex-elements record and retire the wrapping index-slot version and its identity patch swung0x48 2026-09-08 02:49:56 -04:00
  • ce24e2a734 [Refactor] (Espryt): answer a readback through the reverse channel and bump the mutation epoch after it, never before swung0x48 2026-09-08 02:40:47 -04:00
  • 4e44650199 [Refactor] (Espryt): take the buffer ops by handle and payload instead of by frontend object reference swung0x48 2026-09-08 02:36:55 -04:00
  • 9951961d9c [Refactor] (Espryt): give the buffer resource its own {slot, gen} table instead of hanging it off the frontend object swung0x48 2026-09-08 02:26:55 -04:00
  • 31e370bed5 [Test] (Pipe): pin the base instance across a make-current and both of the validate point's exits, the record surviving one, the draw-time bind mask, the create-destroy pairing latch, and the bind-mask table against literals swung0x48 2026-09-08 04:19:01 -04:00
  • 0c55560510 [Fix] (Pipe, State): look the resource handle up on the content paths instead of minting it, publish the bind mask from the two draw-time emitters, pair the destroy with the create's own latch, and state the record-lifetime rule the applier now holds swung0x48 2026-09-08 04:11:25 -04:00
  • f11e78b0a4 [Feat] (Pipe, GLImpl): set the pending base instance from the three glDraw*BaseInstance entry points, through a pull-safe macro beside MGP_FILL swung0x48 2026-09-08 04:01:14 -04:00
  • d9bde13127 [Fix] (Pipe): stop the tracker's context Reset eating the pending base instance the same call is about to read, and clear it on the validate point's no-context exit too swung0x48 2026-09-08 04:01:14 -04:00
  • cc427ec4de [Test] (Pipe): pin the buffer and vertex-input emitters - every attribute field survives the wire, a bare baseInstance change still emits, and the index-buffer bit ignores unrelated writes swung0x48 2026-09-08 03:10:38 -04:00
  • b11bb9650a [Feat] (Pipe): widen the dirty-surface scan to MG_State so the MGP_NOTE_MUTATION sites stop being outside the gate swung0x48 2026-09-08 02:56:40 -04:00
  • 14efd6eb24 [Feat] (Pipe): push the bound VAO's format, its vertex buffers with an explicit baseInstance, and its index binding as their own calls swung0x48 2026-09-08 02:50:53 -04:00
  • 874d1ee77d [Feat] (Pipe, State): mint a {slot, gen} handle for every buffer object and publish its create, respecify, sub-data, flush, readback and destroy as pipe calls swung0x48 2026-09-08 02:40:31 -04:00
  • b9eaa47480 [Build] (Config): bump CoreVersion to 26.9 so GL_VERSION, the POST stamp and the Magma pipeline-cache key follow the 26.09 plugin version swung0x48 2026-09-08 04:42:02 -04:00
  • 42d43af25b [Build] (Android): bump the plugin version to 26.09 - versionCode 26090000 + this month's revision count, versionName 26.09.<hash> swung0x48 2026-09-08 04:41:03 -04:00
  • 12e6bfcf14 [Fix, Test] (Pipe): a make-current is not a teardown - the applier keeps its object records across one, counts every call refused on a record it does not have, advances the two vertex-input serials instead of restarting them at 0, and bounds the slot it grows a record table on swung0x48 2026-09-08 03:37:32 -04:00
  • e6452ce948 [Fix] (Pipe): give both blob-carrying record families one Blob rule, and name the wire views the vertex-elements blob actually carries swung0x48 2026-09-08 03:37:32 -04:00
  • 56366331dc [Fix] (Pipe): account for DispatchIndirect and Query in Coverage.def's target-by-target split, re-sort the new emitted row, and name the P3a default mask in ConfigLoader's include comment swung0x48 2026-09-08 03:37:32 -04:00
  • 355c60b901 [Test] (Pipe): pin the resource record's lifecycle and the buffer sub-data range encoding at both of its bounds swung0x48 2026-09-08 02:36:22 -04:00
  • 6eb0e675ad [Feat] (Pipe): apply vertex elements, vertex buffers and the index buffer into the server's own working state swung0x48 2026-09-08 02:30:12 -04:00
  • 45c8f1a8be [Feat] (Pipe): apply the resource calls into a per-context slot-indexed record and dispatch them to the backend by handle swung0x48 2026-09-08 02:28:12 -04:00
  • 5cb826b01e [Merge] (dev): bring dev@9eae9858 into feat/disaggregated - the adopted-store respecify VAO rebind fix (d7655247) and the persistent-buffer ordering POST probe swung0x48 2026-09-08 03:15:31 -04:00
  • e01c0ccc53 [Feat] (Pipe): land the P3a contract - the handle-shaped resource op table, the applier's resource and vertex-elements records, the two vertex wire views, an explicit baseInstance on set_vertex_buffers, and the first kNeedsAck swung0x48 2026-09-08 02:10:37 -04:00
  • c036900d72 [Docs] (Disaggregated): add the Oppo Mali half of the P2 paired A/B - 16 rows per device, Espryt +8-18% and Magma +10-11% per-thread CPU over the pull baseline, plus the harness single-sample pidof kill recorded as a dev-side follow-up swung0x48 2026-09-08 02:20:24 -04:00
  • 44c2b5cf3a [Docs] (Disaggregated): record the P2 landing - the five-part gate results, the two-device paired A/B protocol with all 16 Xiaomi rows, DriverBench T1/T2 with the CSO control, the push-side counters, and the 2026-09-08 rule that performance is recorded against the pull baseline rather than gated swung0x48 2026-09-08 01:40:51 -04:00
  • 738b289df8 [Fix] (Magma, MG_IntegrationTest): drop the fourth ABA-control consumer, which was unreachable, and the scenario comment its own body contradicts swung0x48 2026-09-08 00:57:49 -04:00
  • a9778eaabe [Fix, Test] (Magma, MG_Test): cover the {slot, gen} generation in a unit test that forces a real slot reuse, and stop claiming the ABA lanes do swung0x48 2026-09-08 00:57:49 -04:00
  • c73ae7d443 [Test] (MG_IntegrationTest): pin MOBILEGL_PIPE_PUSH in the handle-arm lanes swung0x48 2026-09-08 00:40:47 -04:00
  • 55d2af9bd1 [Fix, Test] (Magma, MG_IntegrationTest): make the handle-ABA negative control construct its own collision and defeat the {slot, gen} generation swung0x48 2026-09-08 00:16:00 -04:00
  • 2d690754dd [Tooling] (DeviceBench): verify the two campaign devices' pin profiles and add a pin helper that works on them swung0x48 2026-09-07 23:43:11 -04:00
  • 7a2e256133 [Build] (Android): let the trace APK be built in the push shape for the paired A/B swung0x48 2026-09-07 23:38:49 -04:00
  • bb2a236d5f [Fix] (Pipe): drop the emitter arm for set_pixel_pack_state that spans retired swung0x48 2026-09-07 23:38:10 -04:00
  • 13d7e32b7b [Fix] (Tooling): restore the executable bit on the two device_bench entry points swung0x48 2026-09-06 12:45:58 -04:00