ddraw/tests: Split d3d1 initialization and destruction into separate functions.

Slight rewrite to make creating additional D3D1 tests easier.
This commit is contained in:
Alexander Dorofeyev 2008-02-17 17:36:50 -08:00 committed by Alexandre Julliard
parent ed44f9d130
commit cfa40a22c9
1 changed files with 160 additions and 122 deletions

View File

@ -33,6 +33,13 @@ static LPDIRECT3DVERTEXBUFFER7 lpVBufSrc = NULL;
static LPDIRECT3DVERTEXBUFFER7 lpVBufDest1 = NULL;
static LPDIRECT3DVERTEXBUFFER7 lpVBufDest2 = NULL;
static IDirectDraw *DirectDraw1 = NULL;
static IDirectDrawSurface *Surface1 = NULL;
static IDirect3D *Direct3D1 = NULL;
static IDirect3DDevice *Direct3DDevice1 = NULL;
static IDirect3DExecuteBuffer *ExecuteBuffer = NULL;
static IDirect3DViewport *Viewport = NULL;
typedef struct {
int total;
int rgb;
@ -906,18 +913,102 @@ struct v_out {
float x, y, z, rhw;
};
static void Direct3D1Test(void)
static BOOL D3D1_createObjects(void)
{
IDirect3DDevice *dev1 = NULL;
IDirectDraw *dd;
IDirect3D *d3d;
IDirectDrawSurface *dds;
IDirect3DExecuteBuffer *exebuf;
IDirect3DViewport *vp;
HRESULT hr;
DDSURFACEDESC ddsd;
D3DEXECUTEBUFFERDESC desc;
D3DVIEWPORT vp_data;
/* An IDirect3DDevice cannot be queryInterfaced from an IDirect3DDevice7 on windows */
hr = DirectDrawCreate(NULL, &DirectDraw1, NULL);
ok(hr==DD_OK || hr==DDERR_NODIRECTDRAWSUPPORT, "DirectDrawCreate returned: %x\n", hr);
if (!DirectDraw1) {
return FALSE;
}
hr = IDirectDraw_SetCooperativeLevel(DirectDraw1, NULL, DDSCL_NORMAL);
ok(hr==DD_OK, "SetCooperativeLevel returned: %x\n", hr);
hr = IDirectDraw_QueryInterface(DirectDraw1, &IID_IDirect3D, (void**) &Direct3D1);
ok(hr==DD_OK, "QueryInterface returned: %x\n", hr);
if (!Direct3D1) {
return FALSE;
}
memset(&ddsd, 0, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE;
ddsd.dwWidth = 256;
ddsd.dwHeight = 256;
hr = IDirectDraw_CreateSurface(DirectDraw1, &ddsd, &Surface1, NULL);
ok(hr==DD_OK, "CreateSurface returned: %x\n", hr);
if (!Surface1) {
return FALSE;
}
hr = IDirectDrawSurface_QueryInterface(Surface1, &IID_IDirect3DRGBDevice, (void **) &Direct3DDevice1);
ok(hr==D3D_OK || hr==DDERR_NOPALETTEATTACHED || hr==E_OUTOFMEMORY, "CreateDevice returned: %x\n", hr);
if(!Direct3DDevice1) {
return FALSE;
}
memset(&desc, 0, sizeof(desc));
desc.dwSize = sizeof(desc);
desc.dwFlags = D3DDEB_BUFSIZE | D3DDEB_CAPS;
desc.dwCaps = D3DDEBCAPS_VIDEOMEMORY;
desc.dwBufferSize = 128;
desc.lpData = NULL;
hr = IDirect3DDevice_CreateExecuteBuffer(Direct3DDevice1, &desc, &ExecuteBuffer, NULL);
ok(hr == D3D_OK, "IDirect3DDevice_CreateExecuteBuffer failed: %08x\n", hr);
if(!ExecuteBuffer) {
return FALSE;
}
hr = IDirect3D_CreateViewport(Direct3D1, &Viewport, NULL);
ok(hr == D3D_OK, "IDirect3D_CreateViewport failed: %08x\n", hr);
if(!Viewport) {
return FALSE;
}
hr = IDirect3DViewport_Initialize(Viewport, Direct3D1);
ok(hr == DDERR_ALREADYINITIALIZED, "IDirect3DViewport_Initialize returned %08x\n", hr);
hr = IDirect3DDevice_AddViewport(Direct3DDevice1, Viewport);
ok(hr == D3D_OK, "IDirect3DDevice_AddViewport returned %08x\n", hr);
vp_data.dwSize = sizeof(vp_data);
vp_data.dwX = 0;
vp_data.dwY = 0;
vp_data.dwWidth = 256;
vp_data.dwHeight = 256;
vp_data.dvScaleX = 1;
vp_data.dvScaleY = 1;
vp_data.dvMaxX = 256;
vp_data.dvMaxY = 256;
vp_data.dvMinZ = 0;
vp_data.dvMaxZ = 1;
hr = IDirect3DViewport_SetViewport(Viewport, &vp_data);
ok(hr == D3D_OK, "IDirect3DViewport_SetViewport returned %08x\n", hr);
return TRUE;
}
static void D3D1_releaseObjects(void)
{
if (Viewport) IDirect3DViewport_Release(Viewport);
if (ExecuteBuffer) IDirect3DExecuteBuffer_Release(ExecuteBuffer);
if (Direct3DDevice1) IDirect3DDevice_Release(Direct3DDevice1);
if (Surface1) IDirectDrawSurface_Release(Surface1);
if (Direct3D1) IDirect3D_Release(Direct3D1);
if (DirectDraw1) IDirectDraw_Release(DirectDraw1);
}
static void Direct3D1Test(void)
{
HRESULT hr;
D3DEXECUTEBUFFERDESC desc;
D3DVIEWPORT vp_data;
D3DINSTRUCTION *instr;
D3DBRANCH *branch;
unsigned int idx = 0;
@ -937,47 +1028,9 @@ static void Direct3D1Test(void)
D3DTRANSFORMDATA transformdata;
DWORD i = FALSE;
/* An IDirect3DDevice cannot be queryInterfaced from an IDirect3DDevice7 on windows */
hr = DirectDrawCreate(NULL, &dd, NULL);
ok(hr==DD_OK || hr==DDERR_NODIRECTDRAWSUPPORT, "DirectDrawCreate returned: %x\n", hr);
if (!dd) {
trace("DirectDrawCreate() failed with an error %x\n", hr);
return;
}
hr = IDirectDraw_SetCooperativeLevel(dd, NULL, DDSCL_NORMAL);
ok(hr==DD_OK, "SetCooperativeLevel returned: %x\n", hr);
hr = IDirectDraw_QueryInterface(dd, &IID_IDirect3D, (void**) &d3d);
ok(hr==DD_OK, "QueryInterface returned: %x\n", hr);
memset(&ddsd, 0, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE;
ddsd.dwWidth = 256;
ddsd.dwHeight = 256;
hr = IDirectDraw_CreateSurface(dd, &ddsd, &dds, NULL);
ok(hr==DD_OK, "CreateSurface returned: %x\n", hr);
dev1 = NULL;
hr = IDirectDrawSurface_QueryInterface(dds, &IID_IDirect3DRGBDevice, (void **) &dev1);
ok(hr==D3D_OK || hr==DDERR_NOPALETTEATTACHED || hr==E_OUTOFMEMORY, "CreateDevice returned: %x\n", hr);
if(!dev1) return;
memset(&desc, 0, sizeof(desc));
desc.dwSize = sizeof(desc);
desc.dwFlags = D3DDEB_BUFSIZE | D3DDEB_CAPS;
desc.dwCaps = D3DDEBCAPS_VIDEOMEMORY;
desc.dwBufferSize = 128;
desc.lpData = NULL;
hr = IDirect3DDevice_CreateExecuteBuffer(dev1, &desc, &exebuf, NULL);
ok(hr == D3D_OK, "IDirect3DDevice_CreateExecuteBuffer failed: %08x\n", hr);
memset(&desc, 0, sizeof(desc));
desc.dwSize = sizeof(desc);
hr = IDirect3DExecuteBuffer_Lock(exebuf, &desc);
hr = IDirect3DExecuteBuffer_Lock(ExecuteBuffer, &desc);
ok(hr == D3D_OK, "IDirect3DExecuteBuffer_Lock failed: %08x\n", hr);
memset(desc.lpData, 0, 128);
@ -995,37 +1048,16 @@ static void Direct3D1Test(void)
instr[idx].bOpcode = D3DOP_EXIT;
instr[idx].bSize = 0;
instr[idx].wCount = 0;
hr = IDirect3DExecuteBuffer_Unlock(exebuf);
hr = IDirect3DExecuteBuffer_Unlock(ExecuteBuffer);
ok(hr == D3D_OK, "IDirect3DExecuteBuffer_Unlock failed: %08x\n", hr);
hr = IDirect3D_CreateViewport(d3d, &vp, NULL);
ok(hr == D3D_OK, "IDirect3D_CreateViewport failed: %08x\n", hr);
hr = IDirect3DViewport_Initialize(vp, d3d);
ok(hr == DDERR_ALREADYINITIALIZED, "IDirect3DViewport_Initialize returned %08x\n", hr);
hr = IDirect3DDevice_AddViewport(dev1, vp);
ok(hr == D3D_OK, "IDirect3DDevice_AddViewport returned %08x\n", hr);
vp_data.dwSize = sizeof(vp_data);
vp_data.dwX = 0;
vp_data.dwY = 0;
vp_data.dwWidth = 256;
vp_data.dwHeight = 256;
vp_data.dvScaleX = 1;
vp_data.dvScaleY = 1;
vp_data.dvMaxX = 256;
vp_data.dvMaxY = 256;
vp_data.dvMinZ = 0;
vp_data.dvMaxZ = 1;
hr = IDirect3DViewport_SetViewport(vp, &vp_data);
ok(hr == D3D_OK, "IDirect3DViewport_SetViewport returned %08x\n", hr);
hr = IDirect3DDevice_Execute(dev1, exebuf, vp, D3DEXECUTE_CLIPPED);
hr = IDirect3DDevice_Execute(Direct3DDevice1, ExecuteBuffer, Viewport, D3DEXECUTE_CLIPPED);
ok(hr == D3D_OK, "IDirect3DDevice_Execute returned %08x\n", hr);
memset(&desc, 0, sizeof(desc));
desc.dwSize = sizeof(desc);
hr = IDirect3DExecuteBuffer_Lock(exebuf, &desc);
hr = IDirect3DExecuteBuffer_Lock(ExecuteBuffer, &desc);
ok(hr == D3D_OK, "IDirect3DExecuteBuffer_Lock failed: %08x\n", hr);
memset(desc.lpData, 0, 128);
@ -1044,10 +1076,10 @@ static void Direct3D1Test(void)
instr[0].bOpcode = D3DOP_EXIT;
instr[0].bSize = 0;
instr[0].wCount = 0;
hr = IDirect3DExecuteBuffer_Unlock(exebuf);
hr = IDirect3DExecuteBuffer_Unlock(ExecuteBuffer);
ok(hr == D3D_OK, "IDirect3DExecuteBuffer_Unlock failed: %08x\n", hr);
hr = IDirect3DDevice_Execute(dev1, exebuf, vp, D3DEXECUTE_CLIPPED);
hr = IDirect3DDevice_Execute(Direct3DDevice1, ExecuteBuffer, Viewport, D3DEXECUTE_CLIPPED);
ok(hr == D3D_OK, "IDirect3DDevice_Execute returned %08x\n", hr);
memset(&transformdata, 0, sizeof(transformdata));
@ -1058,14 +1090,14 @@ static void Direct3D1Test(void)
transformdata.dwOutSize = sizeof(out[0]);
transformdata.lpHOut = NULL;
hr = IDirect3DViewport_TransformVertices(vp, sizeof(testverts) / sizeof(testverts[0]),
hr = IDirect3DViewport_TransformVertices(Viewport, sizeof(testverts) / sizeof(testverts[0]),
&transformdata, D3DTRANSFORM_UNCLIPPED,
&i);
ok(hr == D3D_OK, "IDirect3DViewport_TransformVertices returned %08x\n", hr);
transformdata.lpHOut = outH;
memset(outH, 0xaa, sizeof(outH));
hr = IDirect3DViewport_TransformVertices(vp, sizeof(testverts) / sizeof(testverts[0]),
hr = IDirect3DViewport_TransformVertices(Viewport, sizeof(testverts) / sizeof(testverts[0]),
&transformdata, D3DTRANSFORM_UNCLIPPED,
&i);
ok(hr == D3D_OK, "IDirect3DViewport_TransformVertices returned %08x\n", hr);
@ -1079,7 +1111,7 @@ static void Direct3D1Test(void)
ok(cmp[i].x == out[i].x && cmp[i].y == out[i].y &&
cmp[i].z == out[i].z && cmp[i].rhw == out[i].rhw,
"Vertex %d differs. Got %f %f %f %f, expected %f %f %f %f\n", i + 1,
"Vertex %d differs. Got %f %f %f %f, expexted %f %f %f %f\n", i + 1,
out[i].x, out[i].y, out[i].z, out[i].rhw,
cmp[i].x, cmp[i].y, cmp[i].z, cmp[i].rhw);
}
@ -1090,17 +1122,25 @@ static void Direct3D1Test(void)
}
}
vp_data.dwSize = sizeof(vp_data);
vp_data.dwX = 0;
vp_data.dwY = 0;
vp_data.dwWidth = 256;
vp_data.dwHeight = 256;
vp_data.dvMaxX = 256;
vp_data.dvMaxY = 256;
vp_data.dvScaleX = 5;
vp_data.dvScaleY = 5;
vp_data.dvMinZ = -25;
vp_data.dvMaxZ = 60;
hr = IDirect3DViewport_SetViewport(vp, &vp_data);
hr = IDirect3DViewport_SetViewport(Viewport, &vp_data);
ok(hr == D3D_OK, "IDirect3DViewport_SetViewport returned %08x\n", hr);
hr = IDirect3DViewport_TransformVertices(vp, sizeof(testverts) / sizeof(testverts[0]),
hr = IDirect3DViewport_TransformVertices(Viewport, sizeof(testverts) / sizeof(testverts[0]),
&transformdata, D3DTRANSFORM_UNCLIPPED,
&i);
ok(hr == D3D_OK, "IDirect3DViewport_TransformVertices returned %08x\n", hr);
ok(i == 0, "Offscreen is %d\n", i);
for(i = 0; i < sizeof(testverts) / sizeof(testverts[0]); i++) {
static const struct v_out cmp[] = {
{128.0, 128.0, 0.0, 1}, {133.0, 123.0, 1.0, 1}, {123.0, 133.0, -1, 1},
@ -1108,16 +1148,16 @@ static void Direct3D1Test(void)
};
ok(cmp[i].x == out[i].x && cmp[i].y == out[i].y &&
cmp[i].z == out[i].z && cmp[i].rhw == out[i].rhw,
"Vertex %d differs. Got %f %f %f %f, expected %f %f %f %f\n", i + 1,
"Vertex %d differs. Got %f %f %f %f, expexted %f %f %f %f\n", i + 1,
out[i].x, out[i].y, out[i].z, out[i].rhw,
cmp[i].x, cmp[i].y, cmp[i].z, cmp[i].rhw);
}
vp_data.dwX = 10;
vp_data.dwY = 20;
hr = IDirect3DViewport_SetViewport(vp, &vp_data);
hr = IDirect3DViewport_SetViewport(Viewport, &vp_data);
ok(hr == D3D_OK, "IDirect3DViewport_SetViewport returned %08x\n", hr);
hr = IDirect3DViewport_TransformVertices(vp, sizeof(testverts) / sizeof(testverts[0]),
hr = IDirect3DViewport_TransformVertices(Viewport, sizeof(testverts) / sizeof(testverts[0]),
&transformdata, D3DTRANSFORM_UNCLIPPED,
&i);
ok(hr == D3D_OK, "IDirect3DViewport_TransformVertices returned %08x\n", hr);
@ -1129,13 +1169,13 @@ static void Direct3D1Test(void)
};
ok(cmp[i].x == out[i].x && cmp[i].y == out[i].y &&
cmp[i].z == out[i].z && cmp[i].rhw == out[i].rhw,
"Vertex %d differs. Got %f %f %f %f, expected %f %f %f %f\n", i + 1,
"Vertex %d differs. Got %f %f %f %f, expexted %f %f %f %f\n", i + 1,
out[i].x, out[i].y, out[i].z, out[i].rhw,
cmp[i].x, cmp[i].y, cmp[i].z, cmp[i].rhw);
}
memset(out, 0xbb, sizeof(out));
hr = IDirect3DViewport_TransformVertices(vp, sizeof(testverts) / sizeof(testverts[0]),
hr = IDirect3DViewport_TransformVertices(Viewport, sizeof(testverts) / sizeof(testverts[0]),
&transformdata, D3DTRANSFORM_CLIPPED,
&i);
ok(hr == D3D_OK, "IDirect3DViewport_TransformVertices returned %08x\n", hr);
@ -1148,7 +1188,7 @@ static void Direct3D1Test(void)
};
ok(U1(cmpH[i]).hx == U1(outH[i]).hx && U2(cmpH[i]).hy == U2(outH[i]).hy &&
U3(cmpH[i]).hz == U3(outH[i]).hz && cmpH[i].dwFlags == outH[i].dwFlags,
"HVertex %d differs. Got %08x %f %f %f, expected %08x %f %f %f\n", i + 1,
"HVertex %d differs. Got %08x %f %f %f, expexted %08x %f %f %f\n", i + 1,
outH[i].dwFlags, U1(outH[i]).hx, U2(outH[i]).hy, U3(outH[i]).hz,
cmpH[i].dwFlags, U1(cmpH[i]).hx, U2(cmpH[i]).hy, U3(cmpH[i]).hz);
@ -1165,7 +1205,7 @@ static void Direct3D1Test(void)
};
ok(cmp[i].x == out[i].x && cmp[i].y == out[i].y &&
cmp[i].z == out[i].z && cmp[i].rhw == out[i].rhw,
"Vertex %d differs. Got %f %f %f %f, expected %f %f %f %f\n", i + 1,
"Vertex %d differs. Got %f %f %f %f, expexted %f %f %f %f\n", i + 1,
out[i].x, out[i].y, out[i].z, out[i].rhw,
cmp[i].x, cmp[i].y, cmp[i].z, cmp[i].rhw);
}
@ -1177,7 +1217,7 @@ static void Direct3D1Test(void)
transformdata.lpIn = (void *) cliptest;
transformdata.dwInSize = sizeof(cliptest[0]);
hr = IDirect3DViewport_TransformVertices(vp, sizeof(cliptest) / sizeof(cliptest[0]),
hr = IDirect3DViewport_TransformVertices(Viewport, sizeof(cliptest) / sizeof(cliptest[0]),
&transformdata, D3DTRANSFORM_CLIPPED,
&i);
ok(hr == D3D_OK, "IDirect3DViewport_TransformVertices returned %08x\n", hr);
@ -1191,16 +1231,16 @@ static void Direct3D1Test(void)
D3DCLIP_LEFT | D3DCLIP_BOTTOM | D3DCLIP_FRONT,
};
ok(Flags[i] == outH[i].dwFlags,
"Cliptest %d differs. Got %08x expected %08x\n", i + 1,
"Cliptest %d differs. Got %08x expexted %08x\n", i + 1,
outH[i].dwFlags, Flags[i]);
}
vp_data.dwWidth = 10;
vp_data.dwHeight = 1000;
hr = IDirect3DViewport_SetViewport(vp, &vp_data);
hr = IDirect3DViewport_SetViewport(Viewport, &vp_data);
i = 10;
ok(hr == D3D_OK, "IDirect3DViewport_SetViewport returned %08x\n", hr);
hr = IDirect3DViewport_TransformVertices(vp, sizeof(cliptest) / sizeof(cliptest[0]),
hr = IDirect3DViewport_TransformVertices(Viewport, sizeof(cliptest) / sizeof(cliptest[0]),
&transformdata, D3DTRANSFORM_CLIPPED,
&i);
ok(hr == D3D_OK, "IDirect3DViewport_TransformVertices returned %08x\n", hr);
@ -1214,16 +1254,16 @@ static void Direct3D1Test(void)
D3DCLIP_LEFT | D3DCLIP_FRONT,
};
ok(Flags[i] == outH[i].dwFlags,
"Cliptest %d differs. Got %08x expected %08x\n", i + 1,
"Cliptest %d differs. Got %08x expexted %08x\n", i + 1,
outH[i].dwFlags, Flags[i]);
}
vp_data.dwWidth = 256;
vp_data.dwHeight = 256;
vp_data.dvScaleX = 1;
vp_data.dvScaleY = 1;
hr = IDirect3DViewport_SetViewport(vp, &vp_data);
hr = IDirect3DViewport_SetViewport(Viewport, &vp_data);
ok(hr == D3D_OK, "IDirect3DViewport_SetViewport returned %08x\n", hr);
hr = IDirect3DViewport_TransformVertices(vp, sizeof(cliptest) / sizeof(cliptest[0]),
hr = IDirect3DViewport_TransformVertices(Viewport, sizeof(cliptest) / sizeof(cliptest[0]),
&transformdata, D3DTRANSFORM_CLIPPED,
&i);
ok(hr == D3D_OK, "IDirect3DViewport_TransformVertices returned %08x\n", hr);
@ -1237,7 +1277,7 @@ static void Direct3D1Test(void)
D3DCLIP_FRONT,
};
ok(Flags[i] == outH[i].dwFlags,
"Cliptest %d differs. Got %08x expected %08x\n", i + 1,
"Cliptest %d differs. Got %08x expexted %08x\n", i + 1,
outH[i].dwFlags, Flags[i]);
}
@ -1250,26 +1290,26 @@ static void Direct3D1Test(void)
vp_data.dwHeight = 5;
vp_data.dvScaleX = 10000;
vp_data.dvScaleY = 10000;
hr = IDirect3DViewport_SetViewport(vp, &vp_data);
hr = IDirect3DViewport_SetViewport(Viewport, &vp_data);
ok(hr == D3D_OK, "IDirect3DViewport_SetViewport returned %08x\n", hr);
transformdata.lpIn = cliptest;
hr = IDirect3DViewport_TransformVertices(vp, 1,
hr = IDirect3DViewport_TransformVertices(Viewport, 1,
&transformdata, D3DTRANSFORM_UNCLIPPED,
&i);
ok(hr == D3D_OK, "IDirect3DViewport_TransformVertices returned %08x\n", hr);
ok(i == 0, "Offscreen is %d\n", i);
hr = IDirect3DViewport_TransformVertices(vp, 1,
hr = IDirect3DViewport_TransformVertices(Viewport, 1,
&transformdata, D3DTRANSFORM_CLIPPED,
&i);
ok(hr == D3D_OK, "IDirect3DViewport_TransformVertices returned %08x\n", hr);
ok(i == (D3DCLIP_RIGHT | D3DCLIP_TOP), "Offscreen is %d\n", i);
hr = IDirect3DViewport_TransformVertices(vp, 2,
hr = IDirect3DViewport_TransformVertices(Viewport, 2,
&transformdata, D3DTRANSFORM_CLIPPED,
&i);
ok(hr == D3D_OK, "IDirect3DViewport_TransformVertices returned %08x\n", hr);
ok(i == 0, "Offscreen is %d\n", i);
transformdata.lpIn = cliptest + 1;
hr = IDirect3DViewport_TransformVertices(vp, 1,
hr = IDirect3DViewport_TransformVertices(Viewport, 1,
&transformdata, D3DTRANSFORM_CLIPPED,
&i);
ok(hr == D3D_OK, "IDirect3DViewport_TransformVertices returned %08x\n", hr);
@ -1281,38 +1321,30 @@ static void Direct3D1Test(void)
vp_data.dwHeight = 257;
vp_data.dvScaleX = 1;
vp_data.dvScaleY = 1;
hr = IDirect3DViewport_SetViewport(vp, &vp_data);
hr = IDirect3DViewport_SetViewport(Viewport, &vp_data);
i = 12345;
hr = IDirect3DViewport_TransformVertices(vp, sizeof(offscreentest) / sizeof(offscreentest[0]),
hr = IDirect3DViewport_TransformVertices(Viewport, sizeof(offscreentest) / sizeof(offscreentest[0]),
&transformdata, D3DTRANSFORM_CLIPPED,
&i);
ok(hr == D3D_OK, "IDirect3DViewport_TransformVertices returned %08x\n", hr);
ok(i == 0, "Offscreen is %d\n", i);
vp_data.dwWidth = 256;
vp_data.dwHeight = 256;
hr = IDirect3DViewport_SetViewport(vp, &vp_data);
hr = IDirect3DViewport_SetViewport(Viewport, &vp_data);
i = 12345;
hr = IDirect3DViewport_TransformVertices(vp, sizeof(offscreentest) / sizeof(offscreentest[0]),
hr = IDirect3DViewport_TransformVertices(Viewport, sizeof(offscreentest) / sizeof(offscreentest[0]),
&transformdata, D3DTRANSFORM_CLIPPED,
&i);
ok(hr == D3D_OK, "IDirect3DViewport_TransformVertices returned %08x\n", hr);
ok(i == D3DCLIP_RIGHT, "Offscreen is %d\n", i);
hr = IDirect3DViewport_TransformVertices(vp, sizeof(testverts) / sizeof(testverts[0]),
hr = IDirect3DViewport_TransformVertices(Viewport, sizeof(testverts) / sizeof(testverts[0]),
&transformdata, 0,
&i);
ok(hr == DDERR_INVALIDPARAMS, "IDirect3DViewport_TransformVertices returned %08x\n", hr);
hr = IDirect3DDevice_DeleteViewport(dev1, vp);
hr = IDirect3DDevice_DeleteViewport(Direct3DDevice1, Viewport);
ok(hr == D3D_OK, "IDirect3DDevice_DeleteViewport returned %08x\n", hr);
IDirect3DViewport_Release(vp);
IDirect3DExecuteBuffer_Release(exebuf);
IDirect3DDevice_Release(dev1);
IDirectDrawSurface_Release(dds);
IDirect3D_Release(d3d);
IDirectDraw_Release(dd);
return;
}
START_TEST(d3d)
@ -1324,16 +1356,22 @@ START_TEST(d3d)
}
if(!CreateDirect3D()) {
trace("Skipping tests\n");
return;
skip("Skipping d3d7 tests\n");
} else {
LightTest();
ProcessVerticesTest();
StateTest();
SceneTest();
LimitTest();
D3D7EnumTest();
CapsTest();
ReleaseDirect3D();
}
if (!D3D1_createObjects()) {
skip("Skipping d3d1 tests\n");
} else {
Direct3D1Test();
D3D1_releaseObjects();
}
LightTest();
ProcessVerticesTest();
StateTest();
SceneTest();
LimitTest();
D3D7EnumTest();
CapsTest();
ReleaseDirect3D();
Direct3D1Test();
}