D3DIM execute-buffer QueryInterface
2026-09-22. P5 COM correctness/shared-implementation follow-up.
Reproduced fault and fix
ExecuteBuffer QueryInterface delegated to family 0 in the old routing core. That branch recognized only the first word of IUnknown and had no execute-buffer IID match. A valid own-interface query returned E_NOINTERFACE; the new regression failed on that exact result before the fix.
The handler now uses the shared child QI core with its own interface family. Only complete IUnknown and IDirect3DExecuteBuffer IDs are supported. Both return the object's identity with one reference acquired; rejection clears output without AddRef. Null IID/output returns E_POINTER. One acquired GUID span supports nonadjacent sparse pages and is released before ownership changes; output writes remain sparse-safe.
The IID is from Microsoft's SDK d3d.h. No Wine source was used. Execute-buffer creation, payload storage and specialized Release/cache cleanup are unchanged.
Coverage
The former light-only regression is now
test/test-d3dim-child-query-interface.js. One harness runs both light and
execute-buffer cases: own and IUnknown identity, a complete material IID
rejected, twelve GUID corruptions per type, nulls/output clearing, balanced
references through public Release, stack guards, and 64 sparse input/output
cycles per type with balanced temporary span storage.
Both child cases and the material QI regression pass against current source. Fragment, ESP, epilogue, logical-operand, quiet-inventory, duplicate, tier and 211-method interface-spec gates pass. Counts remain 119 duplicate groups / 476 members and 243 manual quiet handlers + 22 metadata entries.
This fixture creates bare COM objects, not populated execute buffers. It does not certify creation failure rollback, payload/cache teardown, invalid non-null pointers, native Win98 error precedence, browser gameplay or a full build. Those are not implied by passing QI/reference tests.
Next audit
Vertex-buffer QI still accepts every IID. Device QI matches only the first GUID word. Texture QI has an accept-current-interface fallback plus surface ABI/identity concerns. DirectDraw/D3D parent retention remains separate.