H. Verbeet : d3d: Use an alpha capable backbuffer format in the visual tests.

Alexandre Julliard julliard at winehq.org
Tue May 27 06:03:38 CDT 2008


Module: wine
Branch: master
Commit: 14b13d0687ef7474df88cda94266e32f7d0d97dd
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=14b13d0687ef7474df88cda94266e32f7d0d97dd

Author: H. Verbeet <hverbeet at gmail.com>
Date:   Sat May 24 10:33:20 2008 +0200

d3d: Use an alpha capable backbuffer format in the visual tests.

---

 dlls/d3d8/tests/visual.c |   25 ++++++++-----------------
 dlls/d3d9/tests/visual.c |   25 ++++++++-----------------
 2 files changed, 16 insertions(+), 34 deletions(-)

diff --git a/dlls/d3d8/tests/visual.c b/dlls/d3d8/tests/visual.c
index 4a9100f..e34769c 100644
--- a/dlls/d3d8/tests/visual.c
+++ b/dlls/d3d8/tests/visual.c
@@ -115,7 +115,7 @@ static IDirect3DDevice8 *init_d3d8(void)
     present_parameters.SwapEffect = D3DSWAPEFFECT_DISCARD;
     present_parameters.BackBufferWidth = 640;
     present_parameters.BackBufferHeight = 480;
-    present_parameters.BackBufferFormat = D3DFMT_X8R8G8B8;
+    present_parameters.BackBufferFormat = D3DFMT_A8R8G8B8;
     present_parameters.EnableAutoDepthStencil = TRUE;
     present_parameters.AutoDepthStencilFormat = D3DFMT_D16;
 
@@ -761,7 +761,7 @@ static void alpha_test(IDirect3DDevice8 *device)
     hr = IDirect3DDevice8_Clear(device, 0, NULL, D3DCLEAR_TARGET, 0x80ff0000, 0.0, 0);
     ok(hr == D3D_OK, "Clear failed, hr = %08x\n", hr);
 
-    hr = IDirect3DDevice8_CreateTexture(device, 128, 128, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &offscreenTexture);
+    hr = IDirect3DDevice8_CreateTexture(device, 128, 128, 1, D3DUSAGE_RENDERTARGET, D3DFMT_X8R8G8B8, D3DPOOL_DEFAULT, &offscreenTexture);
     ok(hr == D3D_OK || D3DERR_INVALIDCALL, "Creating the offscreen render target failed, hr = %#08x\n", hr);
 
     hr = IDirect3DDevice8_GetDepthStencilSurface(device, &depthstencil);
