Direct3D 11 introduced the concept of a deferred context.
A deferred context is another instance of
ID3D11DeviceContext, with the difference being that a deferred context can not directly submit commands to the driver. Instead, a deferred context must route its commands through the main device context by creating an
ID3D11CommandList using the
FinishCommandListFunction to first create the command list, and call
ExecuteCommandList on the main device context.
While not a complete multithreaded implementation of command recording, deferred contexts can be use to amortize some of the costs of the main thread, using some time on off threads to reduce the amount of time spent recording commands on the main thread.