Hybrid system DDI

Starting with Windows 8.1, these user-mode and kernel-mode structures and enumerations of the display device driver interface (DDI) are updated to handle cross-adapter resources on a hybrid system:

This function, new for Windows 8.1, is implemented by the user-mode display driver:

Here's how to set up and register a DLL that exports this function.

Setting up the dList DLL

A dList is a list of applications that need cross-adapter shared surfaces for high-performance rendering on the discrete GPU. The discrete GPU installs a separate small dList DLL that exports the QueryDListForApplication1 function. The operating system itself doesn't determine which GPU an application should run on. Instead, the Microsoft Direct3D runtime calls QueryDListForApplication1 at most once during Direct3D initialization.

The driver must query an up-to-date list of process information to determine whether or not the process needs the enhanced performance of a discrete GPU instead of the integrated GPU.

For best performance, the DLL should be under 200 KB in size, should keep allocations to a minimum, and should be able to return from the QueryDListForApplication1 function in under 4 ms.

Registering the dList DLL

The user-mode display driver provides the name of the small dList DLL in its INF file under the registry keys UserModeDListDriverName and UserModeDListDriverNameWow, the latter under the Wow64 registry entry. Here's example INF code:

HKR,, UserModeDListDriverName,    %REG_MULTI_SZ%, dlistumd.dll
HKR,, UserModeDListDriverNameWow, %REG_MULTI_SZ%, dlistumdwow.dll