Chapter 10. Outline of DirectDraw Architecture

Table of Contents
DirectDraw inheritance tree
DirectDrawSurface inheritance tree
Interface Thunks
Logical Object Layout
Creating Objects

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

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.