=?UTF-8?Q?Stefan=20D=C3=B6singer=20?=: ddraw: Simplify Z format parsing a bit, remove ERRs.

Alexandre Julliard julliard at winehq.org
Fri Sep 2 13:13:37 CDT 2011


Module: wine
Branch: master
Commit: 2fc534edf2447603b7dcb1743ca56b141aae1fa4
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=2fc534edf2447603b7dcb1743ca56b141aae1fa4

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Sun Aug 28 16:04:24 2011 +0200

ddraw: Simplify Z format parsing a bit, remove ERRs.

---

 dlls/ddraw/utils.c |   49 ++++++++++++++++++-------------------------------
 1 files changed, 18 insertions(+), 31 deletions(-)

diff --git a/dlls/ddraw/utils.c b/dlls/ddraw/utils.c
index 63c6a5e..d2a4194 100644
--- a/dlls/ddraw/utils.c
+++ b/dlls/ddraw/utils.c
@@ -519,31 +519,22 @@ enum wined3d_format_id PixelFormat_DD2WineD3D(const DDPIXELFORMAT *DDPixelFormat
         {
             switch(DDPixelFormat->u1.dwZBufferBitDepth)
             {
-                case 8:
-                    FIXME("8 Bits Z+Stencil buffer pixelformat is not supported. Returning WINED3DFMT_UNKNOWN\n");
-                    return WINED3DFMT_UNKNOWN;
-
-                case 15:
-                    FIXME("15 bit depth buffer not handled yet, assuming 16 bit\n");
                 case 16:
-                    if(DDPixelFormat->u2.dwStencilBitDepth == 1)
-                        return WINED3DFMT_S1_UINT_D15_UNORM;
-
-                    FIXME("Don't know how to handle a 16 bit Z buffer with %d bit stencil buffer pixelformat\n", DDPixelFormat->u2.dwStencilBitDepth);
+                    if (DDPixelFormat->u2.dwStencilBitDepth == 1) return WINED3DFMT_S1_UINT_D15_UNORM;
+                    WARN("Unknown depth stenil format: 16 z bits, %u stencil bits\n",
+                            DDPixelFormat->u2.dwStencilBitDepth);
                     return WINED3DFMT_UNKNOWN;
 
-                case 24:
-                    FIXME("Don't know how to handle a 24 bit depth buffer with stencil bits\n");
-                    return WINED3DFMT_D24_UNORM_S8_UINT;
-
                 case 32:
-                    if(DDPixelFormat->u2.dwStencilBitDepth == 8)
-                        return WINED3DFMT_D24_UNORM_S8_UINT;
-                    else
-                        return WINED3DFMT_S4X4_UINT_D24_UNORM;
+                    if (DDPixelFormat->u2.dwStencilBitDepth == 8) return WINED3DFMT_D24_UNORM_S8_UINT;
+                    else if (DDPixelFormat->u2.dwStencilBitDepth == 4) return WINED3DFMT_S4X4_UINT_D24_UNORM;
+                    WARN("Unknown depth stenil format: 32 z bits, %u stencil bits\n",
+                            DDPixelFormat->u2.dwStencilBitDepth);
+                    return WINED3DFMT_UNKNOWN;
 
                 default:
-                    ERR("Unknown Z buffer depth %d\n", DDPixelFormat->u1.dwZBufferBitDepth);
+                    WARN("Unknown depth stenil format: %u z bits, %u stencil bits\n",
+                            DDPixelFormat->u1.dwZBufferBitDepth, DDPixelFormat->u2.dwStencilBitDepth);
                     return WINED3DFMT_UNKNOWN;
             }
         }
@@ -551,10 +542,6 @@ enum wined3d_format_id PixelFormat_DD2WineD3D(const DDPIXELFORMAT *DDPixelFormat
         {
             switch(DDPixelFormat->u1.dwZBufferBitDepth)
             {
-                case 8:
-                    ERR("8 Bit Z buffers are not supported. Trying a 16 Bit one\n");
-                    return WINED3DFMT_D16_UNORM;
-
                 case 16:
                     return WINED3DFMT_D16_UNORM;
 
@@ -562,16 +549,16 @@ enum wined3d_format_id PixelFormat_DD2WineD3D(const DDPIXELFORMAT *DDPixelFormat
                     return WINED3DFMT_X8D24_UNORM;
 
                 case 32:
-                    if(DDPixelFormat->u3.dwZBitMask == 0x00FFFFFF) {
-                        return WINED3DFMT_X8D24_UNORM;
-                    } else if(DDPixelFormat->u3.dwZBitMask == 0xFFFFFFFF) {
-                        return WINED3DFMT_D32_UNORM;
-                    }
-                    FIXME("Unhandled 32 bit depth buffer bitmasks, returning WINED3DFMT_D24X8\n");
-                    return WINED3DFMT_X8D24_UNORM; /* That's most likely to make games happy */
+                    if (DDPixelFormat->u3.dwZBitMask == 0x00FFFFFF) return WINED3DFMT_X8D24_UNORM;
+                    else if (DDPixelFormat->u3.dwZBitMask == 0xFFFFFF00) return WINED3DFMT_X8D24_UNORM;
+                    else if (DDPixelFormat->u3.dwZBitMask == 0xFFFFFFFF) return WINED3DFMT_D32_UNORM;
+                    WARN("Unknown depth-only format: 32 z bits, mask 0x%08x\n",
+                            DDPixelFormat->u3.dwZBitMask);
+                    return WINED3DFMT_UNKNOWN;
 
                 default:
-                    ERR("Unsupported Z buffer depth %d\n", DDPixelFormat->u1.dwZBufferBitDepth);
+                    WARN("Unknown depth-only format: %u z bits, mask 0x%08x\n",
+                            DDPixelFormat->u1.dwZBufferBitDepth, DDPixelFormat->u3.dwZBitMask);
                     return WINED3DFMT_UNKNOWN;
             }
         }




More information about the wine-cvs mailing list