[PATCH 2/5] wined3d: Map D3DFMT_D24S8 to WINED3DFMT_D24_UNORM_S8_UINT.

Henri Verbeet hverbeet at codeweavers.com
Thu Oct 29 12:56:21 CDT 2009


The internal order of the depth and stencil bits is unspecified since the
format isn't lockable.
---
 dlls/d3d8/device.c       |    4 ++--
 dlls/d3d9/device.c       |    4 ++--
 dlls/ddraw/direct3d.c    |    2 +-
 dlls/ddraw/utils.c       |    6 +++---
 dlls/wined3d/context.c   |    4 ++--
 dlls/wined3d/directx.c   |    2 +-
 dlls/wined3d/surface.c   |    2 +-
 dlls/wined3d/utils.c     |   11 +++++------
 include/wine/wined3d.idl |    1 -
 9 files changed, 17 insertions(+), 19 deletions(-)

diff --git a/dlls/d3d8/device.c b/dlls/d3d8/device.c
index 606b444..d0504ed 100644
--- a/dlls/d3d8/device.c
+++ b/dlls/d3d8/device.c
@@ -74,7 +74,7 @@ D3DFORMAT d3dformat_from_wined3dformat(WINED3DFORMAT format)
         case WINED3DFMT_D16_LOCKABLE: return D3DFMT_D16_LOCKABLE;
         case WINED3DFMT_D32_UNORM: return D3DFMT_D32;
         case WINED3DFMT_S1_UINT_D15_UNORM: return D3DFMT_D15S1;
-        case WINED3DFMT_S8_UINT_D24_UNORM: return D3DFMT_D24S8;
+        case WINED3DFMT_D24_UNORM_S8_UINT: return D3DFMT_D24S8;
         case WINED3DFMT_X8D24_UNORM: return D3DFMT_D24X8;
         case WINED3DFMT_S4X4_UINT_D24_UNORM: return D3DFMT_D24X4S4;
         case WINED3DFMT_D16_UNORM: return D3DFMT_D16;
@@ -125,7 +125,7 @@ WINED3DFORMAT wined3dformat_from_d3dformat(D3DFORMAT format)
         case D3DFMT_D16_LOCKABLE: return WINED3DFMT_D16_LOCKABLE;
         case D3DFMT_D32: return WINED3DFMT_D32_UNORM;
         case D3DFMT_D15S1: return WINED3DFMT_S1_UINT_D15_UNORM;
-        case D3DFMT_D24S8: return WINED3DFMT_S8_UINT_D24_UNORM;
+        case D3DFMT_D24S8: return WINED3DFMT_D24_UNORM_S8_UINT;
         case D3DFMT_D24X8: return WINED3DFMT_X8D24_UNORM;
         case D3DFMT_D24X4S4: return WINED3DFMT_S4X4_UINT_D24_UNORM;
         case D3DFMT_D16: return WINED3DFMT_D16_UNORM;
diff --git a/dlls/d3d9/device.c b/dlls/d3d9/device.c
index 5389498..5aacbc8 100644
--- a/dlls/d3d9/device.c
+++ b/dlls/d3d9/device.c
@@ -66,7 +66,7 @@ D3DFORMAT d3dformat_from_wined3dformat(WINED3DFORMAT format)
         case WINED3DFMT_D16_LOCKABLE: return D3DFMT_D16_LOCKABLE;
         case WINED3DFMT_D32_UNORM: return D3DFMT_D32;
         case WINED3DFMT_S1_UINT_D15_UNORM: return D3DFMT_D15S1;
-        case WINED3DFMT_S8_UINT_D24_UNORM: return D3DFMT_D24S8;
+        case WINED3DFMT_D24_UNORM_S8_UINT: return D3DFMT_D24S8;
         case WINED3DFMT_X8D24_UNORM: return D3DFMT_D24X8;
         case WINED3DFMT_S4X4_UINT_D24_UNORM: return D3DFMT_D24X4S4;
         case WINED3DFMT_D16_UNORM: return D3DFMT_D16;
@@ -131,7 +131,7 @@ WINED3DFORMAT wined3dformat_from_d3dformat(D3DFORMAT format)
         case D3DFMT_D16_LOCKABLE: return WINED3DFMT_D16_LOCKABLE;
         case D3DFMT_D32: return WINED3DFMT_D32_UNORM;
         case D3DFMT_D15S1: return WINED3DFMT_S1_UINT_D15_UNORM;
-        case D3DFMT_D24S8: return WINED3DFMT_S8_UINT_D24_UNORM;
+        case D3DFMT_D24S8: return WINED3DFMT_D24_UNORM_S8_UINT;
         case D3DFMT_D24X8: return WINED3DFMT_X8D24_UNORM;
         case D3DFMT_D24X4S4: return WINED3DFMT_S4X4_UINT_D24_UNORM;
         case D3DFMT_D16: return WINED3DFMT_D16_UNORM;
