DXGI and swapchain

While Direct3D 11 is a complete graphics API, it does not directly contain the tools to get the result on screen. This job is handled by the DXGI: DirectX Graphics Interface. DXGI handles hardware selection, and the creation of a swapchain.

The first priority of DXGI is to allow the selection of an adapter. The adapter is either a hardware device or a software implementation, and can be enumerated to select the one that is desired. Commonly there will be either one or two hardware adapters (1 GPU and 1 integrated GPU), and on development machines a WARP device.

The WARP (Windows Advanced Rasterization Platform) is a reference software implementation provided by Windows in order to provide a standardized implementation that is not based on hardware in the machine to determine whether or not a baseline implementation functions differently than on your current hardware, improving the capabilities to separate hardware dependent issues.

A swapchain is a DXGI object that pairs a window with a Direct3D 11 device. When creating a swap chain, a window, a device and multiple separate properties are specified and DXGI provides a buffer to Direct3D for use as a backbuffer. Signalling a backbuffer resize is required by the user when the window changes size, but apart from that the creation, destruction and miscellaneous management of the backbuffer is handled by the swapchain.