Skip to content

Roadmap decision: D3D11 is OUT OF SCOPE (document, do not implement) #4

Description

@Bantarus

Context

The M3.0 milestone prompt's 'RenderContextD3DImpl' parenthetical conflated rive's two D3D backends. This issue records the verified decision to NOT build a D3D11 bridge.

Findings (verified this session)

  • rive HAS a D3D11 backend, but it cannot support zero-copy external-record: RenderContextD3DImpl::MakeContext(ComPtr<ID3D11Device>, ComPtr<ID3D11DeviceContext>, D3DContextOptions) (render_context_d3d_impl.hpp:176, .cpp:411) stores the immediate ID3D11DeviceContext as m_gpuContext and flush() issues every Set/Draw/Dispatch directly onto it (.cpp:1589+), including m_gpuContext->ClearState() (:1595). There is NO command-list parameter, NO FlushDescriptor::externalCommandBuffer (grep: none), and no deferred-context FinishCommandList/ExecuteCommandList path — nothing to ride along in wgpu's stream, and ClearState() would clobber a shared immediate context.
  • DECISIVE: wgpu-hal 27.0.4 has NO dx11 backend (modules: auxil, dx12, gles, metal, noop, vulkan). wgpu's Windows DEFAULT is D3D12. So there is no scenario where the bridge runs on a wgpu D3D11 device, and D3D11 offers nothing over D3D12.

Scope / Decision

  • Do NOT add D3D11 shim entry points (none exist today — correct).
  • The Windows story is fully covered by: D3D12 fast path (M3a), forced-Vulkan (the shipping M1b/M2 path), and the CPU-copy floor (works on dx12 today, needs a Vulkan ICD).
  • If a future consumer ever force-pins wgpu to D3D11 AND needs native rive, the ONLY viable model is the CPU-copy floor (rive renders on its own device, CPU-copy into a wgpu D3D11 texture) — never zero-copy. Re-open only with that concrete need.

Acceptance criteria

  • Decision captured in the backend roadmap doc with the cited evidence; issue closed as 'wontfix/by-design' (kept for the record).

Refs

  • vendor/rive-runtime/renderer/include/rive/renderer/d3d11/render_context_d3d_impl.hpp:176
  • vendor/rive-runtime/renderer/src/d3d11/render_context_d3d_impl.cpp:411,1589,1595
  • wgpu-hal-27.0.4/src/ (no dx11 module)
  • the D3D12 feasibility spike (summarized in ROADMAP.md)

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions