Commit 6b415013 authored by Henri Verbeet's avatar Henri Verbeet Committed by Alexandre Julliard

ddraw: Ignore unsupported blit flags.

parent 45b01908
......@@ -1570,6 +1570,7 @@ static HRESULT WINAPI DECLSPEC_HOTPATCH ddraw_surface7_Blt(IDirectDrawSurface7 *
struct ddraw_surface *dst_impl = impl_from_IDirectDrawSurface7(iface);
struct ddraw_surface *src_impl = unsafe_impl_from_IDirectDrawSurface7(src_surface);
struct wined3d_blt_fx wined3d_fx;
DWORD unsupported_flags;
DWORD fill_colour = 0;
HRESULT hr = DD_OK;
DDBLTFX rop_fx;
......@@ -1577,9 +1578,26 @@ static HRESULT WINAPI DECLSPEC_HOTPATCH ddraw_surface7_Blt(IDirectDrawSurface7 *
TRACE("iface %p, dst_rect %s, src_surface %p, src_rect %s, flags %#x, fx %p.\n",
iface, wine_dbgstr_rect(dst_rect), src_surface, wine_dbgstr_rect(src_rect), flags, fx);
/* Check for validity of the flags here. WineD3D Has the software-opengl selection path and would have
* to check at 2 places, and sometimes do double checks. This also saves the call to wined3d :-)
*/
unsupported_flags = DDBLT_ALPHADEST
| DDBLT_ALPHADESTCONSTOVERRIDE
| DDBLT_ALPHADESTNEG
| DDBLT_ALPHADESTSURFACEOVERRIDE
| DDBLT_ALPHAEDGEBLEND
| DDBLT_ALPHASRC
| DDBLT_ALPHASRCCONSTOVERRIDE
| DDBLT_ALPHASRCNEG
| DDBLT_ALPHASRCSURFACEOVERRIDE
| DDBLT_ZBUFFER
| DDBLT_ZBUFFERDESTCONSTOVERRIDE
| DDBLT_ZBUFFERDESTOVERRIDE
| DDBLT_ZBUFFERSRCCONSTOVERRIDE
| DDBLT_ZBUFFERSRCOVERRIDE;
if (flags & unsupported_flags)
{
WARN("Ignoring unsupported flags %#x.\n", flags & unsupported_flags);
flags &= ~unsupported_flags;
}
if ((flags & DDBLT_KEYSRCOVERRIDE) && (!fx || flags & DDBLT_KEYSRC))
{
WARN("Invalid source color key parameters, returning DDERR_INVALIDPARAMS\n");
......
......@@ -8959,10 +8959,10 @@ static void test_blt_z_alpha(void)
ok(SUCCEEDED(hr), "Test %u: Got unexpected hr %#x.\n", i, hr);
hr = IDirectDrawSurface_Blt(dst_surface, NULL, src_surface, NULL, blt_flags[i] | DDBLT_WAIT, &fx);
todo_wine ok(SUCCEEDED(hr), "Test %u: Got unexpected hr %#x.\n", i, hr);
ok(SUCCEEDED(hr), "Test %u: Got unexpected hr %#x.\n", i, hr);
color = get_surface_color(dst_surface, 32, 32);
todo_wine ok(compare_color(color, 0x0000ff00, 0), "Test %u: Got unexpected color 0x%08x.\n", i, color);
ok(compare_color(color, 0x0000ff00, 0), "Test %u: Got unexpected color 0x%08x.\n", i, color);
}
IDirectDrawSurface_Release(dst_surface);
......
......@@ -10047,10 +10047,10 @@ static void test_blt_z_alpha(void)
ok(SUCCEEDED(hr), "Test %u: Got unexpected hr %#x.\n", i, hr);
hr = IDirectDrawSurface_Blt(dst_surface, NULL, src_surface, NULL, blt_flags[i] | DDBLT_WAIT, &fx);
todo_wine ok(SUCCEEDED(hr), "Test %u: Got unexpected hr %#x.\n", i, hr);
ok(SUCCEEDED(hr), "Test %u: Got unexpected hr %#x.\n", i, hr);
color = get_surface_color(dst_surface, 32, 32);
todo_wine ok(compare_color(color, 0x0000ff00, 0), "Test %u: Got unexpected color 0x%08x.\n", i, color);
ok(compare_color(color, 0x0000ff00, 0), "Test %u: Got unexpected color 0x%08x.\n", i, color);
}
IDirectDrawSurface_Release(dst_surface);
......
......@@ -11159,10 +11159,10 @@ static void test_blt_z_alpha(void)
ok(SUCCEEDED(hr), "Test %u: Got unexpected hr %#x.\n", i, hr);
hr = IDirectDrawSurface4_Blt(dst_surface, NULL, src_surface, NULL, blt_flags[i] | DDBLT_WAIT, &fx);
todo_wine ok(SUCCEEDED(hr), "Test %u: Got unexpected hr %#x.\n", i, hr);
ok(SUCCEEDED(hr), "Test %u: Got unexpected hr %#x.\n", i, hr);
color = get_surface_color(dst_surface, 32, 32);
todo_wine ok(compare_color(color, 0x0000ff00, 0), "Test %u: Got unexpected color 0x%08x.\n", i, color);
ok(compare_color(color, 0x0000ff00, 0), "Test %u: Got unexpected color 0x%08x.\n", i, color);
}
IDirectDrawSurface4_Release(dst_surface);
......
......@@ -11485,10 +11485,10 @@ static void test_blt_z_alpha(void)
ok(SUCCEEDED(hr), "Test %u: Got unexpected hr %#x.\n", i, hr);
hr = IDirectDrawSurface7_Blt(dst_surface, NULL, src_surface, NULL, blt_flags[i] | DDBLT_WAIT, &fx);
todo_wine ok(SUCCEEDED(hr), "Test %u: Got unexpected hr %#x.\n", i, hr);
ok(SUCCEEDED(hr), "Test %u: Got unexpected hr %#x.\n", i, hr);
color = get_surface_color(dst_surface, 32, 32);
todo_wine ok(compare_color(color, 0x0000ff00, 0), "Test %u: Got unexpected color 0x%08x.\n", i, color);
ok(compare_color(color, 0x0000ff00, 0), "Test %u: Got unexpected color 0x%08x.\n", i, color);
}
IDirectDrawSurface7_Release(dst_surface);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment