[D3D8] Add some depth/stencil buffer stuff
Christian Costa
titan.costa at wanadoo.fr
Sat Apr 12 06:48:48 CDT 2003
Hi,
This patch makes Incoming Forces go further.
(and crash in vertex/pixel shaders stuff).
Bye.
Christian
Changelog :
Handle creation of a depth/stencil buffer when creating a device.
Implement IDirect3D8DeviceImpl_GetDepthStencilBuffer.
Christian Costa titan.costa at wanadoo.fr
-------------- next part --------------
Index: d3d8_private.h
===================================================================
RCS file: /home/wine/wine/dlls/d3d8/d3d8_private.h,v
retrieving revision 1.16
diff -u -r1.16 d3d8_private.h
--- d3d8_private.h 12 Apr 2003 00:06:43 -0000 1.16
+++ d3d8_private.h 12 Apr 2003 11:14:50 -0000
@@ -239,6 +239,7 @@
/* IDirect3DDevice8 fields */
IDirect3D8Impl *direct3d8;
IDirect3DSurface8Impl *backBuffer;
+ IDirect3DSurface8Impl *depthStencilBuffer;
D3DPRESENT_PARAMETERS PresentParms;
D3DDEVICE_CREATION_PARAMETERS CreateParms;
Index: device.c
===================================================================
RCS file: /home/wine/wine/dlls/d3d8/device.c,v
retrieving revision 1.36
diff -u -r1.36 device.c
--- device.c 30 Jan 2003 00:18:27 -0000 1.36
+++ device.c 12 Apr 2003 11:15:00 -0000
@@ -828,12 +828,22 @@
SHORT retVal;
switch (fmt) {
+ /* color buffer */
case D3DFMT_A4R4G4B4: retVal = 2; break;
case D3DFMT_A8R8G8B8: retVal = 4; break;
case D3DFMT_X8R8G8B8: retVal = 4; break;
case D3DFMT_R8G8B8: retVal = 3; break;
case D3DFMT_R5G6B5: retVal = 2; break;
case D3DFMT_A1R5G5B5: retVal = 2; break;
+ /* depth/stencil buffer */
+ case D3DFMT_D16_LOCKABLE: retVal = 2; break;
+ case D3DFMT_D32: retVal = 4; break;
+ case D3DFMT_D15S1: retVal = 2; break;
+ case D3DFMT_D24S8: retVal = 4; break;
+ case D3DFMT_D16: retVal = 2; break;
+ case D3DFMT_D24X8: retVal = 4; break;
+ case D3DFMT_D24X4S4: retVal = 4; break;
+ /* unknown */
case D3DFMT_UNKNOWN:
/* Guess at the highest value of the above */
TRACE("D3DFMT_UNKNOWN - Guessing at 4 bytes/pixel %d\n", fmt);
@@ -1587,10 +1597,12 @@
ICOM_THIS(IDirect3DDevice8Impl,iface);
- /* Note inc ref on returned surface *
- IDirect3DSurface8Impl_AddRef((LPDIRECT3DSURFACE8) *ppBackBuffer); */
+ TRACE("(%p)->(%p)\n", This, ppZStencilSurface);
+
+ /* Note inc ref on returned surface */
+ IDirect3DSurface8Impl_AddRef((LPDIRECT3DSURFACE8)This->depthStencilBuffer);
+ *ppZStencilSurface = (LPDIRECT3DSURFACE8)This->depthStencilBuffer;
- FIXME("(%p) : stub\n", This);
return D3D_OK;
}
Index: directx.c
===================================================================
RCS file: /home/wine/wine/dlls/d3d8/directx.c,v
retrieving revision 1.18
diff -u -r1.18 directx.c
--- directx.c 1 Feb 2003 00:35:36 -0000 1.18
+++ directx.c 12 Apr 2003 11:15:02 -0000
@@ -530,6 +530,13 @@
pPresentationParameters->BackBufferFormat,
(LPDIRECT3DSURFACE8*) &object->backBuffer);
+ if (pPresentationParameters->EnableAutoDepthStencil)
+ IDirect3DDevice8Impl_CreateImageSurface((LPDIRECT3DDEVICE8) object,
+ pPresentationParameters->BackBufferWidth,
+ pPresentationParameters->BackBufferHeight,
+ pPresentationParameters->AutoDepthStencilFormat,
+ (LPDIRECT3DSURFACE8*) &object->depthStencilBuffer);
+
/* Now override the surface's Flip method (if in double buffering) ?COPIED from DDRAW!?
((x11_ds_private *) surface->private)->opengl_flip = TRUE;
{
More information about the wine-patches
mailing list