[PATCH] ddraw: add dsurface dimension tests, try 8

Stefan Dösinger stefandoesinger at gmail.com
Sun Apr 6 17:13:57 CDT 2014


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Am 2014-04-04 13:57, schrieb Patrick Rudolph:
> +    static struct
> +    {
> +        const char *name;
> +        DDPIXELFORMAT fmt;
> +    }
> +    formats[] =
You can make this const.

> +        /* 6: Test maximum surface height */
> +        {DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT, DDSCAPS_OFFSCREENPLAIN, 1, 0x10000, DDERR_INVALIDPARAMS},
> +        /* 7: Test maximum surface width */
> +        {DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT, DDSCAPS_OFFSCREENPLAIN, 0x10000, 1, DDERR_INVALIDPARAMS},
These tests fail on Wine. Please include your patch that introduces the size check in this patch or in a separate patch to apply before this one, or mark them todo_wine.

> +        /* 8: Test OUTOFVIDEOMEMORY */
> +        {DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT, DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY,
> +            0xffff, 0xffff, DDERR_OUTOFVIDEOMEMORY},
This also fails on Wine. You'll have to move the adapter_adjust_memory() call in dlls/wined3d/resource.c, resource_init() ahead of the memory allocation call.

> +        /* 9: Test OUTOFMEMORY */
> +        {DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT, DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY,
> +            0xffff, 0xffff, DDERR_OUTOFMEMORY},
This test still fails in 64 bit on my Windows 7 test machine with D3DFMT_P8. The failure happens because CreateSurface succeeds although the test expects it to fail. I'd suggest to remove this test for the same reason as test 10.

> +    /* does the hardware support videomemory ? */
> +    if (!(ddcaps.ddsCaps.dwCaps & DDSCAPS_VIDEOMEMORY))
> +    {
> +        tests[8].hr = DDERR_NODIRECTDRAWHW;
> +    }
You can remove the curly brackets here.

> +        for (i = 0; i < sizeof(tests) / sizeof(*tests); i ++)
> +        {
> +            if (surface)
> +            {
> +                IDirectDrawSurface_Release(surface);
> +                surface = NULL;
> +            }
> +
> +            memset(&surfacedesc, 0, sizeof(surfacedesc));
> +            surfacedesc.dwSize = sizeof(surfacedesc);
> +            surfacedesc.dwFlags = tests[i].dwFlags | DDSD_PIXELFORMAT;
> +            surfacedesc.ddsCaps.dwCaps = tests[i].dwCaps;
> +            surfacedesc.dwWidth = tests[i].dwWidth;
> +            surfacedesc.dwHeight = tests[i].dwHeight;
> +            surfacedesc.ddpfPixelFormat = formats[j].fmt;
> +
> +            hr = IDirectDraw_CreateSurface(ddraw, &surfacedesc, &surface, NULL);
> +            ok(hr == tests[i].hr, "Pixelformat %s, test %d returned %08x\n", formats[j].name, i, hr);
> +        }
Why is the surface release before the create call? You're potentially leaking surfaces here.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBAgAGBQJTQdGlAAoJEN0/YqbEcdMwvikP/RT9mO2pARAAfY7DIRuOns3R
8rYw7skxAOwKU12NK42gaSqTjZKoRglpXyYJwD1keq9uRZnk8oAy4yQN7axg3/wq
OI8gF6VN9Dlqofq6l4FD8rNC0yBFxxehZkOJXpzGXGisDau3C+pK007+fnwb0zQI
IOJ+M/ok+cOvmymbktmrRryVtrttG5Z0EYqpBQw53+ZTKUyu6AhcuoXV5Sf04Jkx
SnCHhRn3RLKEMTwc/XT6O5+in89CgIcrMmNWnCk0JrgywNhqOxX4A9HzkHTL3h/n
OHR1fJW4SmRDwT4r+nQmOBjIY7tCipv0xK5LTOqbaNCDxTIyZL2AOji5PeR4mZWH
iHPOb6826iouxE8P12cLfgueBebhY/lVCmiWwV67K7koFSmYs4MhtR/jdeiuZ8rI
jYgta2gNvP8Nk+R+HGxhGg6rrykNBb+lWTI5Ua+QAa7DBdW9uldLH4U+bf6mti90
171NAQA0VTrxV/dnkAxOmZ4jXogWhShrIyElD3PG6ZCxZ6W85/tdLReAyy/+feoQ
OS+QdlYDrnYJlW0Bko254YAWJHk5hViy7feDFCHl+FuI/7hN3+UmKvpVloWkD7sh
EpRqmAm8GtxAyaPsJtJVkWQ6s3YTkoYIZOSVUbItRWJbQvEfB/DDIYG6lTkGAxS5
cEUsoGMsqQbBK9QZf/s2
=TT3X
-----END PGP SIGNATURE-----



More information about the wine-patches mailing list