78879: Subject: [4/4] wined3d: Only the ARBfp fragement pipeline reads emulated clip coords

buildbot at kegel.com buildbot at kegel.com
Wed Sep 14 18:33:11 CDT 2011


This is an experimental automated build and test service.
Please feel free to ignore this email while we work the kinks out.

For more info about this message, see http://wiki.winehq.org/BuildBot

The Buildbot has detected a failed build on builder runtests-default-x86_64 while building Wine.
Full details are available at: http://buildbot.kegel.com/builders/runtests-default-x86_64/builds/68 (though maybe not for long, as I'm still reinstalling the buildbot periodically while experimenting)
BUILD FAILED: failed shell_3

Errors:
service.c:2084: Test failed: Winetest Sleep Service: QueryServiceStatusEx() failed le=1727
service.c:2085: Test failed: Winetest Sleep Service: should be stopped state=ff
service.c:2092: Test failed: Winetest Sleep Service: the second try should yield the same error: 1728 != 1727
service.c:2098: Test failed: Winetest Sleep Service: 1727 != ERROR_SERVICE_NOT_ACTIVE
service.c:2099: Test failed: Winetest Sleep Service: should be stopped state=deadbeef
service.c:2188: Test failed: 1728 != ERROR_SERVICE_REQUEST_TIMEOUT
service.c:2223: Test failed: Expected success, got error 6
service.c:2227: Test failed: Expected success, got error 6
service.c:2231: Test failed: Expected success, got error 6
service.c:2235: Test failed: Expected success (err=6)
service.c:2239: Test failed: Expected success, got error 1727
service.c:2243: Test failed: Expected success, got error 6
service.c:2247: Test failed: Expected success (err=6)
service.c:2259: Test succeeded inside todo block: Expected failure
service.c:2273: Test failed: Expected success (err=6)
service.c:2275: Test failed: Expected success (err=6)
service.c:2277: Test failed: Expected success (err=6)
service.c:2279: Test failed: Expected success (err=6)
service.c:2290: Test failed: Expected success, got error 6
service.c:2294: Test failed: Expected success (err=6)
make: *** [service.ok] Error 20

-------------- next part --------------
From: Stefan Dösinger <stefan at codeweavers.com>
Subject: [1/4] ddraw/tests: Not all GPUs support dwZBufferBitDepth=24 on Windows
Message-Id: <201109150041.35763.stefan at codeweavers.com>
Date: Thu, 15 Sep 2011 00:41:32 +0200

From 9e79ad38c28014cd8e625f9081ac5666a61e3b15 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan at codeweavers.com>
Date: Mon, 29 Aug 2011 19:50:16 +0200
Subject: [PATCH 1/4] ddraw/tests: Not all GPUs support dwZBufferBitDepth=24 on Windows

My Radeon X1600 supports D3DFMT_D24X8 in d3d8 and d3d9 just fine, but uses
dwZBufferBitDepth=32 in ddraw for this format. Windows XP doesn't catch this
like Vista and Windows 7 do, so trying to create a surface with zbitdepth=24
fails.
---
 dlls/ddraw/tests/dsurface.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/dlls/ddraw/tests/dsurface.c b/dlls/ddraw/tests/dsurface.c
