[PATCH 01/10] dxgi/tests: Add IDXGIOutput ownership tests.

Henri Verbeet hverbeet at gmail.com
Thu May 16 15:28:28 CDT 2019


On Wed, 15 May 2019 at 18:13, Zhiyi Zhang <zzhang at codeweavers.com> wrote:
> +    if (!pD3DKMTCheckVidPnExclusiveOwnership || pD3DKMTCheckVidPnExclusiveOwnership(NULL) == STATUS_PROCEDURE_NOT_FOUND
> +        || !pD3DKMTCloseAdapter || !pD3DKMTOpenAdapterFromGdiDisplayName)
Formatting. (Double indent for line continuations.)

> +    lstrcpyW(open_adapter_gdi_desc.DeviceName, display1W);
> +    status = pD3DKMTOpenAdapterFromGdiDisplayName(&open_adapter_gdi_desc);
> +    ok(status == STATUS_SUCCESS, "Got unexpected status %#x.\n", status);
> +
Wouldn't it make more sense to use D3DKMTOpenAdapterFromLuid(), so
that we can use the adapter corresponding to the device?

> +    /* Swapchain in fullscreen mode */
> +    hr = IDXGISwapChain_SetFullscreenState(swapchain, TRUE, NULL);
> +    /* DXGI_ERROR_NOT_CURRENTLY_AVAILABLE on some machines. DXGI_ERROR_UNSUPPORTED on Win 7 testbot. */
> +    if (hr == DXGI_ERROR_NOT_CURRENTLY_AVAILABLE || broken(hr == DXGI_ERROR_UNSUPPORTED))
> +    {
> +        skip("Failed to change fullscreen state.\n");
> +        goto done;
> +    }
> +    todo_wine_if(is_d3d12) ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
> +    Sleep(timeout);
Is that Sleep() really required?

> +    /* Calling IDXGIOutput_ReleaseOwnership makes it unoccluded. So we can be confident about IDXGIOutput_TakeOwnership
> +     * was called in IDXGISwapChain_SetFullscreenState */
> +    if (output) IDXGIOutput_ReleaseOwnership(output);
> +    Sleep(timeout);
Likewise.

> +    status = pD3DKMTCheckVidPnExclusiveOwnership(&check_ownership_desc);
> +    ok(status == STATUS_SUCCESS || status == STATUS_GRAPHICS_PRESENT_UNOCCLUDED, "Got unexpected status %#x.\n",
> +       status);
> +
> +    if (output) hr = IDXGIOutput_TakeOwnership(output, device, FALSE);
> +    todo_wine ok(hr == (is_d3d12 ? E_NOINTERFACE : DXGI_ERROR_NOT_CURRENTLY_AVAILABLE), "Got unexpected hr %#x.\n", hr);
> +    ok(status == STATUS_SUCCESS || status == STATUS_GRAPHICS_PRESENT_UNOCCLUDED, "Got unexpected status %#x.\n",
> +       status);
This ok() seems redundant.

> +    /* Swapchain in windowed mode */
> +    hr = IDXGISwapChain_SetFullscreenState(swapchain, FALSE, NULL);
> +    todo_wine_if(is_d3d12) ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
> +    Sleep(timeout);
And another.



More information about the wine-devel mailing list