This file contains information on the current implementation of the DirectDraw
API.

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.

TODO:
	- Add more implementations of the DirectDraw API.
	  Primary candidate is a raw Xlib implementation (one with/one without
	  XShm extension).
	  An additional layer (basically a HAL) will be required to decide on 
	  case-by-case basis which implementation to use.

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]:
     Goes to the easy/hard selection screen, then hangs due to multithreaded
     windows-messagehandling problems.
   
   - DiscWorld 2 [640x480x8]:
     [Crashes with 'cli' in WINE released version. Yes. Privileged instructions
      in 32bit code. Will they ever learn...]
     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]:
     [Crashes with an invalid opcode (outb, probably to test for 3dFX) in the
      WINE release version.]
     Plays trailer, hangs in selection screen (no keyboard input, DirectInput
     problem).
