[PATCH 1/5] ddraw/tests: Add a test for the alpha and z-buffer blit flags.

Henri Verbeet hverbeet at codeweavers.com
Mon Apr 24 16:31:29 CDT 2017


Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
---
 dlls/ddraw/tests/ddraw1.c | 100 ++++++++++++++++++++++++++++++++++++++++++++++
 dlls/ddraw/tests/ddraw2.c | 100 ++++++++++++++++++++++++++++++++++++++++++++++
 dlls/ddraw/tests/ddraw4.c | 100 ++++++++++++++++++++++++++++++++++++++++++++++
 dlls/ddraw/tests/ddraw7.c | 100 ++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 400 insertions(+)

diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c
index 78718d0..68f56ff 100644
--- a/dlls/ddraw/tests/ddraw1.c
+++ b/dlls/ddraw/tests/ddraw1.c
@@ -8873,6 +8873,105 @@ static void test_blt(void)
     DestroyWindow(window);
 }
 
+static void test_blt_z_alpha(void)
+{
+    DWORD blt_flags[] =
+    {
+        /* 0 */
+        DDBLT_ALPHADEST,
+        DDBLT_ALPHADESTCONSTOVERRIDE,
+        DDBLT_ALPHADESTNEG,
+        DDBLT_ALPHADESTSURFACEOVERRIDE,
+        DDBLT_ALPHAEDGEBLEND,
+        /* 5 */
+        DDBLT_ALPHASRC,
+        DDBLT_ALPHASRCCONSTOVERRIDE,
+        DDBLT_ALPHASRCNEG,
+        DDBLT_ALPHASRCSURFACEOVERRIDE,
+        DDBLT_ZBUFFER,
+        /* 10 */
+        DDBLT_ZBUFFERDESTCONSTOVERRIDE,
+        DDBLT_ZBUFFERDESTOVERRIDE,
+        DDBLT_ZBUFFERSRCCONSTOVERRIDE,
+        DDBLT_ZBUFFERSRCOVERRIDE,
+    };
+    IDirectDrawSurface *src_surface, *dst_surface;
+    DDSURFACEDESC surface_desc;
+    IDirectDraw *ddraw;
+    DDPIXELFORMAT pf;
+    ULONG refcount;
+    unsigned int i;
+    D3DCOLOR color;
+    HWND window;
+    HRESULT hr;
+    DDBLTFX fx;
+
+    window = create_window();
+    ddraw = create_ddraw();
+    ok(!!ddraw, "Failed to create a ddraw object.\n");
+    hr = IDirectDraw_SetCooperativeLevel(ddraw, window, DDSCL_NORMAL);
+    ok(SUCCEEDED(hr), "Failed to set cooperative level, hr %#x.\n", hr);
+
+    memset(&pf, 0, sizeof(pf));
+    pf.dwSize = sizeof(pf);
+    pf.dwFlags = DDPF_RGB | DDPF_ALPHAPIXELS;
+    U1(pf).dwRGBBitCount = 32;
+    U2(pf).dwRBitMask = 0x00ff0000;
+    U3(pf).dwGBitMask = 0x0000ff00;
+    U4(pf).dwBBitMask = 0x000000ff;
+    U5(pf).dwRGBAlphaBitMask = 0xff000000;
+
+    memset(&surface_desc, 0, sizeof(surface_desc));
+    surface_desc.dwSize = sizeof(surface_desc);
+    surface_desc.dwFlags = DDSD_WIDTH | DDSD_HEIGHT | DDSD_CAPS | DDSD_PIXELFORMAT;
+    surface_desc.dwWidth = 64;
+    surface_desc.dwHeight = 64;
+    surface_desc.ddpfPixelFormat = pf;
+    surface_desc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
+
+    hr = IDirectDraw_CreateSurface(ddraw, &surface_desc, &src_surface, NULL);
+    ok(SUCCEEDED(hr), "Failed to create source surface, hr %#x.\n", hr);
+    hr = IDirectDraw_CreateSurface(ddraw, &surface_desc, &dst_surface, NULL);
+    ok(SUCCEEDED(hr), "Failed to create destination surface, hr %#x.\n", hr);
+
+    memset(&fx, 0, sizeof(fx));
+    fx.dwSize = sizeof(fx);
+    fx.dwZBufferOpCode = D3DCMP_NEVER;
+    fx.dwZDestConstBitDepth = 32;
+    U1(fx).dwZDestConst = 0x11111111;
+    fx.dwZSrcConstBitDepth = 32;
+    U2(fx).dwZSrcConst = 0xeeeeeeee;
+    fx.dwAlphaEdgeBlendBitDepth = 8;
+    fx.dwAlphaEdgeBlend = 0x7f;
+    fx.dwAlphaDestConstBitDepth = 8;
+    U3(fx).dwAlphaDestConst = 0xdd;
+    fx.dwAlphaSrcConstBitDepth = 8;
+    U4(fx).dwAlphaSrcConst = 0x22;
+
+    for (i = 0; i < sizeof(blt_flags) / sizeof(*blt_flags); ++i)
+    {
+        fx.dwFillColor = 0x3300ff00;
+        hr = IDirectDrawSurface_Blt(src_surface, NULL, NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &fx);
+        ok(SUCCEEDED(hr), "Test %u: Got unexpected hr %#x.\n", i, hr);
+
+        fx.dwFillColor = 0xccff0000;
+        hr = IDirectDrawSurface_Blt(dst_surface, NULL, NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &fx);
+        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);
+
+        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);
+    }
+
+    IDirectDrawSurface_Release(dst_surface);
+    IDirectDrawSurface_Release(src_surface);
+    refcount = IDirectDraw_Release(ddraw);
+    ok(!refcount, "DirectDraw has %u references left.\n", refcount);
+    DestroyWindow(window);
+}
+
 static void test_getdc(void)
 {
     IDirectDrawSurface *surface, *surface2, *tmp;
@@ -10738,6 +10837,7 @@ START_TEST(ddraw1)
     test_offscreen_overlay();
     test_overlay_rect();
     test_blt();
+    test_blt_z_alpha();
     test_getdc();
     test_transform_vertices();
     test_display_mode_surface_pixel_format();
diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c
index 547505d..df734f1 100644
--- a/dlls/ddraw/tests/ddraw2.c
+++ b/dlls/ddraw/tests/ddraw2.c
@@ -9961,6 +9961,105 @@ static void test_blt(void)
     DestroyWindow(window);
 }
 
