WineHQ
WineHQ

Chapter 12. Outline of DirectDraw Architecture

This is an outline of the architecture. Many details are skipped, but hopefully this is useful.

12.1. DirectDraw inheritance tree

Main
 |
User
 |-----------\
XVidMode    DGA2

Most of the DirectDraw functionality is implemented in a common base class. Derived classes are responsible for providing display mode methods (EnumDisplayModes, SetDisplayMode, RestoreDisplayMode), GetCaps, GetDeviceIdentifier and internal functions called to create primary and backbuffer surfaces.

User provides for DirectDraw capabilities based on drawing to a Wine window. It uses the User DirectDrawSurface implementation for primary and backbuffer surfaces.

XVidMode attempt to use the XFree86 VidMode extension to set the display resolution to match the parameters to SetDisplayMode.

DGA2 attempt to use the XFree86 DGA 2.x extension to set the display resolution and direct access to the framebuffer, if the full-screen-exclusive cooperative level is used. If not, it just uses the User implementation.