diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c index 504d276d6c5..99896b8c624 100644 --- a/dlls/d3d9/tests/visual.c +++ b/dlls/d3d9/tests/visual.c @@ -8150,6 +8150,7 @@ static void pretransformed_varying_test(void) }, }; IDirect3DVertexDeclaration9 *decl; + D3DADAPTER_IDENTIFIER9 identifier; IDirect3DDevice9 *device; IDirect3D9 *d3d; unsigned int i; @@ -8177,6 +8178,18 @@ static void pretransformed_varying_test(void) goto done; } + hr = IDirect3D9_GetAdapterIdentifier(d3d, D3DADAPTER_DEFAULT, 0, &identifier); + ok(SUCCEEDED(hr), "Failed to get adapter identifier, hr %#x.\n", hr); + if (adapter_is_warp(&identifier) && sizeof(UINT) == sizeof(UINT_PTR)) + { + /* Apparently the "monster" vertex declaration used in this test + * overruns some stack buffer (DrawPrimitiveUP crashes with a + * 0xc0000409 exception) on 32-bit WARP since Win 10 1809. */ + skip("Test crashes on recent 32-bit WARP.\n"); + IDirect3DDevice9_Release(device); + goto done; + } + hr = IDirect3DDevice9_CreateVertexDeclaration(device, decl_elements, &decl); ok(hr == D3D_OK, "IDirect3DDevice9_CreateVertexDeclaration returned %08x\n", hr); hr = IDirect3DDevice9_SetVertexDeclaration(device, decl);