+static void test_blt_z_alpha(void)
+{
+    DWORD blt_flags[] =
+    {
+        /* 0 */
+        DDBLT_ALPHADEST,
+        DDBLT_ALPHADESTCONSTOVERRIDE,
+        DDBLT_ALPHADESTNEG,
+        DDBLT_ALPHADESTSURFACEOVERRIDE,
+        DDBLT_ALPHAEDGEBLEND,
+        /* 5 */
+        DDBLT_ALPHASRC,
+        DDBLT_ALPHASRCCONSTOVERRIDE,
+        DDBLT_ALPHASRCNEG,
+        DDBLT_ALPHASRCSURFACEOVERRIDE,
+        DDBLT_ZBUFFER,
+        /* 10 */
+        DDBLT_ZBUFFERDESTCONSTOVERRIDE,
+        DDBLT_ZBUFFERDESTOVERRIDE,
+        DDBLT_ZBUFFERSRCCONSTOVERRIDE,
+        DDBLT_ZBUFFERSRCOVERRIDE,
+    };
+    IDirectDrawSurface *src_surface, *dst_surface;
+    DDSURFACEDESC surface_desc;
+    IDirectDraw2 *ddraw;
+    DDPIXELFORMAT pf;
+    ULONG refcount;
+    unsigned int i;
+    D3DCOLOR color;
+    HWND window;
+    HRESULT hr;
+    DDBLTFX fx;
+
+    window = create_window();
+    ddraw = create_ddraw();
+    ok(!!ddraw, "Failed to create a ddraw object.\n");
+    hr = IDirectDraw2_SetCooperativeLevel(ddraw, window, DDSCL_NORMAL);
+    ok(SUCCEEDED(hr), "Failed to set cooperative level, hr %#x.\n", hr);
+
+    memset(&pf, 0, sizeof(pf));
+    pf.dwSize = sizeof(pf);
+    pf.dwFlags = DDPF_RGB | DDPF_ALPHAPIXELS;
+    U1(pf).dwRGBBitCount = 32;
+    U2(pf).dwRBitMask = 0x00ff0000;
+    U3(pf).dwGBitMask = 0x0000ff00;
+    U4(pf).dwBBitMask = 0x000000ff;
+    U5(pf).dwRGBAlphaBitMask = 0xff000000;
+
+    memset(&surface_desc, 0, sizeof(surface_desc));
+    surface_desc.dwSize = sizeof(surface_desc);
+    surface_desc.dwFlags = DDSD_WIDTH | DDSD_HEIGHT | DDSD_CAPS | DDSD_PIXELFORMAT;
+    surface_desc.dwWidth = 64;
+    surface_desc.dwHeight = 64;
+    surface_desc.ddpfPixelFormat = pf;
+    surface_desc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
+
+    hr = IDirectDraw2_CreateSurface(ddraw, &surface_desc, &src_surface, NULL);
+    ok(SUCCEEDED(hr), "Failed to create source surface, hr %#x.\n", hr);
+    hr = IDirectDraw2_CreateSurface(ddraw, &surface_desc, &dst_surface, NULL);
+    ok(SUCCEEDED(hr), "Failed to create destination surface, hr %#x.\n", hr);
+
+    memset(&fx, 0, sizeof(fx));
+    fx.dwSize = sizeof(fx);
+    fx.dwZBufferOpCode = D3DCMP_NEVER;
+    fx.dwZDestConstBitDepth = 32;
+    U1(fx).dwZDestConst = 0x11111111;
+    fx.dwZSrcConstBitDepth = 32;
+    U2(fx).dwZSrcConst = 0xeeeeeeee;
+    fx.dwAlphaEdgeBlendBitDepth = 8;
+    fx.dwAlphaEdgeBlend = 0x7f;
+    fx.dwAlphaDestConstBitDepth = 8;
+    U3(fx).dwAlphaDestConst = 0xdd;
+    fx.dwAlphaSrcConstBitDepth = 8;
+    U4(fx).dwAlphaSrcConst = 0x22;
+
+    for (i = 0; i < sizeof(blt_flags) / sizeof(*blt_flags); ++i)
+    {
+        fx.dwFillColor = 0x3300ff00;
+        hr = IDirectDrawSurface_Blt(src_surface, NULL, NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &fx);
+        ok(SUCCEEDED(hr), "Test %u: Got unexpected hr %#x.\n", i, hr);
+
+        fx.dwFillColor = 0xccff0000;
+        hr = IDirectDrawSurface_Blt(dst_surface, NULL, NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &fx);
+        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);
+
+        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);
+    }
+
+    IDirectDrawSurface_Release(dst_surface);
+    IDirectDrawSurface_Release(src_surface);
+    refcount = IDirectDraw2_Release(ddraw);
+    ok(!refcount, "DirectDraw has %u references left.\n", refcount);
+    DestroyWindow(window);
+}
+
 static void test_getdc(void)
 {
     IDirectDrawSurface *surface, *surface2, *tmp;
@@ -12075,6 +12174,7 @@ START_TEST(ddraw2)
     test_offscreen_overlay();
     test_overlay_rect();
     test_blt();
+    test_blt_z_alpha();
     test_getdc();
     test_draw_primitive();
     test_edge_antialiasing_blending();
diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c
index 3dcbeda..8072bc9 100644
--- a/dlls/ddraw/tests/ddraw4.c
+++ b/dlls/ddraw/tests/ddraw4.c
@@ -11073,6 +11073,105 @@ static void test_blt(void)
     DestroyWindow(window);
 }
 
