Full-Screen-Mode Behavior

A user-mode display driver can determine that a rendering device is in full-screen mode:

  • If the Fullscreen bit-field flag is set in the Flags member of the D3DDDIARG_OPENRESOURCE structure that the pResource parameter points to in a call to the driver's OpenResource function.

  • If the Primary bit-field flag is set in the Flags member of the D3DDDIARG_CREATERESOURCE structure that the pResource parameter points to in a call to the driver's CreateResource function.

An application that is developed for Microsoft DirectX 9.0 or earlier will cause the Microsoft Direct3D runtime to call OpenResource to open the shared primary surface and then CreateResource to create any additional back buffers. A Microsoft DirectX 9L application will cause the Direct3D runtime to call CreateResource (without calling OpenResource) to create all swap-chain buffers. The Direct3D runtime specifies the primary surface orientation in the Rotation member of the D3DDDIARG_OPENRESOURCE and D3DDDIARG_CREATERESOURCE structures that the pResource parameter points to in calls to both the OpenResource and the CreateResource functions, respectively.

For a full-screen device, a user-mode display driver must lock a rotated resource, render to a rotated resource, and perform bit-block transfers (bitblt) from a rotated resource. Typically, the user-mode display driver creates interim render targets in the rotated orientation (all locks, bitblts, and renderings will go to these interim render targets) and primary allocations in the landscape orientation (that is, the orientation that the digital-to-analog converter [DAC] uses to scan out). When the user-mode display driver is called to flip the data, it performs a rotating bitblt from the interim render target to the landscape buffer before it calls the pfnPresentCb function to issue the flip command.

Whenever a user-mode display driver must perform a bitblt that involves a rotated resource and a non-rotated resource, the Direct3D runtime specifies the Rotate bit-field flag in the Flags member of the D3DDDIARG_BLT structure in a call to the driver's Blt function to indicate to the driver that the proper rotation must occur for the bitblt.

DirectX 9L applications can be rotation-aware, which means that they will render everything in the proper orientation and will properly handle locks to a rotated buffer. When the Direct3D runtime creates a swap chain for a rotation-aware application, the runtime always specifies the rotation as D3DDDI_ROTATION_IDENTITY in the Rotation member of the D3DDDIARG_CREATERESOURCE structure because the user-mode display driver is not required to perform any special actions for the rotation-aware application to work.