Henri Verbeet : ddraw: Move the mipmap desc fixup code to ddraw_surface_create_texture() from device_parent_create_texture_surface().

Alexandre Julliard julliard at winehq.org
Thu Oct 25 13:50:44 CDT 2012


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

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Wed Oct 24 21:23:35 2012 +0200

ddraw: Move the mipmap desc fixup code to ddraw_surface_create_texture() from device_parent_create_texture_surface().

---

 dlls/ddraw/ddraw.c   |   41 -----------------------------------------
 dlls/ddraw/surface.c |   36 ++++++++++++++++++++++++++++++++++++
 2 files changed, 36 insertions(+), 41 deletions(-)

diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c
index fa1beff..014ad27 100644
--- a/dlls/ddraw/ddraw.c
+++ b/dlls/ddraw/ddraw.c
@@ -5218,47 +5218,6 @@ static HRESULT CDECL device_parent_create_texture_surface(struct wined3d_device_
 
     desc.dwWidth = width;
     desc.dwHeight = height;
-    if (level)
-        desc.ddsCaps.dwCaps2 |= DDSCAPS2_MIPMAPSUBLEVEL;
-    else
-        desc.ddsCaps.dwCaps2 &= ~DDSCAPS2_MIPMAPSUBLEVEL;
-
-    if (desc.ddsCaps.dwCaps2 & DDSCAPS2_CUBEMAP)
-    {
-        desc.ddsCaps.dwCaps2 &= ~DDSCAPS2_CUBEMAP_ALLFACES;
-
-        switch (face)
-        {
-            case WINED3D_CUBEMAP_FACE_POSITIVE_X:
-                desc.ddsCaps.dwCaps2 |= DDSCAPS2_CUBEMAP_POSITIVEX;
-                break;
-
-            case WINED3D_CUBEMAP_FACE_NEGATIVE_X:
-                desc.ddsCaps.dwCaps2 |= DDSCAPS2_CUBEMAP_NEGATIVEX;
-                break;
-
-            case WINED3D_CUBEMAP_FACE_POSITIVE_Y:
-                desc.ddsCaps.dwCaps2 |= DDSCAPS2_CUBEMAP_POSITIVEY;
-                break;
-
-            case WINED3D_CUBEMAP_FACE_NEGATIVE_Y:
-                desc.ddsCaps.dwCaps2 |= DDSCAPS2_CUBEMAP_NEGATIVEY;
-                break;
-
-            case WINED3D_CUBEMAP_FACE_POSITIVE_Z:
-                desc.ddsCaps.dwCaps2 |= DDSCAPS2_CUBEMAP_POSITIVEZ;
-                break;
-
-            case WINED3D_CUBEMAP_FACE_NEGATIVE_Z:
-                desc.ddsCaps.dwCaps2 |= DDSCAPS2_CUBEMAP_NEGATIVEZ;
-                break;
-
-            default:
-                ERR("Unexpected cube face.\n");
-                return DDERR_INVALIDPARAMS;
-        }
-
-    }
 
     /* FIXME: Validate that format, usage, pool, etc. really make sense. */
     if (FAILED(hr = ddraw_create_surface(ddraw, &desc, &ddraw_surface, tex_root->version)))
diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c
index 51bd876..1c548a5 100644
--- a/dlls/ddraw/surface.c
+++ b/dlls/ddraw/surface.c
@@ -5592,6 +5592,7 @@ HRESULT ddraw_surface_create_texture(struct ddraw_surface *surface)
     struct wined3d_resource *resource;
     enum wined3d_format_id format;
     UINT layers, levels, i, j;
+    DDSURFACEDESC2 *mip_desc;
     enum wined3d_pool pool;
     HRESULT hr;
 
@@ -5638,6 +5639,41 @@ HRESULT ddraw_surface_create_texture(struct ddraw_surface *surface)
             if (mip == surface)
                 continue;
 
+            mip_desc = &mip->surface_desc;
+
+            if (j)
+                mip_desc->ddsCaps.dwCaps2 |= DDSCAPS2_MIPMAPSUBLEVEL;
+            else
+                mip_desc->ddsCaps.dwCaps2 &= ~DDSCAPS2_MIPMAPSUBLEVEL;
+
+            if (mip_desc->ddsCaps.dwCaps2 & DDSCAPS2_CUBEMAP)
+            {
+                mip_desc->ddsCaps.dwCaps2 &= ~DDSCAPS2_CUBEMAP_ALLFACES;
+
+                switch (i)
+                {
+                    case WINED3D_CUBEMAP_FACE_POSITIVE_X:
+                        mip_desc->ddsCaps.dwCaps2 |= DDSCAPS2_CUBEMAP_POSITIVEX;
+                        break;
+                    case WINED3D_CUBEMAP_FACE_NEGATIVE_X:
+                        mip_desc->ddsCaps.dwCaps2 |= DDSCAPS2_CUBEMAP_NEGATIVEX;
+                        break;
+                    case WINED3D_CUBEMAP_FACE_POSITIVE_Y:
+                        mip_desc->ddsCaps.dwCaps2 |= DDSCAPS2_CUBEMAP_POSITIVEY;
+                        break;
+                    case WINED3D_CUBEMAP_FACE_NEGATIVE_Y:
+                        mip_desc->ddsCaps.dwCaps2 |= DDSCAPS2_CUBEMAP_NEGATIVEY;
+                        break;
+                    case WINED3D_CUBEMAP_FACE_POSITIVE_Z:
+                        mip_desc->ddsCaps.dwCaps2 |= DDSCAPS2_CUBEMAP_POSITIVEZ;
+                        break;
+                    case WINED3D_CUBEMAP_FACE_NEGATIVE_Z:
+                        mip_desc->ddsCaps.dwCaps2 |= DDSCAPS2_CUBEMAP_NEGATIVEZ;
+                        break;
+                }
+
+            }
+
             *attach = mip;
             attach = &mip->complex_array[0];
         }




More information about the wine-cvs mailing list