Skip to content

Feat(d3d12): Complete behavior-backed FL12_2, SM6.7, DXR support, and Incomplete d3d12 DXMT slices - #557

Open
aaf2tbz wants to merge 654 commits into
mainfrom
feat/d3d12-fl12_2-sm67-dxr-completion
Open

Feat(d3d12): Complete behavior-backed FL12_2, SM6.7, DXR support, and Incomplete d3d12 DXMT slices#557
aaf2tbz wants to merge 654 commits into
mainfrom
feat/d3d12-fl12_2-sm67-dxr-completion

Conversation

@aaf2tbz

@aaf2tbz aaf2tbz commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator

Summary

Behavior-backed D3D12/DXGI implementation for Agility SDK 1.619.5, Wine 11.5, and Apple M4/Metal 4. This PR deliberately does not claim full-surface completion or release promotion; capability reports remain bounded by passing behavior evidence.

Current roadmap status

  • Closed bounded gates: Base Phases 0–9, 12, and 13.
  • Active: Phase 14 — no-op classification, conservative-report removal, and unsupported-ledger closeout.
  • Open follow-ups: Phase 7A broader Work Graph tier breadth; Phase 8A native SER ordering, broader OMM, portable DXR data, and independently linked collection merging; Phase 9A incomplete video execution/profile breadth.
  • Also open: Phase 10 protected resources, Phase 11 DSR/scaling, optional 14A preview compatibility, Phase 15 exhaustive/differential/game coverage, and Phase 16 reproducible release delivery.

Implemented and behavior-proven

  • Phases 0–5: 145 interfaces / 537 methods, provider and ABI contracts, COM lifecycle, resources/heaps/residency/sharing, queues/fences/barriers/indirect replay, and the shader/compiler matrix. The required shader inventory records 280/280 observed opcode rows.
  • Phase 6: exhaustive-feasible ordinary graphics coverage for graphics stages/state, ROVs, VRS, conservative rasterization, MSAA, formats, interpolation/barycentrics, view instancing, sample positions, and depth-bias behavior. Broader cross-product coverage remains fail-closed.
  • Phase 7 bounded mesh/Work Graph provider: native mesh/amplification payloads and indirect dispatch; GPU-native Work Graph record inputs, routing, allocation/publication, downstream thread/coalescing/fixed-grid broadcasting, native GPU ICB generation, fan-out, recursion, output arrays, GPU-generated headers, queue/fence dependencies, and malformed-input rejection. The declared 73-row matrix is closed; D3D12_OPTIONS21.WorkGraphsTier is not promoted. Phase 7A is reserved for the broader legal Work Graph topology, node/resource/argument tables, limits/capacity, synchronization, and optional-tier promotion matrix.
  • Phase 8 bounded DXR provider: triangle/AABB acceleration structures, BLAS/TLAS update/serialization/traversal, RayQuery, recursive dispatch, shader tables, state-object collections, stack-size contracts, bounded OMM CONFIG1/OC1 two-state behavior, and truthful non-reordering SER. AddToStateObject supports bounded hit-group alias growth and rejects out-of-domain additions with E_INVALIDARG (0x80070057). Phase 8A now explicitly owns native SER ordering, broader OMM arrays/layouts/subdivision and mixed opacity, OMM compaction/serialization, portable cross-process driver data, and independently linked collection merging.
  • Phase 9: bounded video device/decoder/heap/processor objects and CPU-reference video-process conversions with exact readbacks. Codec execution and broader video profiles remain fail-closed. Phase 9A will finish non-protected VideoToolbox/CoreVideo decode/encode, profiles/levels, references, metadata, P016 and other format breadth, motion/extension interfaces, and asynchronous command behavior; protected-video association is joint with Phase 10.
  • Phase 12: bounded DXGI factory/output/duplication/swapchain behavior, metadata/present state, and shared RGBA8 surface open/validation/readback/lifetime behavior. Invalid shared handles return DXGI_ERROR_INVALID_CALL (0x887a0001).
  • Phase 13: bounded diagnostics/debug/tools/configuration, InfoQueue1 callback/filter lifecycle, manual-write tracking, DRED settings/data boundaries, and explicit protected/DSR rejection behavior.
  • Lifetime hardening: GPU-address lookup now performs synchronized registry-locked AddRef acquisition. Queue replay has thread-local retention through encoding; clean probes release caller resources before execution and verify exact readbacks from four concurrent workers.
  • Phase 14 queue boundary: legal VIDEO_DECODE and GLOBAL_REALTIME queue creation, decode-list creation/Close, and empty decode-list submission now pass without an E_NOTIMPL creation path. Codec execution remains intentionally bounded.

