Stefan Dösinger : wined3d: Some texture transform test corrections.

Alexandre Julliard julliard at winehq.org
Tue Feb 5 06:35:03 CST 2008


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

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Fri Feb  1 01:52:17 2008 +0100

wined3d: Some texture transform test corrections.

---

 dlls/d3d9/tests/visual.c |   28 ++++++++++++++++++----------
 1 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
index 5396556..7277e37 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -2365,7 +2365,9 @@ static void texture_transform_flags_test(IDirect3DDevice9 *device)
         hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, quad1, 5 * sizeof(float));
         ok(SUCCEEDED(hr), "DrawPrimitiveUP failed (%08x)\n", hr);
 
-        /* What does this mean? Not sure... */
+        /* D3DTFF_COUNT1 does not work on Nvidia drivers. It behaves like D3DTTFF_DISABLE. On ATI drivers
+         * it behaves like COUNT2 because normal textures require 2 coords
+         */
         IDirect3DDevice9_SetTextureStageState(device, 0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT1);
         ok(SUCCEEDED(hr), "IDirect3DDevice9_SetTextureStageState failed (%08x)\n", hr);
         hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, quad4, 5 * sizeof(float));
@@ -2398,9 +2400,11 @@ static void texture_transform_flags_test(IDirect3DDevice9 *device)
     color = getPixelColor(device, 160, 120);
     ok(color == 0x00000000, "quad 2 has color %08x, expected 0x0000000\n", color);
     color = getPixelColor(device, 480, 120);
-    ok(color == 0x00ff8000 || color == 0x00fe7f00, "quad 3 has color %08x, expected 0x00ff8000\n", color);
+    ok(color == 0x00ff8000 || color == 0x00fe7f00 || color == 0x00000000,
+       "quad 3 has color %08x, expected 0x00ff8000\n", color);
     color = getPixelColor(device, 480, 360);
-    ok(color == 0x0033cc00 || color == 0x0032cb00, "quad 4 has color %08x, expected 0x0033cc00\n", color);
+    ok(color == 0x0033cc00 || color == 0x0032cb00 || color == 0x00FF0000 || color == 0x00FE0000,
+       "quad 4 has color %08x, expected 0x0033cc00\n", color);
 
     IDirect3DTexture9_Release(texture);
 
@@ -2479,9 +2483,9 @@ static void texture_transform_flags_test(IDirect3DDevice9 *device)
              1.0,       0.0,       0.1,     1.0,    1.0,    1.0
         };
         float mat[16] = {1.0, 0.0, 0.0, 0.0,
-                          0.0, 0.0, 1.0, 0.0,
-                          0.0, 1.0, 0.0, 0.0,
-                          0.0, 0.0, 0.0, 1.0};
+                         0.0, 0.0, 1.0, 0.0,
+                         0.0, 1.0, 0.0, 0.0,
+                         0.0, 0.0, 0.0, 1.0};
         hr = IDirect3DDevice9_SetVertexDeclaration(device, decl);
         ok(hr == D3D_OK, "IDirect3DDevice9_SetVertexDeclaration failed with %s\n", DXGetErrorString9(hr));
 
@@ -2498,7 +2502,8 @@ static void texture_transform_flags_test(IDirect3DDevice9 *device)
         /* Now disable the w coordinate. Does that change the input, or the output. The coordinates
          * are swapped by the matrix. If it changes the input, the v coord will be missing(green),
          * otherwise the w will be missing(blue).
-         * turns out that the blue color is missing, so it is an output modification
+         * turns out that on nvidia cards the blue color is missing, so it is an output modification.
+         * On ATI cards the COUNT2 is ignored, and it behaves in the same way as COUNT3.
          */
         IDirect3DDevice9_SetTextureStageState(device, 0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2);
         ok(hr == D3D_OK, "IDirect3DDevice9_SetTextureStageState failed (%08x)\n", hr);
@@ -2515,7 +2520,9 @@ static void texture_transform_flags_test(IDirect3DDevice9 *device)
         hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, quad3, 5 * sizeof(float));
         ok(hr == D3D_OK, "DrawPrimitiveUP failed (%08x)\n", hr);
 
-        /* D3DTTFF_COUNT1. Set a NULL matrix, and count1, pass in all values as 1.0 */
+        /* D3DTTFF_COUNT1. Set a NULL matrix, and count1, pass in all values as 1.0. Nvidia has count1 ==
+         * disable. ATI extends it up to the amount of values needed for the volume texture
+         */
         memset(mat, 0, sizeof(mat));
         hr = IDirect3DDevice9_SetTransform(device, D3DTS_TEXTURE0, (D3DMATRIX *) mat);
         ok(hr == D3D_OK, "IDirect3DDevice9_SetTransform failed with %s\n", DXGetErrorString9(hr));
@@ -2535,11 +2542,12 @@ static void texture_transform_flags_test(IDirect3DDevice9 *device)
     color = getPixelColor(device, 160, 360);
     ok(color == 0x00ffffff, "quad 1 has color %08x, expected 0x00ffffff\n", color);
     color = getPixelColor(device, 160, 120);
-    ok(color == 0x00ffff00, "quad 2 has color %08x, expected 0x00ffff00\n", color);
+    ok(color == 0x00ffff00 /* NV*/ || color == 0x00ffffff /* ATI */,
+       "quad 2 has color %08x, expected 0x00ffff00\n", color);
     color = getPixelColor(device, 480, 120);
     ok(color == 0x000000ff, "quad 3 has color %08x, expected 0x000000ff\n", color);
     color = getPixelColor(device, 480, 360);
-    ok(color == 0x00ffffff, "quad 4 has color %08x, expected 0x00ffffff\n", color);
+    ok(color == 0x00ffffff || color == 0x0000ff00, "quad 4 has color %08x, expected 0x00ffffff\n", color);
 
     hr = IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_TARGET, 0xff303030, 0.0, 0);
     ok(hr == D3D_OK, "IDirect3DDevice9_Clear returned %s\n", DXGetErrorString9(hr));




More information about the wine-cvs mailing list