diff --git a/dlls/ddraw/direct3d.c b/dlls/ddraw/direct3d.c
index d9d7041..42884e5 100644
--- a/dlls/ddraw/direct3d.c
+++ b/dlls/ddraw/direct3d.c
@@ -1116,7 +1116,7 @@ IDirect3DImpl_7_EnumZBufferFormats(IDirect3D7 *iface,
         WINED3DFMT_D16_UNORM,
         WINED3DFMT_X8D24_UNORM,
         WINED3DFMT_S4X4_UINT_D24_UNORM,
-        WINED3DFMT_S8_UINT_D24_UNORM,
+        WINED3DFMT_D24_UNORM_S8_UINT,
         WINED3DFMT_D32_UNORM,
     };
 
diff --git a/dlls/ddraw/utils.c b/dlls/ddraw/utils.c
index 04d0ba4..e9c27f4 100644
--- a/dlls/ddraw/utils.c
+++ b/dlls/ddraw/utils.c
@@ -217,7 +217,7 @@ PixelFormat_WineD3DtoDD(DDPIXELFORMAT *DDPixelFormat,
             DDPixelFormat->u5.dwRGBAlphaBitMask = 0x0;
             break;
 
-        case WINED3DFMT_S8_UINT_D24_UNORM:
+        case WINED3DFMT_D24_UNORM_S8_UINT:
             DDPixelFormat->dwFlags = DDPF_ZBUFFER | DDPF_STENCILBUFFER;
             DDPixelFormat->dwFourCC = 0;
             /* Should I set dwZBufferBitDepth to 32 here? */
@@ -529,11 +529,11 @@ PixelFormat_DD2WineD3D(const DDPIXELFORMAT *DDPixelFormat)
 
                 case 24:
                     FIXME("Don't know how to handle a 24 bit depth buffer with stencil bits\n");
-                    return WINED3DFMT_S8_UINT_D24_UNORM;
+                    return WINED3DFMT_D24_UNORM_S8_UINT;
 
                 case 32:
                     if(DDPixelFormat->u2.dwStencilBitDepth == 8)
-                        return WINED3DFMT_S8_UINT_D24_UNORM;
+                        return WINED3DFMT_D24_UNORM_S8_UINT;
                     else
                         return WINED3DFMT_S4X4_UINT_D24_UNORM;
 
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
index f15d9cb..5bd06be 100644
--- a/dlls/wined3d/context.c
+++ b/dlls/wined3d/context.c
@@ -1016,10 +1016,10 @@ static int WineD3D_ChoosePixelFormat(IWineD3DDeviceImpl *This, HDC hdc,
      * Likely a lot of other new bugs will be exposed. For that reason request a depth stencil surface all the
      * time. It can cause a slight performance hit but fixes a lot of regressions. A fixme reminds of that this
      * issue needs to be fixed. */
-    if (ds_format_desc->format != WINED3DFMT_S8_UINT_D24_UNORM)
+    if (ds_format_desc->format != WINED3DFMT_D24_UNORM_S8_UINT)
     {
         FIXME("Add OpenGL context recreation support to SetDepthStencilSurface\n");
-        ds_format_desc = getFormatDescEntry(WINED3DFMT_S8_UINT_D24_UNORM, &This->adapter->gl_info);
+        ds_format_desc = getFormatDescEntry(WINED3DFMT_D24_UNORM_S8_UINT, &This->adapter->gl_info);
     }
 
     getDepthStencilBits(ds_format_desc, &depthBits, &stencilBits);
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 80d4685..ae5f2cb 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -2978,7 +2978,7 @@ static BOOL CheckTextureCapability(struct wined3d_adapter *adapter,
         case WINED3DFMT_S1_UINT_D15_UNORM:
         case WINED3DFMT_X8D24_UNORM:
         case WINED3DFMT_S4X4_UINT_D24_UNORM:
-        case WINED3DFMT_S8_UINT_D24_UNORM:
+        case WINED3DFMT_D24_UNORM_S8_UINT:
         case WINED3DFMT_S8_UINT_D24_FLOAT:
         case WINED3DFMT_D32_UNORM:
         case WINED3DFMT_D32_FLOAT:
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 03f027b..8c143ec 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -3980,7 +3980,7 @@ static HRESULT IWineD3DSurfaceImpl_BltZ(IWineD3DSurfaceImpl *This, const RECT *D
             case WINED3DFMT_S1_UINT_D15_UNORM:
                 depth = (float) DDBltFx->u5.dwFillDepth / (float) 0x0000fffe;
                 break;
-            case WINED3DFMT_S8_UINT_D24_UNORM:
+            case WINED3DFMT_D24_UNORM_S8_UINT:
             case WINED3DFMT_X8D24_UNORM:
                 depth = (float) DDBltFx->u5.dwFillDepth / (float) 0x00ffffff;
                 break;
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index 0eedc7a..8fe938f 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -118,7 +118,7 @@ static const struct StaticPixelFormatDesc formats[] =
     {WINED3DFMT_D16_LOCKABLE,           0x0,        0x0,        0x0,        0x0,        2,      16,     0,      FALSE},
     {WINED3DFMT_D32_UNORM,              0x0,        0x0,        0x0,        0x0,        4,      32,     0,      FALSE},
     {WINED3DFMT_S1_UINT_D15_UNORM,      0x0,        0x0,        0x0,        0x0,        2,      15,     1,      FALSE},
-    {WINED3DFMT_S8_UINT_D24_UNORM,      0x0,        0x0,        0x0,        0x0,        4,      24,     8,      FALSE},
+    {WINED3DFMT_D24_UNORM_S8_UINT,      0x0,        0x0,        0x0,        0x0,        4,      24,     8,      FALSE},
     {WINED3DFMT_X8D24_UNORM,            0x0,        0x0,        0x0,        0x0,        4,      24,     0,      FALSE},
     {WINED3DFMT_S4X4_UINT_D24_UNORM,    0x0,        0x0,        0x0,        0x0,        4,      24,     4,      FALSE},
     {WINED3DFMT_D16_UNORM,              0x0,        0x0,        0x0,        0x0,        2,      16,     0,      FALSE},
@@ -447,15 +447,15 @@ static const GlPixelFormatDescTemplate gl_formats_template[] = {
             GL_DEPTH_STENCIL,           GL_UNSIGNED_INT_24_8,
             WINED3DFMT_FLAG_DEPTH | WINED3DFMT_FLAG_STENCIL,
             ARB_FRAMEBUFFER_OBJECT},
-    {WINED3DFMT_S8_UINT_D24_UNORM,      GL_DEPTH_COMPONENT24_ARB,         GL_DEPTH_COMPONENT24_ARB,               0,
+    {WINED3DFMT_D24_UNORM_S8_UINT,      GL_DEPTH_COMPONENT24_ARB,         GL_DEPTH_COMPONENT24_ARB,               0,
             GL_DEPTH_COMPONENT,         GL_UNSIGNED_INT,
             WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING | WINED3DFMT_FLAG_DEPTH,
             ARB_DEPTH_TEXTURE},
-    {WINED3DFMT_S8_UINT_D24_UNORM,      GL_DEPTH24_STENCIL8_EXT,          GL_DEPTH24_STENCIL8_EXT,                0,
+    {WINED3DFMT_D24_UNORM_S8_UINT,      GL_DEPTH24_STENCIL8_EXT,          GL_DEPTH24_STENCIL8_EXT,                0,
             GL_DEPTH_STENCIL_EXT,       GL_UNSIGNED_INT_24_8_EXT,
             WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING | WINED3DFMT_FLAG_DEPTH | WINED3DFMT_FLAG_STENCIL,
             EXT_PACKED_DEPTH_STENCIL},
-    {WINED3DFMT_S8_UINT_D24_UNORM,      GL_DEPTH24_STENCIL8,              GL_DEPTH24_STENCIL8,                    0,
+    {WINED3DFMT_D24_UNORM_S8_UINT,      GL_DEPTH24_STENCIL8,              GL_DEPTH24_STENCIL8,                    0,
             GL_DEPTH_STENCIL,           GL_UNSIGNED_INT_24_8,
             WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING | WINED3DFMT_FLAG_DEPTH | WINED3DFMT_FLAG_STENCIL,
             ARB_FRAMEBUFFER_OBJECT},
@@ -1189,7 +1189,6 @@ const char* debug_d3dformat(WINED3DFORMAT fmt) {
     FMT_TO_STR(WINED3DFMT_D16_LOCKABLE);
     FMT_TO_STR(WINED3DFMT_D32_UNORM);
     FMT_TO_STR(WINED3DFMT_S1_UINT_D15_UNORM);
-    FMT_TO_STR(WINED3DFMT_S8_UINT_D24_UNORM);
     FMT_TO_STR(WINED3DFMT_X8D24_UNORM);
     FMT_TO_STR(WINED3DFMT_S4X4_UINT_D24_UNORM);
     FMT_TO_STR(WINED3DFMT_L16_UNORM);
@@ -2083,7 +2082,7 @@ BOOL getDepthStencilBits(const struct GlPixelFormatDesc *format_desc, short *dep
         case WINED3DFMT_S1_UINT_D15_UNORM:
         case WINED3DFMT_X8D24_UNORM:
         case WINED3DFMT_S4X4_UINT_D24_UNORM:
-        case WINED3DFMT_S8_UINT_D24_UNORM:
+        case WINED3DFMT_D24_UNORM_S8_UINT:
         case WINED3DFMT_S8_UINT_D24_FLOAT:
         case WINED3DFMT_D32_UNORM:
         case WINED3DFMT_D32_FLOAT:
diff --git a/include/wine/wined3d.idl b/include/wine/wined3d.idl
index 049ac90..b690b39 100644
--- a/include/wine/wined3d.idl
+++ b/include/wine/wined3d.idl
@@ -152,7 +152,6 @@ typedef enum _WINED3DFORMAT
     WINED3DFMT_D16_LOCKABLE,
     WINED3DFMT_D32_UNORM,
     WINED3DFMT_S1_UINT_D15_UNORM,
-    WINED3DFMT_S8_UINT_D24_UNORM,
     WINED3DFMT_X8D24_UNORM,
     WINED3DFMT_S4X4_UINT_D24_UNORM,
     WINED3DFMT_L16_UNORM,
-- 
1.6.4.4




More information about the wine-patches mailing list