Re: [PATCH 3/3] d3drm/tests: Add test for IDirect3DRM*::CreateDeviceFromD3D (try 4).
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am 2015-06-23 um 20:19 schrieb Aaryaman Vasishta:
+ hr = IDirectDraw2_SetCooperativeLevel(ddraw, window, coop_level); + ok(SUCCEEDED(hr), "Failed to set cooperative level, hr %#x.\n", hr); As long as you're always passing coop_level = DDSCL_NORMAL I don't think there's a need for the parameter.
+ if (coop_level & DDSCL_NORMAL) + { + IDirectDrawClipper *clipper; + + hr = IDirectDraw2_CreateClipper(ddraw, 0, &clipper, NULL); + ok(SUCCEEDED(hr), "Failed to create clipper, hr %#x.\n", hr); + hr = IDirectDrawClipper_SetHWnd(clipper, 0, window); + ok(SUCCEEDED(hr), "Failed to set clipper window, hr %#x.\n", hr); + hr = IDirectDrawSurface_SetClipper(surface, clipper); + ok(SUCCEEDED(hr), "Failed to set surface clipper, hr %#x.\n", hr); + IDirectDrawClipper_Release(clipper); + } I wonder why the ddraw test is setting a clipper on the offscreen surface. It should not have an effect. Henri, do you remember why this is done?
+ hr = IDirect3D2_QueryInterface(d3d2, &IID_IDirectDraw, (void**)&ddraw); Why aren't you using the existing ddraw1 interface variable?
+ primary_surface_found = FALSE; + hr = IDirectDraw_EnumSurfaces(ddraw, DDENUMSURFACES_ALL | DDENUMSURFACES_DOESEXIST, + NULL, NULL, surface_callback); + ok(hr == DD_OK, "Failed to enumerate surfaces (hr = %x).\n", hr); + ok(!primary_surface_found, "Primary surface shouldn't be created by CreateDeviceFromD3D.\n"); + IDirectDraw_Release(ddraw); + + hr = IDirectDrawSurface_GetAttachedSurface(surface, &caps, &ds); + ok(hr == DD_OK, "Cannot get attached depth surface (hr = %x).\n", hr); + + desc.dwSize = sizeof(desc); + hr = IDirectDrawSurface_GetSurfaceDesc(ds, &desc); + ok(hr == DD_OK, "Cannot get z surface desc structure (hr = %x).\n", hr); I think here it would be interesting to confirm that the Z surface is the one created by create_device(). -----BEGIN PGP SIGNATURE----- Version: GnuPG v2
iQIcBAEBAgAGBQJVicS1AAoJEN0/YqbEcdMwYNkQAIJL8xzJEd4WjLNzIw8wIuq3 BZiLV8SZIVTlCgZERHQQ46CqtG1MZ4JdZEOvEQpw1pGK0Keq3xTgPE7LLgNZzXx6 fg0Xm1CT9MwWalbj31HelKMB7yHnxTNHhE2oDncDboITI26kxL46IdCsTwJZD9cc yg65kkluHAUyT3+7+k7FFu7ZP3mQUOxnim4YkI3jx48Ls6snhMz6RZwTygZdJXvR eQ0pD/tMdGN/wDBy+y+Dehn2yWScbRgoO1GCqOLH4/L6y8rlAdLMSMZv4HWVN74m cAvpxKC0nketkROouNkDcHrjEhFbL3DnBeNRfd5IfnORgHjwZipqqv7dXhGWELZL R7ZpjtLEzV5/dL2pDjZri3j6Xpi5vZRhlMdiKAvCcNNYfFtXJcZSwlK0AP8ek1SF Lhr3RiOmY0RQ7a2K0Z0UqXCNr+vibBEsfBLdqhuTsC4ipMSzygo0J9dCVIoM9VOl SqjtXo0N6YdzZR0IGpSDuE/uCy33vu1D4ykqyW7UBGkT2CUNTVxfUEPkERnr26E0 h11OrBrNKoNSlxaeg1IcVdh9iipabkAF+iL5XqDsXzT/45TrvBvKsYYL+eRSSbtE q94hxYKMupoIHFtsx62wwhVZUYsf/8x27662aDmY3LmixAb8iOR08lo2JhKczOSZ mootefOFvk8PZPkF5Z8G =Zo0P -----END PGP SIGNATURE-----
+ hr = IDirect3D2_QueryInterface(d3d2, &IID_IDirectDraw, (void**)&ddraw); Why aren't you using the existing ddraw1 interface variable?
Ah, My bad. I must've missed the already existing variables, I probably wrote this in a hurry to get the tests working.
+ primary_surface_found = FALSE; + hr = IDirectDraw_EnumSurfaces(ddraw, DDENUMSURFACES_ALL | DDENUMSURFACES_DOESEXIST, + NULL, NULL, surface_callback); + ok(hr == DD_OK, "Failed to enumerate surfaces (hr = %x).\n", hr); + ok(!primary_surface_found, "Primary surface shouldn't be created by CreateDeviceFromD3D.\n"); + IDirectDraw_Release(ddraw); + + hr = IDirectDrawSurface_GetAttachedSurface(surface, &caps, &ds); + ok(hr == DD_OK, "Cannot get attached depth surface (hr = %x).\n", hr); + + desc.dwSize = sizeof(desc); + hr = IDirectDrawSurface_GetSurfaceDesc(ds, &desc); + ok(hr == DD_OK, "Cannot get z surface desc structure (hr = %x).\n", hr); I think here it would be interesting to confirm that the Z surface is the one created by create_device().
So use a global variable to store the z surface we created from create_device? That should work I guess. Thanks! jam
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am 2015-06-24 um 00:19 schrieb Aaryaman Vasishta:
So use a global variable to store the z surface we created from create_device? That should work I guess. Or pass a pointer to create_device that returns the Z surface, or call GetAttachedSurface after create_device but before CreateDeviceFromD3D.
-----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBAgAGBQJVimWtAAoJEN0/YqbEcdMwFeIP/3z6tngNry7G5vMBcOqmDzts 3wYnY3r7yCMoHWZyW06rDELRZ8WeNgx27TJ+ESqshX7Bz4BFpbYM2zvBtY+zCb4e sfk+I2HEyFa8XlsYKcIN2C+djqrgOQte5cabySaDqN4B6C1BVeMSvPt+1SHWXTc4 Nm/Mh42qyiQ1GO1Hsq5BA1sT3WbWsNnbcEK7pNw/q+YVZhQ5gRCTf+vtHROUimHW ZprYG3qyykmix7CzjXbdACSBcgMYgYol2czfSZwIR8vAUDreEulGSjkyf+Q8jyKk QhjS/uuatSVNZiLuYrMDRhu7IrQ81AZPWi/giPvc6/ReCzaY6Pxe7zx/xo5F09jM aoDm7vic14iK1g4+c5+rBF8M43XX2mRuoZlphdr15ytqsAUCdPR8vnEMKdQ44JOY KUFdTxrEZ5H7CnU5ujZobkAIFc/bMnwKyHtnLGLTauG6VDZ492KatCy712MajAFs WN+8MLu193uFSUEDSBhSEJ1P0Ry586LGNWvxvP1gHoFxEk8YfX3DClRNQpxFqHEB 38Api2P5LYwMfb042oynKy4Op7F/ulBzWocg3/v6BH2o/lUepA2sGpLzNiyz9g40 vyHE+Ym2q1anD1heuNE39sPoR5/lUA+IXj9a2vT6NAJi/TAQinMh+0u62YH3u0iY 3Lih0oBEOk1xQJR6xDaL =C5rV -----END PGP SIGNATURE-----
participants (2)
-
Aaryaman Vasishta -
Stefan Dösinger