+static void test_blt_z_alpha(void)
+{
+    DWORD blt_flags[] =
+    {
+        /* 0 */
+        DDBLT_ALPHADEST,
+        DDBLT_ALPHADESTCONSTOVERRIDE,
+        DDBLT_ALPHADESTNEG,
+        DDBLT_ALPHADESTSURFACEOVERRIDE,
+        DDBLT_ALPHAEDGEBLEND,
+        /* 5 */
+        DDBLT_ALPHASRC,
+        DDBLT_ALPHASRCCONSTOVERRIDE,
+        DDBLT_ALPHASRCNEG,
+        DDBLT_ALPHASRCSURFACEOVERRIDE,
+        DDBLT_ZBUFFER,
+        /* 10 */
+        DDBLT_ZBUFFERDESTCONSTOVERRIDE,
+        DDBLT_ZBUFFERDESTOVERRIDE,
+        DDBLT_ZBUFFERSRCCONSTOVERRIDE,
+        DDBLT_ZBUFFERSRCOVERRIDE,
+    };
+    IDirectDrawSurface4 *src_surface, *dst_surface;
+    DDSURFACEDESC2 surface_desc;
+    IDirectDraw4 *ddraw;
+    DDPIXELFORMAT pf;
+    ULONG refcount;
+    unsigned int i;
+    D3DCOLOR color;
+    HWND window;
+    HRESULT hr;
+    DDBLTFX fx;
+
+    window = create_window();
+    ddraw = create_ddraw();
+    ok(!!ddraw, "Failed to create a ddraw object.\n");
+    hr = IDirectDraw4_SetCooperativeLevel(ddraw, window, DDSCL_NORMAL);
+    ok(SUCCEEDED(hr), "Failed to set cooperative level, hr %#x.\n", hr);
+
+    memset(&pf, 0, sizeof(pf));
+    pf.dwSize = sizeof(pf);
+    pf.dwFlags = DDPF_RGB | DDPF_ALPHAPIXELS;
+    U1(pf).dwRGBBitCount = 32;
+    U2(pf).dwRBitMask = 0x00ff0000;
+    U3(pf).dwGBitMask = 0x0000ff00;
+    U4(pf).dwBBitMask = 0x000000ff;
+    U5(pf).dwRGBAlphaBitMask = 0xff000000;
+
+    memset(&surface_desc, 0, sizeof(surface_desc));
+    surface_desc.dwSize = sizeof(surface_desc);
+    surface_desc.dwFlags = DDSD_WIDTH | DDSD_HEIGHT | DDSD_CAPS | DDSD_PIXELFORMAT;
+    surface_desc.dwWidth = 64;
+    surface_desc.dwHeight = 64;
+    U4(surface_desc).ddpfPixelFormat = pf;
+    surface_desc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
+
+    hr = IDirectDraw4_CreateSurface(ddraw, &surface_desc, &src_surface, NULL);
+    ok(SUCCEEDED(hr), "Failed to create source surface, hr %#x.\n", hr);
+    hr = IDirectDraw4_CreateSurface(ddraw, &surface_desc, &dst_surface, NULL);
+    ok(SUCCEEDED(hr), "Failed to create destination surface, hr %#x.\n", hr);
+
+    memset(&fx, 0, sizeof(fx));
+    fx.dwSize = sizeof(fx);
+    fx.dwZBufferOpCode = D3DCMP_NEVER;
+    fx.dwZDestConstBitDepth = 32;
+    U1(fx).dwZDestConst = 0x11111111;
+    fx.dwZSrcConstBitDepth = 32;
+    U2(fx).dwZSrcConst = 0xeeeeeeee;
+    fx.dwAlphaEdgeBlendBitDepth = 8;
+    fx.dwAlphaEdgeBlend = 0x7f;
+    fx.dwAlphaDestConstBitDepth = 8;
+    U3(fx).dwAlphaDestConst = 0xdd;
+    fx.dwAlphaSrcConstBitDepth = 8;
+    U4(fx).dwAlphaSrcConst = 0x22;
+
+    for (i = 0; i < sizeof(blt_flags) / sizeof(*blt_flags); ++i)
+    {
+        fx.dwFillColor = 0x3300ff00;
+        hr = IDirectDrawSurface4_Blt(src_surface, NULL, NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &fx);
+        ok(SUCCEEDED(hr), "Test %u: Got unexpected hr %#x.\n", i, hr);
+
+        fx.dwFillColor = 0xccff0000;
+        hr = IDirectDrawSurface4_Blt(dst_surface, NULL, NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &fx);
+        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);
+
+        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);
+    }
+
+    IDirectDrawSurface4_Release(dst_surface);
+    IDirectDrawSurface4_Release(src_surface);
+    refcount = IDirectDraw4_Release(ddraw);
+    ok(!refcount, "DirectDraw has %u references left.\n", refcount);
+    DestroyWindow(window);
+}
+
 static void test_color_clamping(void)
 {
     static D3DRECT clear_rect = {{0}, {0}, {640}, {480}};
@@ -13585,6 +13684,7 @@ START_TEST(ddraw4)
     test_offscreen_overlay();
     test_overlay_rect();
     test_blt();
+    test_blt_z_alpha();
     test_color_clamping();
     test_getdc();
     test_draw_primitive();
diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c
index 400c21a..601fcb3 100644
--- a/dlls/ddraw/tests/ddraw7.c
+++ b/dlls/ddraw/tests/ddraw7.c
@@ -11399,6 +11399,105 @@ static void test_blt(void)
     DestroyWindow(window);
 }
 