index 6b23c70..12026d8 100644
--- a/dlls/ddraw/tests/dsurface.c
+++ b/dlls/ddraw/tests/dsurface.c
@@ -3987,7 +3987,7 @@ static void zbufferbitdepth_test(void)
             }
         },
         {
-            24, ZFMT_SUPPORTED_ALWAYS,
+            24, ZFMT_SUPPORTED_HWDEPENDENT,
             {
                 sizeof(DDPIXELFORMAT), DDPF_ZBUFFER, 0,
                 {24}, {0}, {0x00ffffff}, {0x00000000}, {0x00000000}
-- 
1.7.3.4


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.17 (GNU/Linux)

iQIcBAABAgAGBQJOcS2fAAoJEN0/YqbEcdMw7nsP/1GTo6W0oZGMq0Dk2VcqiPNl
TcwhdHUz/Xxkx96KG17ep6FO7aMVrjxg7OI5OZwuBDnMUM/6XS3BUbu/lG+h7di7
Jil6qXzC395h0yjkVx+f1mJJjRJgRyZIGgztN2d6LwXi2GuJvjZUoHkRsSDhdpsG
5EPQZf/S0uzuC5tdQfr7/cxUyI/gCpIDNB/YbbLEIvpL6YcNjB2wj4UdrP6pH5pQ
UvydkHj5Bp21CFM/QaURzzleB+4hZ6AhdxNaOy5D7G2Bl33RCaVXSXF9Tuezw7MB
f2HewRSfbTvKpl+9qazUxWTs48flDkffMWkbXvV819xm6CJRbBmqReNm2l88zwMA
RXgx/yvxMoKjiDOy4k/C6VLSQCxTCfugbU7YLLeLK5zf8PxBmKiHxQQc3GiOjRkY
WK9mFrwEk/Pn67bI9pZWeShNU29glaI2oOYUuI1+3iTme2pLXubNYJChVf9Qqt4a
/BQWeiG+sg/y8lpq7x7QQE8b5WMt94gxgSxg8pqpDlC5sf39HOgW2gxOFJPTBBqN
fi/u7o+a6aUkBO90vZPSP47oAi9X77JUClHEIDcJxT4yckzQHRkQ+gtIVf1xDyPT
ciYovwyCyTuUNyR1jXFbR4o7xsslPgSEMhz6lHx/Zzy18XaHdruEYIq5aZQ1a3QH
OtJdE0daPJjDdunbVSID
=kOk0
-----END PGP SIGNATURE-----

From: Stefan Dösinger <stefan at codeweavers.com>
Subject: [2/4] wined3d: Disable range fog with per-pixel fog
Message-Id: <201109150051.15985.stefan at codeweavers.com>
Date: Thu, 15 Sep 2011 00:51:13 +0200

From 2c99e69d732777316a35604df9f820b83dd869b2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan at codeweavers.com>
Date: Sat, 10 Sep 2011 23:05:33 +0200
Subject: [PATCH 2/4] wined3d: Disable range fog with per-pixel fog

This fixes the crashday part of bug 17423, which is not related to the popsot
part of the same bug report.
---
 dlls/wined3d/state.c |   51 +++++++++++++++++++++++++++++--------------------
 1 files changed, 30 insertions(+), 21 deletions(-)

diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index 31c62a4..8cf02ef 100644
--- a/dlls/wined3d/state.c
+++ b/dlls/wined3d/state.c
@@ -898,6 +898,7 @@ static void state_stencilwrite(struct wined3d_context *context, const struct win
 static void state_fog_vertexpart(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
 {
 
+    const struct wined3d_gl_info *gl_info = context->gl_info;
     TRACE("context %p, state %p, state_id %#x.\n", context, state, state_id);
 
     if (!state->render_states[WINED3DRS_FOGENABLE])
@@ -912,6 +913,13 @@ static void state_fog_vertexpart(struct wined3d_context *context, const struct w
             checkGLcall("glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FRAGMENT_DEPTH_EXT)");
             context->fog_coord = FALSE;
         }
+
+        /* Range fog is only used with per-vertex fog in d3d */
+        if (gl_info->supported[NV_FOG_DISTANCE])
+        {
+            glFogi(GL_FOG_DISTANCE_MODE_NV, GL_EYE_PLANE_ABSOLUTE_NV);
+            checkGLcall("glFogi(GL_FOG_DISTANCE_MODE_NV, GL_EYE_PLANE_ABSOLUTE_NV)");
+        }
         return;
     }
 
@@ -926,13 +934,33 @@ static void state_fog_vertexpart(struct wined3d_context *context, const struct w
             checkGLcall("glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FOG_COORDINATE_EXT)");
             context->fog_coord = TRUE;
         }
-    } else {
+    }
+    else
+    {
         /* Otherwise, use the fragment depth */
         if(context->fog_coord) {
             glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FRAGMENT_DEPTH_EXT);
             checkGLcall("glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FRAGMENT_DEPTH_EXT)");
             context->fog_coord = FALSE;
         }
+
+        if (state->render_states[WINED3DRS_RANGEFOGENABLE])
+        {
+            if (gl_info->supported[NV_FOG_DISTANCE])
+            {
+                glFogi(GL_FOG_DISTANCE_MODE_NV, GL_EYE_RADIAL_NV);
+                checkGLcall("glFogi(GL_FOG_DISTANCE_MODE_NV, GL_EYE_RADIAL_NV)");
+            }
+            else
+            {
+                WARN("Range fog enabled, but not supported by this GL implementation.\n");
+            }
+        }
+        else if (gl_info->supported[NV_FOG_DISTANCE])
+        {
+            glFogi(GL_FOG_DISTANCE_MODE_NV, GL_EYE_PLANE_ABSOLUTE_NV);
+            checkGLcall("glFogi(GL_FOG_DISTANCE_MODE_NV, GL_EYE_PLANE_ABSOLUTE_NV)");
+        }
     }
 }
 
@@ -1137,24 +1165,6 @@ void state_fog_fragpart(struct wined3d_context *context, const struct wined3d_st
     }
 }
 
