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