This file contains information on the current implementation of the DirectDraw
API. Information specific to Direct3D is in the direct3D file.

The DirectDraw API is being used in a lot of current computergames. Its API
layer is represented by the functions in the Win32 DLL ddraw.dll and the
IDirectDraw* interfaces (that can be created using the API functions). 

WINE currently implements a very basic set of the DirectDraw functionality
in graphics/ddraw.c. This implementation uses the XFree86-DGA extension 
to get very fast access to the graphics card framebuffer and doublebuffering
features. It is as fast as the MS equivalent for the stuff that is implemented.
Several applications already work, see below.
Problems of the implementation using XFree86-DGA:

	- XFree86 cannot switch resolution nor depth on the fly.
	  This is a problem with X and unavoidable.
	  Current solution is to pop up a MessageBox with an error for 
	  mismatched parameters and advice the user to restart the X server
	  with the specified depth and/or screensize.
	- The rest of the functionality that has to be implemented will have
	  to be done in software and will be very slow.
	- This requires WINE to be run as root user so XF86DGA can mmap the
	  framebuffer into the addressspace of the process.
	- Blocks all other X windowed applications.

Status:
   - Diablo [640x480x8]:
     The movies play with speed comparable to the MS DDRAW one.
     The game doesn't work, it somehow tries to write into 2 lines _BEFORE_
     the start of the surface. I have tried to investigate this, but it is
     in code that is automatically generated.
  
   - WingCommander 4 / Win95 Patch [640x480x8]:
     The intromovie plays, in 8 bit mode (to reconfigure wc4, run wine
     "wc4w.exe -I"). The 16bit mode looks broken on Mystique, but I think
     this is due to the unusual colorweight (565 rgb) of the Mystique in 16bit
     mode. [Specifying it in DDPIXELFORMAT didn't help.]

     Requires to be run in 640x480xdepth mode (doesn't seem to heed
     DDSURFACEDESC.lPitch).
     You can even fly the first mission with Maniac (ignore the weird sounds),
     but it crashes as soon as you arrive at Blue Point Station...
  
   - Monkey Island 3 [640x480x8]:
     WINE-CVS-981116: 
     	Works, using DGA and Xlib. (Mousecontrol is a bit off in windowed mode.)
   
   - DiscWorld 2 [640x480x8]:
     Plays through nearly all intro movies. Sound and animation skip a lot of
     stuff (possible DirectSound asynchronization problem).
   
   - XvT [640x480x16]:
     Shows the splash screen, then fails with missing Joystick. I have
     investigated but failed to find a reason for this.
  
   - Tomb Raider 2 Demo (using 8 bit renderer) [640x480x8]:
     I have played nearly all of the DEMO level using Keyboard Controls.
     Sound is a bit weird. Keyboard/Mouse handling too due to incomplete
     DirectInput.
  
   - WingCommander Prophecy Demo (using software renderer) [640x480x16]:
     Plays trailer, hangs in selection screen (no keyboard input, DirectInput
     problem).
