=?UTF-8?Q?Stefan=20D=C3=B6singer=20?=: d3d8/tests: oFog is not initialized on r200.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Mar 13 08:44:26 CDT 2015


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

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Thu Mar 12 10:55:18 2015 +0100

d3d8/tests: oFog is not initialized on r200.

---

 dlls/d3d8/tests/visual.c | 65 ++++++++++++++++++++++++------------------------
 1 file changed, 33 insertions(+), 32 deletions(-)

diff --git a/dlls/d3d8/tests/visual.c b/dlls/d3d8/tests/visual.c
index ffbfe3c..d8382f7 100644
--- a/dlls/d3d8/tests/visual.c
+++ b/dlls/d3d8/tests/visual.c
@@ -774,122 +774,123 @@ static void fog_with_shader_test(void)
         int pshader;
         D3DFOGMODE vfog;
         D3DFOGMODE tfog;
+        BOOL uninitialized_reg;
         unsigned int color[11];
     }
     test_data[] =
     {
         /* Only pixel shader */
-        {0, 1, D3DFOG_NONE, D3DFOG_LINEAR,
+        {0, 1, D3DFOG_NONE, D3DFOG_LINEAR, FALSE,
         {0x00ff0000, 0x00ff0000, 0x00df2000, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}},
-        {0, 1, D3DFOG_EXP, D3DFOG_LINEAR,
+        {0, 1, D3DFOG_EXP, D3DFOG_LINEAR, FALSE,
         {0x00ff0000, 0x00ff0000, 0x00df2000, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}},
-        {0, 1, D3DFOG_EXP2, D3DFOG_LINEAR,
+        {0, 1, D3DFOG_EXP2, D3DFOG_LINEAR, FALSE,
         {0x00ff0000, 0x00ff0000, 0x00df2000, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}},
-        {0, 1, D3DFOG_LINEAR, D3DFOG_NONE,
+        {0, 1, D3DFOG_LINEAR, D3DFOG_NONE, FALSE,
         {0x00ff0000, 0x00ff0000, 0x00df2000, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}},
-        {0, 1, D3DFOG_LINEAR, D3DFOG_LINEAR,
+        {0, 1, D3DFOG_LINEAR, D3DFOG_LINEAR, FALSE,
         {0x00ff0000, 0x00ff0000, 0x00df2000, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}},
 
         /* Vertex shader */
-        {1, 0, D3DFOG_NONE, D3DFOG_NONE,
+        {1, 0, D3DFOG_NONE, D3DFOG_NONE, TRUE,
         {0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00,
          0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00}},
-        {1, 0, D3DFOG_NONE, D3DFOG_LINEAR,
+        {1, 0, D3DFOG_NONE, D3DFOG_LINEAR, FALSE,
         {0x00ff0000, 0x00ff0000, 0x00df2000, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}},
-        {1, 0, D3DFOG_EXP, D3DFOG_LINEAR,
+        {1, 0, D3DFOG_EXP, D3DFOG_LINEAR, FALSE,
         {0x00ff0000, 0x00ff0000, 0x00df2000, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}},
 
-        {1, 0, D3DFOG_EXP2, D3DFOG_LINEAR,
+        {1, 0, D3DFOG_EXP2, D3DFOG_LINEAR, FALSE,
         {0x00ff0000, 0x00ff0000, 0x00df2000, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}},
-        {1, 0, D3DFOG_LINEAR, D3DFOG_LINEAR,
+        {1, 0, D3DFOG_LINEAR, D3DFOG_LINEAR, FALSE,
         {0x00ff0000, 0x00ff0000, 0x00df2000, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}},
 
         /* Vertex shader and pixel shader */
         /* The next 4 tests would read the fog coord output, but it isn't available.
          * The result is a fully fogged quad, no matter what the Z coord is. */
-        {1, 1, D3DFOG_NONE, D3DFOG_NONE,
+        {1, 1, D3DFOG_NONE, D3DFOG_NONE, TRUE,
         {0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00,
         0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00}},
-        {1, 1, D3DFOG_LINEAR, D3DFOG_NONE,
+        {1, 1, D3DFOG_LINEAR, D3DFOG_NONE, TRUE,
         {0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00,
         0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00}},
-        {1, 1, D3DFOG_EXP, D3DFOG_NONE,
+        {1, 1, D3DFOG_EXP, D3DFOG_NONE, TRUE,
         {0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00,
         0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00}},
-        {1, 1, D3DFOG_EXP2, D3DFOG_NONE,
+        {1, 1, D3DFOG_EXP2, D3DFOG_NONE, TRUE,
         {0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00,
         0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00}},
 
         /* These use the Z coordinate with linear table fog */
-        {1, 1, D3DFOG_NONE, D3DFOG_LINEAR,
+        {1, 1, D3DFOG_NONE, D3DFOG_LINEAR, FALSE,
         {0x00ff0000, 0x00ff0000, 0x00df2000, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}},
-        {1, 1, D3DFOG_EXP, D3DFOG_LINEAR,
+        {1, 1, D3DFOG_EXP, D3DFOG_LINEAR, FALSE,
         {0x00ff0000, 0x00ff0000, 0x00df2000, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}},
-        {1, 1, D3DFOG_EXP2, D3DFOG_LINEAR,
+        {1, 1, D3DFOG_EXP2, D3DFOG_LINEAR, FALSE,
         {0x00ff0000, 0x00ff0000, 0x00df2000, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}},
-        {1, 1, D3DFOG_LINEAR, D3DFOG_LINEAR,
+        {1, 1, D3DFOG_LINEAR, D3DFOG_LINEAR, FALSE,
         {0x00ff0000, 0x00ff0000, 0x00df2000, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}},
 
         /* Non-linear table fog without fog coord */
-        {1, 1, D3DFOG_NONE, D3DFOG_EXP,
+        {1, 1, D3DFOG_NONE, D3DFOG_EXP, FALSE,
         {0x00ff0000, 0x00e71800, 0x00d12e00, 0x00bd4200, 0x00ab5400, 0x009b6400,
         0x008d7200, 0x007f8000, 0x00738c00, 0x00689700, 0x005ea100}},
-        {1, 1, D3DFOG_NONE, D3DFOG_EXP2,
+        {1, 1, D3DFOG_NONE, D3DFOG_EXP2, FALSE,
         {0x00fd0200, 0x00f50200, 0x00f50a00, 0x00e91600, 0x00d92600, 0x00c73800,
         0x00b24d00, 0x009c6300, 0x00867900, 0x00728d00, 0x005ea100}},
 
         /* These tests fail on older Nvidia drivers */
         /* Foggy vertex shader */
-        {2, 0, D3DFOG_NONE, D3DFOG_NONE,
+        {2, 0, D3DFOG_NONE, D3DFOG_NONE, FALSE,
         {0x00ff0000, 0x00fe0100, 0x00de2100, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x003fc000, 0x001fe000, 0x0000ff00, 0x0000ff00}},
-        {2, 0, D3DFOG_EXP, D3DFOG_NONE,
+        {2, 0, D3DFOG_EXP, D3DFOG_NONE, FALSE,
         {0x00ff0000, 0x00fe0100, 0x00de2100, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x003fc000, 0x001fe000, 0x0000ff00, 0x0000ff00}},
-        {2, 0, D3DFOG_EXP2, D3DFOG_NONE,
+        {2, 0, D3DFOG_EXP2, D3DFOG_NONE, FALSE,
         {0x00ff0000, 0x00fe0100, 0x00de2100, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x003fc000, 0x001fe000, 0x0000ff00, 0x0000ff00}},
-        {2, 0, D3DFOG_LINEAR, D3DFOG_NONE,
+        {2, 0, D3DFOG_LINEAR, D3DFOG_NONE, FALSE,
         {0x00ff0000, 0x00fe0100, 0x00de2100, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x003fc000, 0x001fe000, 0x0000ff00, 0x0000ff00}},
 
         /* Foggy vertex shader and pixel shader. First 4 tests with vertex fog,
          * all using the fixed fog-coord linear fog */
-        {2, 1, D3DFOG_NONE, D3DFOG_NONE,
+        {2, 1, D3DFOG_NONE, D3DFOG_NONE, FALSE,
         {0x00ff0000, 0x00fe0100, 0x00de2100, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x003fc000, 0x001fe000, 0x0000ff00, 0x0000ff00}},
-        {2, 1, D3DFOG_EXP, D3DFOG_NONE,
+        {2, 1, D3DFOG_EXP, D3DFOG_NONE, FALSE,
         {0x00ff0000, 0x00fe0100, 0x00de2100, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x003fc000, 0x001fe000, 0x0000ff00, 0x0000ff00}},
-        {2, 1, D3DFOG_EXP2, D3DFOG_NONE,
+        {2, 1, D3DFOG_EXP2, D3DFOG_NONE, FALSE,
         {0x00ff0000, 0x00fe0100, 0x00de2100, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x003fc000, 0x001fe000, 0x0000ff00, 0x0000ff00}},
-        {2, 1, D3DFOG_LINEAR, D3DFOG_NONE,
+        {2, 1, D3DFOG_LINEAR, D3DFOG_NONE, FALSE,
         {0x00ff0000, 0x00fe0100, 0x00de2100, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x003fc000, 0x001fe000, 0x0000ff00, 0x0000ff00}},
 
         /* These use table fog. Here the shader-provided fog coordinate is
          * ignored and the z coordinate used instead */
-        {2, 1, D3DFOG_NONE, D3DFOG_EXP,
+        {2, 1, D3DFOG_NONE, D3DFOG_EXP, FALSE,
         {0x00ff0000, 0x00e71800, 0x00d12e00, 0x00bd4200, 0x00ab5400, 0x009b6400,
         0x008d7200, 0x007f8000, 0x00738c00, 0x00689700, 0x005ea100}},
-        {2, 1, D3DFOG_NONE, D3DFOG_EXP2,
+        {2, 1, D3DFOG_NONE, D3DFOG_EXP2, FALSE,
         {0x00fd0200, 0x00f50200, 0x00f50a00, 0x00e91600, 0x00d92600, 0x00c73800,
         0x00b24d00, 0x009c6300, 0x00867900, 0x00728d00, 0x005ea100}},
-        {2, 1, D3DFOG_NONE, D3DFOG_LINEAR,
+        {2, 1, D3DFOG_NONE, D3DFOG_LINEAR, FALSE,
         {0x00ff0000, 0x00ff0000, 0x00df2000, 0x00bf4000, 0x009f6000, 0x007f8000,
         0x005fa000, 0x0040bf00, 0x0020df00, 0x0000ff00, 0x0000ff00}},
     };
@@ -996,7 +997,7 @@ static void fog_with_shader_test(void)
 
             /* As the red and green component are the result of blending use 5% tolerance on the expected value */
             color = getPixelColor(device, 128, 240);
-            ok(color_match(color, test_data[i].color[j], 13),
+            ok(color_match(color, test_data[i].color[j], 13) || broken(test_data[i].uninitialized_reg),
                     "fog vs%i ps%i fvm%i ftm%i %d: got color %08x, expected %08x +-5%%\n",
                     test_data[i].vshader, test_data[i].pshader,
                     test_data[i].vfog, test_data[i].tfog, j, color, test_data[i].color[j]);




More information about the wine-cvs mailing list