+static void test_blt_z_alpha(void)
+{
+    DWORD blt_flags[] =
+    {
+        /* 0 */
+        DDBLT_ALPHADEST,
+        DDBLT_ALPHADESTCONSTOVERRIDE,
+        DDBLT_ALPHADESTNEG,
+        DDBLT_ALPHADESTSURFACEOVERRIDE,
+        DDBLT_ALPHAEDGEBLEND,
+        /* 5 */
+        DDBLT_ALPHASRC,
+        DDBLT_ALPHASRCCONSTOVERRIDE,
+        DDBLT_ALPHASRCNEG,
+        DDBLT_ALPHASRCSURFACEOVERRIDE,
+        DDBLT_ZBUFFER,
+        /* 10 */
+        DDBLT_ZBUFFERDESTCONSTOVERRIDE,
+        DDBLT_ZBUFFERDESTOVERRIDE,
+        DDBLT_ZBUFFERSRCCONSTOVERRIDE,
+        DDBLT_ZBUFFERSRCOVERRIDE,
+    };
+    IDirectDrawSurface7 *src_surface, *dst_surface;
+    DDSURFACEDESC2 surface_desc;
+    IDirectDraw7 *ddraw;
+    DDPIXELFORMAT pf;
+    ULONG refcount;
+    unsigned int i;
+    D3DCOLOR color;
+    HWND window;
+    HRESULT hr;
+    DDBLTFX fx;
+
+    window = create_window();
+    ddraw = create_ddraw();
+    ok(!!ddraw, "Failed to create a ddraw object.\n");
+    hr = IDirectDraw7_SetCooperativeLevel(ddraw, window, DDSCL_NORMAL);
+    ok(SUCCEEDED(hr), "Failed to set cooperative level, hr %#x.\n", hr);
+
+    memset(&pf, 0, sizeof(pf));
+    pf.dwSize = sizeof(pf);
+    pf.dwFlags = DDPF_RGB | DDPF_ALPHAPIXELS;
+    U1(pf).dwRGBBitCount = 32;
+    U2(pf).dwRBitMask = 0x00ff0000;
+    U3(pf).dwGBitMask = 0x0000ff00;
+    U4(pf).dwBBitMask = 0x000000ff;
+    U5(pf).dwRGBAlphaBitMask = 0xff000000;
+
+    memset(&surface_desc, 0, sizeof(surface_desc));
+    surface_desc.dwSize = sizeof(surface_desc);
+    surface_desc.dwFlags = DDSD_WIDTH | DDSD_HEIGHT | DDSD_CAPS | DDSD_PIXELFORMAT;
+    surface_desc.dwWidth = 64;
+    surface_desc.dwHeight = 64;
+    U4(surface_desc).ddpfPixelFormat = pf;
+    surface_desc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
+
+    hr = IDirectDraw7_CreateSurface(ddraw, &surface_desc, &src_surface, NULL);
+    ok(SUCCEEDED(hr), "Failed to create source surface, hr %#x.\n", hr);
+    hr = IDirectDraw7_CreateSurface(ddraw, &surface_desc, &dst_surface, NULL);
+    ok(SUCCEEDED(hr), "Failed to create destination surface, hr %#x.\n", hr);
+
+    memset(&fx, 0, sizeof(fx));
+    fx.dwSize = sizeof(fx);
+    fx.dwZBufferOpCode = D3DCMP_NEVER;
+    fx.dwZDestConstBitDepth = 32;
+    U1(fx).dwZDestConst = 0x11111111;
+    fx.dwZSrcConstBitDepth = 32;
+    U2(fx).dwZSrcConst = 0xeeeeeeee;
+    fx.dwAlphaEdgeBlendBitDepth = 8;
+    fx.dwAlphaEdgeBlend = 0x7f;
+    fx.dwAlphaDestConstBitDepth = 8;
+    U3(fx).dwAlphaDestConst = 0xdd;
+    fx.dwAlphaSrcConstBitDepth = 8;
+    U4(fx).dwAlphaSrcConst = 0x22;
+
+    for (i = 0; i < sizeof(blt_flags) / sizeof(*blt_flags); ++i)
+    {
+        fx.dwFillColor = 0x3300ff00;
+        hr = IDirectDrawSurface7_Blt(src_surface, NULL, NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &fx);
+        ok(SUCCEEDED(hr), "Test %u: Got unexpected hr %#x.\n", i, hr);
+
+        fx.dwFillColor = 0xccff0000;
+        hr = IDirectDrawSurface7_Blt(dst_surface, NULL, NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &fx);
+        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);
+
+        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);
+    }
+
+    IDirectDrawSurface7_Release(dst_surface);
+    IDirectDrawSurface7_Release(src_surface);
+    refcount = IDirectDraw7_Release(ddraw);
+    ok(!refcount, "DirectDraw has %u references left.\n", refcount);
+    DestroyWindow(window);
+}
+
 static void test_color_clamping(void)
 {
     static D3DMATRIX mat =
@@ -13270,6 +13369,7 @@ START_TEST(ddraw7)
     test_offscreen_overlay();
     test_overlay_rect();
     test_blt();
+    test_blt_z_alpha();
     test_color_clamping();
     test_getdc();
     test_draw_primitive();
-- 
2.1.4




More information about the wine-patches mailing list