Chapter 13. Outline of DirectDraw Architecture

Table of Contents
13.1. DirectDraw inheritance tree
13.2. DirectDrawSurface inheritance tree
13.3. Interface Thunks
13.4. Logical Object Layout
13.5. Creating Objects

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

13.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 functions (Enum, Set, Restore), GetCaps, GetDevice identifier 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.