From ff659522f6d16c46d61b3cba0564ced8e65f5aa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ri=C4=8Dardas=20Barkauskas?= Date: Sun, 24 Oct 2010 22:36:43 +0300 Subject: [PATCH] ddraw: Fix DDSCAPS_3DDEVICE surfaces always setting DDSCAPS_VISIBLE. --- dlls/ddraw/surface.c | 7 ++++++- dlls/ddraw/tests/d3d.c | 2 +- dlls/ddraw/tests/dsurface.c | 4 ++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c index 5bd219f4727..2878a5640fe 100644 --- a/dlls/ddraw/surface.c +++ b/dlls/ddraw/surface.c @@ -3511,12 +3511,17 @@ HRESULT ddraw_surface_init(IDirectDrawSurfaceImpl *surface, IDirectDrawImpl *ddr desc->ddsCaps.dwCaps |= DDSCAPS_LOCALVIDMEM | DDSCAPS_VIDEOMEMORY; } - if (desc->ddsCaps.dwCaps & (DDSCAPS_PRIMARYSURFACE | DDSCAPS_3DDEVICE)) + if (desc->ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE) { usage |= WINED3DUSAGE_RENDERTARGET; desc->ddsCaps.dwCaps |= DDSCAPS_VISIBLE; } + if (desc->ddsCaps.dwCaps & DDSCAPS_3DDEVICE) + { + usage |= WINED3DUSAGE_RENDERTARGET; + } + if (desc->ddsCaps.dwCaps & (DDSCAPS_OVERLAY)) { usage |= WINED3DUSAGE_OVERLAY; diff --git a/dlls/ddraw/tests/d3d.c b/dlls/ddraw/tests/d3d.c index 808818874a2..f144543cf54 100644 --- a/dlls/ddraw/tests/d3d.c +++ b/dlls/ddraw/tests/d3d.c @@ -3593,7 +3593,7 @@ static void BackBuffer3DCreateSurfaceTest(void) { hr = IDirectDrawSurface_GetSurfaceDesc(surf, &created_ddsd); ok(SUCCEEDED(hr), "IDirectDraw_GetSurfaceDesc failed: 0x%08x\n", hr); - todo_wine ok(created_ddsd.ddsCaps.dwCaps == expected_caps, + ok(created_ddsd.ddsCaps.dwCaps == expected_caps, "GetSurfaceDesc returned caps %x, expected %x\n", created_ddsd.ddsCaps.dwCaps, expected_caps); diff --git a/dlls/ddraw/tests/dsurface.c b/dlls/ddraw/tests/dsurface.c index 355c9d25b0f..14fb87ca687 100644 --- a/dlls/ddraw/tests/dsurface.c +++ b/dlls/ddraw/tests/dsurface.c @@ -2916,7 +2916,7 @@ static void SurfaceCapsTest(void) hr = IDirectDrawSurface_GetSurfaceDesc(surface1, &desc); ok(hr == DD_OK, "IDirectDrawSurface_GetSurfaceDesc failed with %08x\n", hr); - if (!(create_caps[i] & (DDSCAPS_PRIMARYSURFACE | DDSCAPS_3DDEVICE))) + if (!(create_caps[i] & DDSCAPS_PRIMARYSURFACE)) ok(desc.ddsCaps.dwCaps == expected_caps[i], "GetSurfaceDesc test %d returned caps %x, expected %x\n", i, desc.ddsCaps.dwCaps, expected_caps[i]); @@ -2971,7 +2971,7 @@ static void SurfaceCapsTest(void) hr = IDirectDrawSurface7_GetSurfaceDesc(surface7, &desc2); ok(hr == DD_OK, "IDirectDrawSurface_GetSurfaceDesc failed with %08x\n", hr); - if (!(create_caps[i] & (DDSCAPS_PRIMARYSURFACE | DDSCAPS_3DDEVICE))) + if (!(create_caps[i] & DDSCAPS_PRIMARYSURFACE)) ok(desc2.ddsCaps.dwCaps == expected_caps[i], "GetSurfaceDesc test %d returned caps %x, expected %x\n", i, desc2.ddsCaps.dwCaps, expected_caps[i]);