Clean provenance and validation

  • Clean-source snapshot bdc5c0167befdc3deae05a3197cb17a7cbb14ddb rebuilt and staged with source_dirty=false; refreshed command replay, queue timing/VBlank, discard, DXR, shared-surface, and swapchain evidence used matching PE/Unix loader artifacts.
  • Follow-up clean snapshot 65922fa59aec323367540646013790f2dfbcaf3e additionally passes the queue-creation/list-submission matrix with source_dirty=false.
  • Current no-op scan is retained fail-closed at 176 files / 2,168 findings: 40 ABI literals, 174 capability literals, 77 empty bodies, 1,076 placeholder returns, 748 success/zero returns, and 53 unsupported-return findings. Static findings are not treated as support evidence.
  • Validation passes: meson test --print-errorlogs (3/3), contract/interface/full-surface validators, 26 probe-group validations, shader-engine validation, runtime/staging identity tests, and rebuilt probe binaries. Generated build/runtime binaries and caches are intentionally not committed.

Follow-up phase exit requirements

  • 7A: no skipped legal Work Graph topology/resource/argument/capacity/synchronization row; GPU-authored execution and exact clean readbacks; reports derived from the passing tier matrix.
  • 8A: native observable SER ordering; complete promoted OMM layouts, compaction, serialization, and corruption checks; process-independent driver data; independently compiled collection merge/growth after source release.
  • 9A: exact non-protected codec/profile/format/reference/metadata/motion/async behavior and negative validation, with VideoToolbox capability reports limited to clean passing rows. Protected-video claims remain withheld pending Phase 10.

Remaining boundaries

  • Phase 14 promotion remains disabled: the full no-op scan and unsupported ledger still contain open legal-operation classifications, and the manifest-selected aggregate profiles have not yet been replaced by every refreshed clean result.
  • Compiler-object E_NOTIMPL boundaries remain explicit; hardware-secure protected memory, DSR execution, codec execution, broad display behavior, broad Work Graph tier breadth, native SER ordering, broad OMM layouts/serialization, and cross-process opaque Metal sharing are not claimed.
  • Minimum-precision behavior has lowering evidence but D3D12_OPTIONS.MinPrecisionSupport remains NONE; the optional HitObject invoke warmup discrepancy remains unresolved.

References

Full roadmap · Phase 4 command proof · Phase 7 evidence · Phase 6 follow-up

@aaf2tbz aaf2tbz added the checklist-exception Bypass mandatory PR readiness checklist when an item is intentionally not applicable label Aug 28, 2026
@aaf2tbz aaf2tbz changed the title feat(d3d12): complete behavior-backed FL12_2, SM6.7, and DXR support Feat(d3d12): Complete behavior-backed FL12_2, SM6.7, and DXR support and Incomplete d3d12 DXMT slices Aug 28, 2026
@aaf2tbz aaf2tbz changed the title Feat(d3d12): Complete behavior-backed FL12_2, SM6.7, and DXR support and Incomplete d3d12 DXMT slices Feat(d3d12): Complete behavior-backed FL12_2, SM6.7, DXR support, and Incomplete d3d12 DXMT slices Aug 28, 2026
Avery Felts added 30 commits September 5, 2026 01:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

checklist-exception Bypass mandatory PR readiness checklist when an item is intentionally not applicable

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant