mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-02 17:13:37 +00:00
ddraw/tests: Make test_texture_wrong_caps() a bit clearer.
* Disable lighting, which affects rendering tests in non-obvious ways. * Show that the texture is explicitly never set in ddraw7. * Show that the diffuse color is rendered in ddraw4 and ddraw7, which is consistent with the texture being unset in ddraw7 and suggests that the same applies to ddraw4. This may or may not help with bug 54069, but if it does not, it hopefully will at least make the reason for failure clearer.
This commit is contained in:
parent
4ac9d12522
commit
99cbab729b
|
@ -14748,6 +14748,7 @@ static void test_texture_wrong_caps(const GUID *device_guid)
|
|||
ptr = (BYTE *)exec_desc.lpData + sizeof(quad);
|
||||
emit_process_vertices(&ptr, D3DPROCESSVERTICES_COPY, 0, 4);
|
||||
emit_set_rs(&ptr, D3DRENDERSTATE_TEXTUREHANDLE, texture_handle);
|
||||
emit_set_rs(&ptr, D3DRENDERSTATE_LIGHTING, FALSE);
|
||||
emit_tquad(&ptr, 0);
|
||||
emit_end(&ptr);
|
||||
inst_length = (BYTE *)ptr - (BYTE *)exec_desc.lpData - sizeof(quad);
|
||||
|
|
|
@ -15651,9 +15651,9 @@ static void test_texture_wrong_caps(const GUID *device_guid)
|
|||
{32}, {0x00ff0000}, {0x0000ff00}, {0x000000ff}, {0xff000000}
|
||||
};
|
||||
D3DRECT clear_rect = {{0}, {0}, {640}, {480}};
|
||||
D3DTEXTUREHANDLE texture_handle, ret_handle;
|
||||
unsigned int color, expected_color;
|
||||
IDirectDrawSurface *surface, *rt;
|
||||
D3DTEXTUREHANDLE texture_handle;
|
||||
IDirect3DMaterial2 *background;
|
||||
IDirect3DViewport2 *viewport;
|
||||
IDirect3DTexture2 *texture;
|
||||
|
@ -15698,8 +15698,14 @@ static void test_texture_wrong_caps(const GUID *device_guid)
|
|||
|
||||
hr = IDirect3DDevice2_SetRenderState(device, D3DRENDERSTATE_ZENABLE, D3DZB_FALSE);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
hr = IDirect3DDevice2_SetRenderState(device, D3DRENDERSTATE_LIGHTING, FALSE);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
hr = IDirect3DDevice2_SetRenderState(device, D3DRENDERSTATE_TEXTUREHANDLE, texture_handle);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
hr = IDirect3DDevice2_GetRenderState(device, D3DRENDERSTATE_TEXTUREHANDLE, &ret_handle);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
todo_wine_if (!is_software_device_type(device_guid))
|
||||
ok(ret_handle == texture_handle, "Got handle %#lx.\n", ret_handle);
|
||||
|
||||
background = create_diffuse_material(device, 1.0f, 0.0f, 0.0f, 1.0f);
|
||||
viewport_set_background(device, viewport, background);
|
||||
|
|
|
@ -18697,14 +18697,15 @@ static void test_texture_wrong_caps(const GUID *device_guid)
|
|||
static struct
|
||||
{
|
||||
struct vec3 position;
|
||||
unsigned int diffuse;
|
||||
struct vec2 texcoord;
|
||||
}
|
||||
quad[] =
|
||||
{
|
||||
{{-1.0f, -1.0f, 0.0f}, {0.0f, 1.0f}},
|
||||
{{-1.0f, 1.0f, 0.0f}, {0.0f, 0.0f}},
|
||||
{{ 1.0f, -1.0f, 0.0f}, {1.0f, 1.0f}},
|
||||
{{ 1.0f, 1.0f, 0.0f}, {1.0f, 0.0f}},
|
||||
{{-1.0f, -1.0f, 0.0f}, 0x00ff0000, {0.0f, 1.0f}},
|
||||
{{-1.0f, 1.0f, 0.0f}, 0x00ff0000, {0.0f, 0.0f}},
|
||||
{{ 1.0f, -1.0f, 0.0f}, 0x00ff0000, {1.0f, 1.0f}},
|
||||
{{ 1.0f, 1.0f, 0.0f}, 0x00ff0000, {1.0f, 0.0f}},
|
||||
};
|
||||
static DDPIXELFORMAT fmt =
|
||||
{
|
||||
|
@ -18712,10 +18713,10 @@ static void test_texture_wrong_caps(const GUID *device_guid)
|
|||
{32}, {0x00ff0000}, {0x0000ff00}, {0x000000ff}, {0xff000000}
|
||||
};
|
||||
D3DRECT clear_rect = {{0}, {0}, {640}, {480}};
|
||||
IDirect3DTexture2 *texture, *ret_texture;
|
||||
unsigned int color, expected_color;
|
||||
IDirectDrawSurface4 *surface, *rt;
|
||||
IDirect3DViewport3 *viewport;
|
||||
IDirect3DTexture2 *texture;
|
||||
IDirect3DDevice3 *device;
|
||||
IDirectDraw4 *ddraw;
|
||||
DDSURFACEDESC2 ddsd;
|
||||
|
@ -18758,6 +18759,8 @@ static void test_texture_wrong_caps(const GUID *device_guid)
|
|||
|
||||
hr = IDirect3DDevice3_SetRenderState(device, D3DRENDERSTATE_ZENABLE, D3DZB_FALSE);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
hr = IDirect3DDevice3_SetRenderState(device, D3DRENDERSTATE_LIGHTING, FALSE);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
|
||||
hr = IDirect3DDevice3_SetTextureStageState(device, 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
|
@ -18766,21 +18769,26 @@ static void test_texture_wrong_caps(const GUID *device_guid)
|
|||
hr = IDirect3DDevice3_SetTextureStageState(device, 0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
hr = IDirect3DDevice3_SetTextureStageState(device, 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
|
||||
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
|
||||
hr = IDirect3DDevice3_SetTexture(device, 0, texture);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
hr = IDirect3DDevice3_GetTexture(device, 0, &ret_texture);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
todo_wine_if (!is_software_device_type(device_guid))
|
||||
ok(ret_texture == texture, "Got texture %p.\n", ret_texture);
|
||||
|
||||
hr = IDirect3DViewport3_Clear2(viewport, 1, &clear_rect, D3DCLEAR_TARGET, 0x000000ff, 0.0f, 0);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
hr = IDirect3DDevice3_BeginScene(device);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
hr = IDirect3DDevice3_DrawPrimitive(device, D3DPT_TRIANGLESTRIP,
|
||||
D3DFVF_XYZ | D3DFVF_TEX1, quad, 4, 0);
|
||||
D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1, quad, 4, 0);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
hr = IDirect3DDevice3_EndScene(device);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
|
||||
expected_color = is_software_device_type(device_guid) ? 0x0000ff00 : 0x00ffffff;
|
||||
expected_color = is_software_device_type(device_guid) ? 0x0000ff00 : 0x00ff0000;
|
||||
color = get_surface_color(rt, 320, 240);
|
||||
ok(color == expected_color, "Got color 0x%08x, expected 0x%08x.\n", color, expected_color);
|
||||
|
||||
|
|
|
@ -19031,21 +19031,22 @@ static void test_texture_wrong_caps(const GUID *device_guid)
|
|||
static struct
|
||||
{
|
||||
struct vec3 position;
|
||||
unsigned int diffuse;
|
||||
struct vec2 texcoord;
|
||||
}
|
||||
quad[] =
|
||||
{
|
||||
{{-1.0f, -1.0f, 0.0f}, {0.0f, 1.0f}},
|
||||
{{-1.0f, 1.0f, 0.0f}, {0.0f, 0.0f}},
|
||||
{{ 1.0f, -1.0f, 0.0f}, {1.0f, 1.0f}},
|
||||
{{ 1.0f, 1.0f, 0.0f}, {1.0f, 0.0f}},
|
||||
{{-1.0f, -1.0f, 0.0f}, 0x00ff0000, {0.0f, 1.0f}},
|
||||
{{-1.0f, 1.0f, 0.0f}, 0x00ff0000, {0.0f, 0.0f}},
|
||||
{{ 1.0f, -1.0f, 0.0f}, 0x00ff0000, {1.0f, 1.0f}},
|
||||
{{ 1.0f, 1.0f, 0.0f}, 0x00ff0000, {1.0f, 0.0f}},
|
||||
};
|
||||
static DDPIXELFORMAT fmt =
|
||||
{
|
||||
sizeof(DDPIXELFORMAT), DDPF_RGB | DDPF_ALPHAPIXELS, 0,
|
||||
{32}, {0x00ff0000}, {0x0000ff00}, {0x000000ff}, {0xff000000}
|
||||
};
|
||||
IDirectDrawSurface7 *surface, *rt;
|
||||
IDirectDrawSurface7 *surface, *rt, *ret_surface;
|
||||
IDirect3DDevice7 *device;
|
||||
IDirectDraw7 *ddraw;
|
||||
DDSURFACEDESC2 ddsd;
|
||||
|
@ -19083,6 +19084,8 @@ static void test_texture_wrong_caps(const GUID *device_guid)
|
|||
|
||||
hr = IDirect3DDevice7_SetRenderState(device, D3DRENDERSTATE_ZENABLE, D3DZB_FALSE);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
hr = IDirect3DDevice7_SetRenderState(device, D3DRENDERSTATE_LIGHTING, FALSE);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
|
||||
hr = IDirect3DDevice7_SetTextureStageState(device, 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
|
@ -19095,6 +19098,9 @@ static void test_texture_wrong_caps(const GUID *device_guid)
|
|||
|
||||
hr = IDirect3DDevice7_SetTexture(device, 0, surface);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
hr = IDirect3DDevice7_GetTexture(device, 0, &ret_surface);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
ok(!ret_surface, "Got surface %p.\n", ret_surface);
|
||||
|
||||
hr = IDirect3DDevice7_Clear(device, 0, NULL, D3DCLEAR_TARGET, 0x000000ff, 0.0f, 0);
|
||||
ok(hr == DD_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
|
@ -19104,13 +19110,13 @@ static void test_texture_wrong_caps(const GUID *device_guid)
|
|||
hr = IDirect3DDevice7_BeginScene(device);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
hr = IDirect3DDevice7_DrawPrimitive(device, D3DPT_TRIANGLESTRIP,
|
||||
D3DFVF_XYZ | D3DFVF_TEX1, quad, 4, 0);
|
||||
D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1, quad, 4, 0);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
hr = IDirect3DDevice7_EndScene(device);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#lx.\n", hr);
|
||||
|
||||
color = get_surface_color(rt, 320, 240);
|
||||
ok(color == 0, "Got unexpected color 0x%08x.\n", color);
|
||||
ok(color == 0x00ff0000, "Got unexpected color 0x%08x.\n", color);
|
||||
|
||||
IDirectDrawSurface7_Release(surface);
|
||||
IDirectDrawSurface7_Release(rt);
|
||||
|
|
Loading…
Reference in a new issue