@@ -796,13 +796,7 @@ static void alpha_test(IDirect3DDevice8 *device)
     ok(hr == D3D_OK, "IDirect3DDevice8_SetRenderState failed, hr = %08x\n", hr);
     if(IDirect3DDevice8_BeginScene(device) == D3D_OK) {
 
-        /* Draw two quads, one with src alpha blending, one with dest alpha blending. The
-         * SRCALPHA / INVSRCALPHA blend doesn't give any surprises. Colors are blended based on
-         * the input alpha
-         *
-         * The DESTALPHA / INVDESTALPHA do not "work" on the regular buffer because there is no alpha.
-         * They give essentially ZERO and ONE blend factors
-         */
+        /* Draw two quads, one with src alpha blending, one with dest alpha blending. */
         hr = IDirect3DDevice8_SetRenderState(device, D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
         ok(hr == D3D_OK, "IDirect3DDevice8_SetRenderState failed, hr = %08x\n", hr);
         hr = IDirect3DDevice8_SetRenderState(device, D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
@@ -817,12 +811,9 @@ static void alpha_test(IDirect3DDevice8 *device)
         hr = IDirect3DDevice8_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, quad2, sizeof(quad2[0]));
         ok(hr == D3D_OK, "DrawPrimitiveUP failed, hr = %#08x\n", hr);
 
-        /* Switch to the offscreen buffer, and redo the testing. SRCALPHA and DESTALPHA. The offscreen buffer
-         * has a alpha channel on its own. Clear the offscreen buffer with alpha = 0.5 again, then draw the
-         * quads again. The SRCALPHA/INVSRCALPHA doesn't give any surprises, but the DESTALPHA/INVDESTALPHA
-         * blending works as supposed now - blend factor is 0.5 in both cases, not 0.75 as from the input
-         * vertices
-         */
+        /* Switch to the offscreen buffer, and redo the testing. The offscreen render target
+         * doesn't have an alpha channel. DESTALPHA and INVDESTALPHA "don't work" on render
+         * targets without alpha channel, they give essentially ZERO and ONE blend factors. */
         hr = IDirect3DDevice8_SetRenderTarget(device, offscreen, 0);
         ok(hr == D3D_OK, "Can't get back buffer, hr = %08x\n", hr);
         hr = IDirect3DDevice8_Clear(device, 0, NULL, D3DCLEAR_TARGET, 0x80ff0000, 0.0, 0);
@@ -877,7 +868,7 @@ static void alpha_test(IDirect3DDevice8 *device)
     red =   (color & 0x00ff0000) >> 16;
     green = (color & 0x0000ff00) >>  8;
     blue =  (color & 0x000000ff);
-    ok(red == 0x00 && green == 0x00 && blue >= 0xfe && blue <= 0xff ,
+    ok(red >= 0x7e && red <= 0x81 && green == 0x00 && blue >= 0x7e && blue <= 0x81,
        "DSTALPHA on frame buffer returned color %08x, expected 0x00ff0000\n", color);
 
     color = getPixelColor(device, 480, 360);
@@ -891,7 +882,7 @@ static void alpha_test(IDirect3DDevice8 *device)
     red =   (color & 0x00ff0000) >> 16;
     green = (color & 0x0000ff00) >>  8;
     blue =  (color & 0x000000ff);
-    ok(red >= 0x7e && red <= 0x81 && green == 0x00 && blue >= 0x7e && blue <= 0x81,
+    ok(red == 0x00 && green == 0x00 && blue >= 0xfe && blue <= 0xff ,
        "DSTALPHA on texture returned color %08x, expected foo\n", color);
 
     out:
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
index d7db4a3..836eb98 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -159,7 +159,7 @@ static IDirect3DDevice9 *init_d3d9(void)
     present_parameters.SwapEffect = D3DSWAPEFFECT_DISCARD;
     present_parameters.BackBufferWidth = 640;
     present_parameters.BackBufferHeight = 480;
-    present_parameters.BackBufferFormat = D3DFMT_X8R8G8B8;
+    present_parameters.BackBufferFormat = D3DFMT_A8R8G8B8;
     present_parameters.EnableAutoDepthStencil = TRUE;
     present_parameters.AutoDepthStencilFormat = D3DFMT_D24S8;
 
@@ -6671,7 +6671,7 @@ static void alpha_test(IDirect3DDevice9 *device)
     hr = IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_TARGET, 0x80ff0000, 0.0, 0);
     ok(hr == D3D_OK, "Clear failed, hr = %08x\n", hr);
 
-    hr = IDirect3DDevice9_CreateTexture(device, 128, 128, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &offscreenTexture, NULL);
+    hr = IDirect3DDevice9_CreateTexture(device, 128, 128, 1, D3DUSAGE_RENDERTARGET, D3DFMT_X8R8G8B8, D3DPOOL_DEFAULT, &offscreenTexture, NULL);
     ok(hr == D3D_OK || hr == D3DERR_INVALIDCALL, "Creating the offscreen render target failed, hr = %#08x\n", hr);
 
     hr = IDirect3DDevice9_GetBackBuffer(device, 0, 0, D3DBACKBUFFER_TYPE_MONO, &backbuffer);
@@ -6704,13 +6704,7 @@ static void alpha_test(IDirect3DDevice9 *device)
     ok(hr == D3D_OK, "IDirect3DDevice9_SetRenderState failed, hr = %08x\n", hr);
     if(IDirect3DDevice9_BeginScene(device) == D3D_OK) {
 
-        /* Draw two quads, one with src alpha blending, one with dest alpha blending. The
-         * SRCALPHA / INVSRCALPHA blend doesn't give any surprises. Colors are blended based on
-         * the input alpha
-         *
-         * The DESTALPHA / INVDESTALPHA do not "work" on the regular buffer because there is no alpha.
-         * They give essentially ZERO and ONE blend factors
-         */
+        /* Draw two quads, one with src alpha blending, one with dest alpha blending. */
         hr = IDirect3DDevice9_SetRenderState(device, D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
         ok(hr == D3D_OK, "IDirect3DDevice9_SetRenderState failed, hr = %08x\n", hr);
         hr = IDirect3DDevice9_SetRenderState(device, D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
@@ -6725,12 +6719,9 @@ static void alpha_test(IDirect3DDevice9 *device)
         hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, quad2, sizeof(quad2[0]));
         ok(hr == D3D_OK, "DrawPrimitiveUP failed, hr = %#08x\n", hr);
 
-        /* Switch to the offscreen buffer, and redo the testing. SRCALPHA and DESTALPHA. The offscreen buffer
-         * has a alpha channel on its own. Clear the offscreen buffer with alpha = 0.5 again, then draw the
-         * quads again. The SRCALPHA/INVSRCALPHA doesn't give any surprises, but the DESTALPHA/INVDESTALPHA
-         * blending works as supposed now - blend factor is 0.5 in both cases, not 0.75 as from the input
-         * vertices
-         */
+        /* Switch to the offscreen buffer, and redo the testing. The offscreen render target
+         * doesn't have an alpha channel. DESTALPHA and INVDESTALPHA "don't work" on render
+         * targets without alpha channel, they give essentially ZERO and ONE blend factors. */
         hr = IDirect3DDevice9_SetRenderTarget(device, 0, offscreen);
         ok(hr == D3D_OK, "Can't get back buffer, hr = %08x\n", hr);
         hr = IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_TARGET, 0x80ff0000, 0.0, 0);
@@ -6785,7 +6776,7 @@ static void alpha_test(IDirect3DDevice9 *device)
     red =   (color & 0x00ff0000) >> 16;
     green = (color & 0x0000ff00) >>  8;
     blue =  (color & 0x000000ff);
-    ok(red == 0x00 && green == 0x00 && blue >= 0xfe && blue <= 0xff ,
+    ok(red >= 0x7e && red <= 0x81 && green == 0x00 && blue >= 0x7e && blue <= 0x81,
        "DSTALPHA on frame buffer returned color %08x, expected 0x00ff0000\n", color);
 
     color = getPixelColor(device, 480, 360);
@@ -6799,7 +6790,7 @@ static void alpha_test(IDirect3DDevice9 *device)
     red =   (color & 0x00ff0000) >> 16;
     green = (color & 0x0000ff00) >>  8;
     blue =  (color & 0x000000ff);
-    ok(red >= 0x7e && red <= 0x81 && green == 0x00 && blue >= 0x7e && blue <= 0x81,
+    ok(red == 0x00 && green == 0x00 && blue >= 0xfe && blue <= 0xff ,
        "DSTALPHA on texture returned color %08x, expected 0x00800080\n", color);
 
     out:




More information about the wine-cvs mailing list