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