-static void state_rangefog_w(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
-{
-    if (state->render_states[WINED3DRS_RANGEFOGENABLE])
-        WARN("Range fog enabled, but not supported by this GL implementation.\n");
-}
-
-static void state_rangefog(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
-{
-    if (state->render_states[WINED3DRS_RANGEFOGENABLE])
-    {
-        glFogi(GL_FOG_DISTANCE_MODE_NV, GL_EYE_RADIAL_NV);
-        checkGLcall("glFogi(GL_FOG_DISTANCE_MODE_NV, GL_EYE_RADIAL_NV)");
-    } else {
-        glFogi(GL_FOG_DISTANCE_MODE_NV, GL_EYE_PLANE_ABSOLUTE_NV);
-        checkGLcall("glFogi(GL_FOG_DISTANCE_MODE_NV, GL_EYE_PLANE_ABSOLUTE_NV)");
-    }
-}
-
 void state_fogcolor(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
 {
     float col[4];
@@ -5376,8 +5386,7 @@ const struct StateEntryTemplate ffp_vertexstate_template[] = {
     { STATE_RENDER(WINED3DRS_FOGENABLE),                  { STATE_RENDER(WINED3DRS_FOGENABLE),                  state_fog_vertexpart}, WINED3D_GL_EXT_NONE             },
     { STATE_RENDER(WINED3DRS_FOGTABLEMODE),               { STATE_RENDER(WINED3DRS_FOGENABLE),                  NULL                }, WINED3D_GL_EXT_NONE             },
     { STATE_RENDER(WINED3DRS_FOGVERTEXMODE),              { STATE_RENDER(WINED3DRS_FOGENABLE),                  NULL                }, WINED3D_GL_EXT_NONE             },
-    { STATE_RENDER(WINED3DRS_RANGEFOGENABLE),             { STATE_RENDER(WINED3DRS_RANGEFOGENABLE),             state_rangefog      }, NV_FOG_DISTANCE                 },
-    { STATE_RENDER(WINED3DRS_RANGEFOGENABLE),             { STATE_RENDER(WINED3DRS_RANGEFOGENABLE),             state_rangefog_w    }, WINED3D_GL_EXT_NONE             },
+    { STATE_RENDER(WINED3DRS_RANGEFOGENABLE),             { STATE_RENDER(WINED3DRS_FOGENABLE),                  NULL                }, WINED3D_GL_EXT_NONE             },
     { STATE_RENDER(WINED3DRS_CLIPPING),                   { STATE_RENDER(WINED3DRS_CLIPPING),                   state_clipping      }, WINED3D_GL_EXT_NONE             },
     { STATE_RENDER(WINED3DRS_CLIPPLANEENABLE),            { STATE_RENDER(WINED3DRS_CLIPPING),                   NULL                }, WINED3D_GL_EXT_NONE             },
     { STATE_RENDER(WINED3DRS_LIGHTING),                   { STATE_RENDER(WINED3DRS_LIGHTING),                   state_lighting      }, WINED3D_GL_EXT_NONE             },
-- 
1.7.3.4


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.17 (GNU/Linux)

iQIcBAABAgAGBQJOcS/jAAoJEN0/YqbEcdMwI9AP/3qKDqLZ1Y4d1pQAWdjR4JW6
4o718uFdmeD+i2VXx1HQN0v08sQuHHBkQEoqDtzoEDPTs2U+W3lm1WA6xBVSqFS9
+AbYojtx1pRE/uUwoUrIaHB9liZYCT5UgWZ9grDYUqkZCcBO6IdK40cxi/RZczwm
0+fuwAcP5obFCIo2vjtb4w6Tfe2F6nUJG/C9ZbW0pKiPgDLzWc3HSthsF5OGUjn7
Y5eOsitXsaioi7wJ55sFcoFKUE3RDH1mdRYgxjfaYxfw3tdGyMW0KjuqBS4qFyoe
Mo2AiR0SSFP42P33ufhAjAHO74K6DLaDXxSKn6Xaj/B0DyEu88njMpDzyyLg25f8
seWcc/UucMeY7t/4rAqmaNiqLrZENv3Bg+k2SPh0wKP60fVUvUo3gNYeFArvRNx7
lsm9J4V001hTcK2riqGuH/bRYFFvDbZYWt4dyjuslRixif74qC3rO1AbzwcCyrC2
D1mkwjKAcOFVtBMGqJifYcYVJWV58lzPhcOV1cFKMp6pZoNGdpAgiJ2IM2L6eiW+
BGJeqVxwXrFnRuqorUnpwfMSuQkKUwRwrp4Tqxpjfb4Ao4fbZxZ2JVXLXPAFN0ai
EpWh7R+a55NZwEtSyTV9bM+0coXTt1jxtrDAWDTNwn6zCc+hFzAAVzcSdUmWH745
8Q47Kv9DWgAc7aLUS0vL
=SuYG
-----END PGP SIGNATURE-----

From: Stefan Dösinger <stefan at codeweavers.com>
Subject: [3/4] d3d9/tests: Range fog is not used with table fog
Message-Id: <201109150051.50452.stefan at codeweavers.com>
Date: Thu, 15 Sep 2011 00:51:47 +0200

From 521f3a0f191c3f3e87305cbfa9c26d8fbffdbb0f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan at codeweavers.com>
Date: Sat, 3 Sep 2011 17:24:36 +0200
Subject: [PATCH 3/4] d3d9/tests: Range fog is not used with table fog

---
 dlls/d3d9/tests/visual.c |   92 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 92 insertions(+), 0 deletions(-)

diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
index 1857e2e..f583a89 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -1284,6 +1284,98 @@ static void fog_test(IDirect3DDevice9 *device)
         skip("D3DPRASTERCAPS_FOGTABLE not supported, skipping some fog tests\n");
     }
 
+    /* Test RANGEFOG vs FOGTABLEMODE */
+    if ((caps.RasterCaps & (D3DPRASTERCAPS_FOGTABLE | D3DPRASTERCAPS_FOGRANGE)) ==
+            (D3DPRASTERCAPS_FOGTABLE | D3DPRASTERCAPS_FOGRANGE))
+    {
+        struct sVertex untransformed_3[] =
+        {
+            {-1.0,-1.0,   0.4999f,      0xFFFF0000,     0xFF000000  },
+            {-1.0, 1.0,   0.4999f,      0xFFFF0000,     0xFF000000  },
+            { 1.0,-1.0,   0.4999f,      0xFFFF0000,     0xFF000000  },
+            { 1.0, 1.0,   0.4999f,      0xFFFF0000,     0xFF000000  },
+        };
+
+        hr = IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_TARGET, 0xffff00ff, 0.0, 0);
+        ok(SUCCEEDED(hr), "IDirect3DDevice9_Clear failed, hr %#x.\n", hr);
+        hr = IDirect3DDevice9_SetFVF(device, D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_SPECULAR);
+        ok(SUCCEEDED(hr), "IDirect3DDevice9_SetFVF failed, hr %#x.\n", hr);
+
+        hr = IDirect3DDevice9_SetRenderState(device, D3DRS_RANGEFOGENABLE, TRUE);
+        ok(SUCCEEDED(hr), "IDirect3DDevice9_SetRenderState failed, hr %#x.\n", hr);
+
+        /* z=0.4999, set the fogstart to 0.5 and fogend slightly higher. If range fog
+         * is not used, the fog coordinate will be equal to fogstart and the quad not
+         * fogged. If range fog is used the fog coordinate will be slightly higher and
+         * the fog coordinate will be > fogend, so we get a fully fogged quad. The fog
+         * is calculated per vertex and interpolated, so even the center of the screen
+         * where the difference doesn't matter will be fogged, but check the corners in
+         * case a d3d/gl implementation decides to calculate the fog factor per fragment */
+        start = 0.5f;
+        end = 0.50001f;
+        hr = IDirect3DDevice9_SetRenderState(device, D3DRS_FOGSTART, *((DWORD *) &start));
+        ok(SUCCEEDED(hr), "IDirect3DDevice9_SetRenderState failed, hr %#x.\n", hr);
+        hr = IDirect3DDevice9_SetRenderState(device, D3DRS_FOGEND, *((DWORD *) &end));
+        ok(SUCCEEDED(hr), "IDirect3DDevice9_SetRenderState failed, hr %#x.\n", hr);
+
+        /* Table fog: Range fog is not used */
+        hr = IDirect3DDevice9_BeginScene(device);
+        ok(SUCCEEDED(hr), "IDirect3DDevice9_BeginScene failed, hr %#x.\n", hr);
+        if (SUCCEEDED(hr))
+        {
+            hr = IDirect3DDevice9_SetRenderState(device, D3DRS_FOGTABLEMODE, D3DFOG_LINEAR);
+            ok(SUCCEEDED(hr), "IDirect3DDevice9_SetRenderState failed, hr %#x.\n", hr);
+            hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, untransformed_3, sizeof(*untransformed_3));
+            ok(SUCCEEDED(hr), "IDirect3DDevice9_DrawPrimitiveUP failed, hr %#x.\n", hr);
+            hr = IDirect3DDevice9_EndScene(device);
+            ok(SUCCEEDED(hr), "IDirect3DDevice9_EndScene failed, hr %#x.\n", hr);
+        }
+        color = getPixelColor(device, 10, 10);
+        ok(color == 0x00ff0000, "Rangefog with table fog returned color 0x%08x\n", color);
+        color = getPixelColor(device, 630, 10);
+        ok(color == 0x00ff0000, "Rangefog with table fog returned color 0x%08x\n", color);
+        color = getPixelColor(device, 10, 470);
+        ok(color == 0x00ff0000, "Rangefog with table fog returned color 0x%08x\n", color);
+        color = getPixelColor(device, 630, 470);
+        ok(color == 0x00ff0000, "Rangefog with table fog returned color 0x%08x\n", color);
+
+        hr = IDirect3DDevice9_Present(device, NULL, NULL, NULL, NULL);
+        ok(SUCCEEDED(hr), "IDirect3DDevice9_Present failed, hr %#x.\n", hr);
+
+        /* Vertex fog: Rangefog is used */
+        hr = IDirect3DDevice9_BeginScene(device);
+        ok(hr == D3D_OK, "IDirect3DDevice9_DrawPrimitiveUP returned %#08x\n", hr);
+        if (SUCCEEDED(hr))
+        {
+            hr = IDirect3DDevice9_SetRenderState(device, D3DRS_FOGTABLEMODE, D3DFOG_NONE);
+            ok(SUCCEEDED(hr), "IDirect3DDevice9_SetRenderState failed, hr %#x.\n", hr);
+            hr = IDirect3DDevice9_SetRenderState(device, D3DRS_FOGVERTEXMODE, D3DFOG_LINEAR);
+            ok(SUCCEEDED(hr), "IDirect3DDevice9_SetRenderState failed, hr %#x.\n", hr);
+            hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, untransformed_3, sizeof(*untransformed_3));
+            ok(SUCCEEDED(hr), "IDirect3DDevice9_DrawPrimitiveUP failed, hr %#x.\n", hr);
+            hr = IDirect3DDevice9_EndScene(device);
+            ok(SUCCEEDED(hr), "IDirect3DDevice9_EndScene failed, hr %#x.\n", hr);
+        }
+        color = getPixelColor(device, 10, 10);
+        ok(color == 0x0000ff00, "Rangefog with vertex fog returned color 0x%08x\n", color);
+        color = getPixelColor(device, 630, 10);
+        ok(color == 0x0000ff00, "Rangefog with vertex fog returned color 0x%08x\n", color);
+        color = getPixelColor(device, 10, 470);
+        ok(color == 0x0000ff00, "Rangefog with vertex fog returned color 0x%08x\n", color);
+        color = getPixelColor(device, 630, 470);
+        ok(color == 0x0000ff00, "Rangefog with vertex fog returned color 0x%08x\n", color);
+
+        hr = IDirect3DDevice9_Present(device, NULL, NULL, NULL, NULL);
+        ok(SUCCEEDED(hr), "IDirect3DDevice9_Present failed, hr %#x.\n", hr);
+
+        hr = IDirect3DDevice9_SetRenderState(device, D3DRS_RANGEFOGENABLE, FALSE);
+        ok(SUCCEEDED(hr), "IDirect3DDevice9_SetRenderState failed, hr %#x.\n", hr);
+    }
+    else
+    {
+        skip("Range fog or table fog not supported, skipping range fog tests\n");
+    }
+
     /* Turn off the fog master switch to avoid confusing other tests */
     hr = IDirect3DDevice9_SetRenderState(device, D3DRS_FOGENABLE, FALSE);
     ok(hr == D3D_OK, "Turning off fog calculations returned %08x\n", hr);
-- 
1.7.3.4


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.17 (GNU/Linux)

iQIcBAABAgAGBQJOcTAGAAoJEN0/YqbEcdMwUTYP/2zPiqXb0UPHQIyKduM3yRUr
rtXOzGaWmZdJyXXZ2wbITZ0UytM17ritPM9szqUFaJgNR8isuC8cLovtBHPN1DLv
8+mesz4nmg7wA+6IkE6voUcozjaxpPtPVbIvx4IZWoQXr9YOfu9XjnMhWzu/OmIy
4RtS9pErf5/aMoWmOxBnCh0zdJucCulIyzA6fZ3DNTb7JHGJ3REpFRaVu4tq7qDd
KvEMgI+GBQ+vsT0s81ylHF0pAarNMcPqOoYU9Qxb1s+yDp9XdcQE7FcikCUlxfT6
seTmEoinlskxQFD8aZY0OOze3i3q3xs4Nwa1zu4s/w9BqsfnKo/j0BV/a1Sq0kuk
YR37i4Wnn8L4i3FIgtPTuNPdAsuhTt7RjscsYH60766CxdEv3PJokSMlZhwPcjqv
BVMDb24vQegk9+3WPFXs30QRFlTOy/ljUk7uncCf3oRjhtUIOyWQV1dV030Qv9Mv
40QBUx9UqbPta0U/m3JJk8Tg+F9/EmIGk8pGd3zkdwq4K+kv7mLe8KV7BmaROUl8
AfEtNmD2uFvNYp/xJQ3ZnNVA41Vex7GjORcFGkGbT9llxnAnXl6kjypODoljWB6q
wkh9lV7PD17rQkUKJ/YCvIMnMsXsh2WoHnYHaRMtHL4B+8sr8kEu20XfYB36nbRE
Kb6cVo7rHQkdwAeav52Q
=13lv
-----END PGP SIGNATURE-----

From: Stefan Dösinger <stefan at codeweavers.com>
Subject: [4/4] wined3d: Only the ARBfp fragement pipeline reads emulated clip coords
Message-Id: <201109150059.23386.stefan at codeweavers.com>
Date: Thu, 15 Sep 2011 00:59:20 +0200

From 65eff502b5b256ed4304c5eeaa1ddffa64c8d27d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan at codeweavers.com>
Date: Thu, 1 Sep 2011 18:32:37 +0200
Subject: [PATCH 4/4] wined3d: Only the ARBfp fragement pipeline reads emulated clip coords

---
 dlls/wined3d/arb_program_shader.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c
index 43789c6..3cd99be 100644
--- a/dlls/wined3d/arb_program_shader.c
+++ b/dlls/wined3d/arb_program_shader.c
@@ -4508,7 +4508,7 @@ static void find_arb_vs_compile_args(const struct wined3d_state *state,
     else
     {
         args->ps_signature = ~0;
-        if (!device->vs_clipping)
+        if (!device->vs_clipping && device->adapter->fragment_pipe == &arbfp_fragment_pipeline)
         {
             args->clip.boolclip.clip_texcoord = ffp_clip_emul(state) ? gl_info->limits.texture_stages : 0;
         }
-- 
1.7.3.4


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.17 (GNU/Linux)

iQIcBAABAgAGBQJOcTHLAAoJEN0/YqbEcdMwwCsQAIFigIHv6Y7gHHTkbjmYhWq/
JC1kDUZpHwyYugg2b89qcKEefQ0oiumwrwtrBE38+Y/G0cHzY3VQeM2PRifA7NOt
sy/EHKAnhdmYWCy34s7F7MReRb/d7Um0da/80agCv/tjlo8uDx4LMteumldfWlJp
q0t0DSCw7idNL1VdvhdgKVZ2dWf8rhziWA/k6GntIIEFnTyZaqy7WDA2Og96Mv2V
r58UfhrOKg2gEtYOEY1gjTgwjw1vPFjPTHfEcXf6Iw1ZTrg0BXK3NqM6X8DoI8sG
JMi9jFYdtQoqPhxBtz9UYTOST0Z2zfinkJHHKgjKic0Ssu5rD+cbL7Yzabtw2gZE
hinADER+7Ls457jxLIgDmTTaOSMW2ycoZygNhXN/TfXr/O/Tn9XW2+Z1EEK128Gd
05qmK1tWQ0VOUoRBKmmxJFeWCDQLQZUf8ItBkQzEBwnzvvq8XCmTr7PUVjBpcEMJ
SpSDvATguKFZh2vteBqf+4iXsRi8V9HogchahFVBt4VWemaE1eFFHpwOjSsNLglw
AOxgt9aPpEVXxk7JeMAl/eXp3TjVmmplkp9TvLtDmeTStpeUhsuHCklcOhmy7IPH
42wcYgLARciY1lZUgaejYF5j/S/YYMvmXmoQHSdKLV5ZJE8g4ID+/T4lqgy2Doxl
ZHAT5J0YePWEGxGffmFL
=/HK8
-----END PGP SIGNATURE-----



More information about the wine-tests-results mailing list