=?UTF-8?Q?Stefan=20D=C3=B6singer=20?=: d3d9/tests: Skip some texture transform tests if shaders are unsupported.

Alexandre Julliard julliard at winehq.org
Thu Dec 6 16:25:10 CST 2012


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

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Thu Dec  6 08:23:06 2012 +0100

d3d9/tests: Skip some texture transform tests if shaders are unsupported.

---

 dlls/d3d9/tests/visual.c |   44 +++++++++++++++++++++++++++++++++++++-------
 1 files changed, 37 insertions(+), 7 deletions(-)

diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
index 5bb50f7..1c43e17 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -3878,12 +3878,25 @@ static void projected_textures_test(IDirect3DDevice9 *device,
     };
     IDirect3DVertexShader9 *vs = NULL;
     IDirect3DPixelShader9 *ps = NULL;
+    IDirect3D9 *d3d;
+    D3DCAPS9 caps;
     HRESULT hr;
 
-    hr = IDirect3DDevice9_CreateVertexShader(device, vertex_shader, &vs);
-    ok(SUCCEEDED(hr), "CreateVertexShader failed (%08x)\n", hr);
-    hr = IDirect3DDevice9_CreatePixelShader(device, pixel_shader, &ps);
-    ok(SUCCEEDED(hr), "CreatePixelShader failed (%08x)\n", hr);
+    IDirect3DDevice9_GetDirect3D(device, &d3d);
+    hr = IDirect3DDevice9_GetDeviceCaps(device, &caps);
+    ok(SUCCEEDED(hr), "GetDeviceCaps failed (%08x)\n", hr);
+    IDirect3D9_Release(d3d);
+
+    if (caps.VertexShaderVersion >= D3DVS_VERSION(1, 1))
+    {
+        hr = IDirect3DDevice9_CreateVertexShader(device, vertex_shader, &vs);
+        ok(SUCCEEDED(hr), "CreateVertexShader failed (%08x)\n", hr);
+    }
+    if (caps.PixelShaderVersion >= D3DPS_VERSION(1, 3))
+    {
+        hr = IDirect3DDevice9_CreatePixelShader(device, pixel_shader, &ps);
+        ok(SUCCEEDED(hr), "CreatePixelShader failed (%08x)\n", hr);
+    }
 
     hr = IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_TARGET, 0xff203040, 0.0f, 0);
     ok(hr == D3D_OK, "IDirect3DDevice9_Clear returned %08x\n", hr);
@@ -3920,12 +3933,26 @@ static void projected_textures_test(IDirect3DDevice9 *device,
         };
 
         if (tests[i].vs)
+        {
+            if (!vs)
+            {
+                skip("Vertex shaders not supported, skipping\n");
+                continue;
+            }
             hr = IDirect3DDevice9_SetVertexShader(device, vs);
+        }
         else
             hr = IDirect3DDevice9_SetVertexShader(device, NULL);
         ok(SUCCEEDED(hr), "SetVertexShader failed (%08x)\n", hr);
         if (tests[i].ps)
+        {
+            if (!ps)
+            {
+                skip("Pixel shaders not supported, skipping\n");
+                continue;
+            }
             hr = IDirect3DDevice9_SetPixelShader(device, ps);
+        }
         else
             hr = IDirect3DDevice9_SetPixelShader(device, NULL);
         ok(SUCCEEDED(hr), "SetPixelShader failed (%08x)\n", hr);
@@ -3949,11 +3976,14 @@ static void projected_textures_test(IDirect3DDevice9 *device,
 
     hr = IDirect3DDevice9_SetVertexShader(device, NULL);
     hr = IDirect3DDevice9_SetPixelShader(device, NULL);
-    IDirect3DVertexShader9_Release(vs);
-    IDirect3DPixelShader9_Release(ps);
+    if (vs) IDirect3DVertexShader9_Release(vs);
+    if (ps) IDirect3DPixelShader9_Release(ps);
 
     for (i = 0; i < 4; ++i)
-        check_rect(device, tests[i].rect, tests[i].message);
+    {
+        if ((!tests[i].vs || vs) && (!tests[i].ps || ps))
+            check_rect(device, tests[i].rect, tests[i].message);
+    }
 
     hr = IDirect3DDevice9_Present(device, NULL, NULL, NULL, NULL);
     ok(hr == D3D_OK, "IDirect3DDevice9_Present failed with %08x\n", hr);




More information about the wine-cvs mailing list