I'm programming a rendering engine, and I'm considering whether on not I would need to implement the availability to call D3D11CreateDevice() multiple times to get multiple ID3D11Device's and associated ID3D11DeviceContext's.

My question is whether or not one would actually ever need to get multiple Devices in the first place? Should I bother implementing the option to do so?

  • 2
    \$\begingroup\$ Generally speaking, if you don't need it for the types of projects you design your engine for, then don't bother implementing it. \$\endgroup\$
    – Vaillancourt
    Commented Jun 20, 2022 at 13:45

1 Answer 1


For most games, a single Direct3D 11 device and single Direct3D 11 Immediate Mode Context is all you need.

You typically have multiple devices when doing DX9/DX10/DX11 interop on older versions of Windows where say Direct2D required a Direct3D 10.1 device, but you are using Direct3D 11 or if you were using DXVA which was all DirectX 9 based. See Surface sharing between Windows graphics APIs.

Otherwise the only time you'd have multiple Direct3D 11 devices is for 'heterogenous multiadapter' scenarios which are rare. For Direct3D 11, most "multi-GPU" scenarios are virtualized into one device anyhow.

For DirectX 12, as with most other aspects, multi-adapter requires explicit support. See Microsoft Docs.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .