[PATCH 1/5] ddraw: Move the mip-level dimensions fix-up from ddraw_surface_init() to ddraw_surface_create().
Henri Verbeet
hverbeet at codeweavers.com
Thu Feb 4 14:56:32 CST 2016
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
---
dlls/ddraw/surface.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c
index 923a935..a6fbceb 100644
--- a/dlls/ddraw/surface.c
+++ b/dlls/ddraw/surface.c
@@ -5643,8 +5643,8 @@ static HRESULT CDECL ddraw_reset_enum_callback(struct wined3d_resource *resource
HRESULT ddraw_surface_create(struct ddraw *ddraw, const DDSURFACEDESC2 *surface_desc,
struct ddraw_surface **surface, IUnknown *outer_unknown, unsigned int version)
{
+ struct wined3d_resource_desc wined3d_desc, wined3d_mip_desc;
struct ddraw_surface *root, *mip, **attach;
- struct wined3d_resource_desc wined3d_desc;
struct wined3d_texture *wined3d_texture;
struct wined3d_resource *resource;
struct wined3d_display_mode mode;
@@ -6103,9 +6103,17 @@ HRESULT ddraw_surface_create(struct ddraw *ddraw, const DDSURFACEDESC2 *surface_
mip_desc = &mip->surface_desc;
if (j)
+ {
+ wined3d_resource_get_desc(resource, &wined3d_mip_desc);
+ mip_desc->dwWidth = wined3d_mip_desc.width;
+ mip_desc->dwHeight = wined3d_mip_desc.height;
+
mip_desc->ddsCaps.dwCaps2 |= DDSCAPS2_MIPMAPSUBLEVEL;
+ }
else
+ {
mip_desc->ddsCaps.dwCaps2 &= ~DDSCAPS2_MIPMAPSUBLEVEL;
+ }
if (mip_desc->ddsCaps.dwCaps2 & DDSCAPS2_CUBEMAP)
{
@@ -6233,7 +6241,6 @@ void ddraw_surface_init(struct ddraw_surface *surface, struct ddraw *ddraw,
{
struct ddraw_texture *texture = wined3d_texture_get_parent(wined3d_texture);
DDSURFACEDESC2 *desc = &surface->surface_desc;
- struct wined3d_resource_desc wined3d_desc;
unsigned int version = texture->version;
surface->IDirectDrawSurface7_iface.lpVtbl = &ddraw_surface7_vtbl;
@@ -6265,9 +6272,6 @@ void ddraw_surface_init(struct ddraw_surface *surface, struct ddraw *ddraw,
}
*desc = texture->surface_desc;
- wined3d_resource_get_desc(wined3d_surface_get_resource(wined3d_surface), &wined3d_desc);
- desc->dwWidth = wined3d_desc.width;
- desc->dwHeight = wined3d_desc.height;
surface->first_attached = surface;
if (format_is_compressed(&desc->u4.ddpfPixelFormat))
--
2.1.4
More information about the wine-patches
mailing list