DDraw: enable EnableAutoDepthStencil to receive depth support

Stefan Dösinger stefan at codeweavers.com
Fri May 2 09:32:45 CDT 2008


Actually, setting AutoDepthStencil to TRUE is technically wrong, but I am 
afraid the only option. DDraw doesn't create a depth stencil surface 
automatically. The app has to create it manually, then attach it to the 
primary. When the app creates the depth stencil, ddraw creates a wined3d 
depth stencil. When the app attaches the depth stencil, ddraw calls 
SetDepthStencilSurface. So the bug is in WineD3D, not ddraw.

We would have to fetch a depth stencil buffer from somewhere on 
SetDepthStencilSurface. In the very same way, a d3d9 application could set 
autodepthstencil = FALSE and create the depth stencil on its own.

Since we cannot attach a depth stencil surface in the d3d9 way without 
rendering to an FBO(if they are available at all), we have a problem. One 
option would be to always create an opengl depth stencil capable format, 
which would undo some of the gains from the pixel format support. Another 
option is this patch - we didn't have a manual d3d9 depth stencil creation 
yet. A third option is to change the opengl pixelformat in 
SetDepthStencilSurface(upwards only, UNKNOWN -> D16 -> D24X8 -> D24S8).



More information about the wine-devel mailing list