[PATCH 4/4] d3d9/tests: Check encryption support, not WARP in test_create_depth_stencil_surface_ex.

Stefan Dösinger stefandoesinger at gmx.at
Mon Feb 20 16:31:05 CST 2017


My Radeon X1600 doesn't support D3DUSAGE_RESTRICTED_CONTENT and behaves
like the code expects for WARP.

Signed-off-by: Stefan Dösinger <stefandoesinger at gmx.at>

---

This change intentionally accepts the success on Wine despite unsupported
D3DUSAGE_RESTRICTED_CONTENT.

Signed-off-by: Stefan Dösinger <stefandoesinger at gmx.at>
---
 dlls/d3d9/tests/d3d9ex.c | 30 ++++++++++++++----------------
 1 file changed, 14 insertions(+), 16 deletions(-)

diff --git a/dlls/d3d9/tests/d3d9ex.c b/dlls/d3d9/tests/d3d9ex.c
index 1dbab26..d1c29cf 100644
--- a/dlls/d3d9/tests/d3d9ex.c
+++ b/dlls/d3d9/tests/d3d9ex.c
@@ -42,11 +42,6 @@ struct device_desc
     DWORD flags;
 };
 
-static BOOL adapter_is_warp(const D3DADAPTER_IDENTIFIER9 *identifier)
-{
-    return !strcmp(identifier->Driver, "d3d10warp.dll");
-}
-
 static BOOL color_match(D3DCOLOR c1, D3DCOLOR c2, BYTE max_diff)
 {
     unsigned int i;
@@ -661,16 +656,14 @@ static void test_create_depth_stencil_surface_ex(void)
     {
         DWORD usage;
         HRESULT hr;
-        BOOL broken_warp;
     }
     tests[] =
     {
-        {0,                           D3D_OK,             FALSE},
-        {D3DUSAGE_DEPTHSTENCIL,       D3DERR_INVALIDCALL, FALSE},
-        {D3DUSAGE_RESTRICTED_CONTENT, D3D_OK,             TRUE},
+        {0,                           D3D_OK},
+        {D3DUSAGE_DEPTHSTENCIL,       D3DERR_INVALIDCALL},
+        {D3DUSAGE_RESTRICTED_CONTENT, D3D_OK},
     };
 
-    D3DADAPTER_IDENTIFIER9 identifier;
     D3DSURFACE_DESC surface_desc;
     IDirect3DDevice9Ex *device;
     IDirect3DSurface9 *surface;
@@ -679,7 +672,7 @@ static void test_create_depth_stencil_surface_ex(void)
     HWND window;
     HRESULT hr;
     ULONG ref;
-    BOOL warp;
+    BOOL support_restricted_content;
 
     window = create_window();
 
@@ -692,9 +685,12 @@ static void test_create_depth_stencil_surface_ex(void)
 
     hr = IDirect3DDevice9Ex_GetDirect3D(device, &d3d);
     ok(SUCCEEDED(hr), "Failed to get Direct3D9, hr %#x.\n", hr);
-    hr = IDirect3D9_GetAdapterIdentifier(d3d, D3DADAPTER_DEFAULT, 0, &identifier);
-    ok(SUCCEEDED(hr), "Failed to get adapter identifier, hr %#x.\n", hr);
-    warp = adapter_is_warp(&identifier);
+    /* CheckDeviceFormat does not report D3DUSAGE_RESTRICTED_CONTENT support for surfaces,
+     * only textures. Nevertheless, the CreateDepthStencilSurfaceEx call below succeeds if
+     * textures support restricted content. */
+    hr = IDirect3D9_CheckDeviceFormat(d3d, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, D3DFMT_X8R8G8B8,
+            D3DUSAGE_RESTRICTED_CONTENT, D3DRTYPE_TEXTURE, D3DFMT_D24S8);
+    support_restricted_content = SUCCEEDED(hr);
     IDirect3D9_Release(d3d);
 
     for (i = 0; i < sizeof(tests) / sizeof(*tests); ++i)
@@ -702,7 +698,8 @@ static void test_create_depth_stencil_surface_ex(void)
         surface = (IDirect3DSurface9 *)0xdeadbeef;
         hr = IDirect3DDevice9Ex_CreateDepthStencilSurfaceEx(device, 64, 64, D3DFMT_D24S8,
                 D3DMULTISAMPLE_NONE, 0, TRUE, &surface, NULL, tests[i].usage);
-        ok(hr == tests[i].hr || broken(warp && tests[i].broken_warp),
+        ok(hr == tests[i].hr || (hr == D3DERR_INVALIDCALL && !support_restricted_content
+                && tests[i].usage & D3DUSAGE_RESTRICTED_CONTENT),
                 "Test %u: Got unexpected hr %#x.\n", i, hr);
         if (SUCCEEDED(hr))
         {
@@ -720,7 +717,8 @@ static void test_create_depth_stencil_surface_ex(void)
         }
         else
         {
-            ok(surface == (IDirect3DSurface9 *)0xdeadbeef || broken(warp && tests[i].broken_warp),
+            ok(surface == (IDirect3DSurface9 *)0xdeadbeef
+                    || broken(tests[i].usage & D3DUSAGE_RESTRICTED_CONTENT && !support_restricted_content),
                     "Test %u: Got unexpected surface pointer %p.\n", i, surface);
         }
     }
-- 
2.10.2




More information about the wine-patches mailing list