-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, One I don't like here is the hardcoded DDSCAPS_SYSTEMEMORY for the Z buffer. You need it on Windows because of the RGB device and Wine doesn't check, so it kinda works. But I recommend to do something like this: BOOL use_sysmem_zbuffer; ... hr = IDirect3DRM2_CreateDeviceFromSurface(d3drm2, &driver, ddraw, surface, &device2); hr = IDirect3DRMDevice2_GetDirect3DDevice2(device2, &d3ddevice2); hr = IDirect3DDevice2_GetRenderTarget(d3ddevice2, &d3drm_surface); hr = IDirectDrawSurface_GetAttachedSurface(d3drm_surface, &caps, &ds); hr = IDirectDrawSurface_GetSurfaceDesc(ds, &desc); use_sysmem_zbuffer = desc->ddsCaps.dwCaps & DDSCAPS_SYSTEMMEMORY; ... /* Release everything */ /* Create new sysmem surface */ when creating the new Z buffer set DDSCAPS_SYSTEMMEMORY only if use_sysmem_zbuffer is true. Another thing to test: After destroying the d3drm device is the Z buffer removed from the surface when (a) d3drm created it and (b) you created it? Cheers, Stefan -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBAgAGBQJVicXHAAoJEN0/YqbEcdMw73gP/3wLEdptNIWr2IFNXJHoSZ15 2g3annULMUw++NvXuBXY1RJdUiR0UQxbGyRNJtFzl8KN66lbl2DOY9/ePkgahIbB 0XKedAtS8F5zoLwRHrbZ/VGSI5Kv8ClHSi0F+jZ5Og9TvwqYKC40vNaBC2WXlSHL KSmOzilln0xDFPecaqyIwbLNO7y1DBnQ7sncLgGCuyxrWM8lK0vmXcAxubS5JyJJ Hd0chD6+EpjxisVWZUVNLFV1HEN9zyL6VDSYcJnNNp9ufGKh6wAoFcywx1vyQTsX tiicEYlW90rvhM2dIZ/m6EcJsR/n6E4iMlj2S4yq9Kc4jySMaC0bYa0B4vPQbbaj YUcQ10qmuH/saROVPjjwjT5O1xISVZ2OOlk3PQYbwVSa1afOMU0ZZu5xNYmkRJ71 21r9cBqePMtIzWixxq+5DiYIRaSDelODlGD8P+LdfYu51DZK3oi1GK0vwX46wHmX M6S6i583uj//ZaZAVG/iCkZ9IPrnkqUnWe8WVGqy1KKJ/e/goq8eQhK9bUHz0GCM BCaklF368VarJWQ0S2ggtdZ006cnc+aqOlfJTRA4UoSfQGU6ACne/blCeJBIGMwv 4mwtvNQvZIvoO6sUW+kmU7T6vCsyxVGfVq96csPbqNvSlidLl8H8IN7f8DK65feW w4s6zvEsdURxeHfcOUNL =bY5s -----END PGP SIGNATURE-----