[PATCH] d2d1/tests: Initial tests for bitmap render target

Henri Verbeet hverbeet at gmail.com
Thu Oct 6 04:42:12 CDT 2016


On 5 October 2016 at 17:33, Nikolay Sivov <nsivov at codeweavers.com> wrote:
> +static inline BOOL float_eq(FLOAT left, FLOAT right)
> +{
> +    int x = *(int *)&left;
> +    int y = *(int *)&right;
> +
> +    if (x < 0)
> +        x = INT_MIN - x;
> +    if (y < 0)
> +        y = INT_MIN - y;
> +
> +    return abs(x - y) <= 8;
> +}
Not wrong per se, but in the D3D tests that's generally called
"compare_float()" and takes an explicit "ulps" argument. Is "8" based
on test results or a guess? It seems fairly large for something that
shouldn't be a particularly complicated calculation. Also, "float".

> +    /* Both pixel size and DIP size are specified. */
> +    set_size_u(&pixel_size, 128, 128);
> +    hr = ID2D1HwndRenderTarget_CreateCompatibleRenderTarget(hwnd_rt, &size, &pixel_size, NULL,
> +            D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_NONE, &rt);
> +    ok(SUCCEEDED(hr), "Failed to create render target, hr %#x.\n", hr);
> +
> +    /* Doubled pixel size dimensions with the same DIP size give doubled dpi. */
> +    ID2D1BitmapRenderTarget_GetDpi(rt, dpi2, dpi2 + 1);
> +    ok(dpi[0] == dpi2[0] / 2.0f && dpi[1] == dpi2[1] / 2.0f, "Got dpi mismatch.\n");
As an aside, the reason some of the existing tests use different DPI
settings for the x and y axes is to avoid accidentally swapping them
in the implementation.



More information about the wine-devel mailing list