/*
 * Copyright 2008-2009 Henri Verbeet for CodeWeavers
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#pragma makedep header

import "dxgi1_6.idl";

[
    object,
    local,
    uuid(53cb4ff0-c25a-4164-a891-0e83db0a7aac)
]
interface IWineDXGISwapChainFactory : IUnknown
{
    HRESULT create_swapchain(
        [in] IDXGIFactory *factory,
        [in] HWND window,
        [in] const DXGI_SWAP_CHAIN_DESC1 *desc,
        [in] const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *fullscreen_desc,
        [in] IDXGIOutput *output,
        [out] IDXGISwapChain1 **swapchain
    );
}

[
    object,
    local,
    uuid(3e1ff30b-c951-48c3-b010-0fb49f3dca71)
]
interface IWineDXGIDevice : IDXGIDevice3
{
    HRESULT create_surface(
        [in] struct wined3d_texture *wined3d_texture,
        [in] DXGI_USAGE usage,
        [in] const DXGI_SHARED_RESOURCE *shared_resource,
        [in] IUnknown *outer,
        [out] void **surface
    );
}

[
    object,
    local,
    uuid(f2b918f3-603f-430a-9ccd-55872b6e85df)
]
interface IWineDXGIDeviceParent : IUnknown
{
    struct wined3d_device_parent *get_wined3d_device_parent();
}

struct wine_dxgi_adapter_info
{
    GUID driver_uuid;
    GUID device_uuid;

    DWORD vendor_id;
    DWORD device_id;

    LUID luid;
};

[
    object,
    local,
    uuid(17399d75-964e-4c03-99f8-9d4fd196dd62)
]
interface IWineDXGIAdapter : IDXGIAdapter4
{
    HRESULT get_adapter_info([out] struct wine_dxgi_adapter_info *info);
}

[
    object,
    local,
    uuid(ea02a0d1-4c95-488a-a82c-6034621e8c4f)
]
interface IWineDXGIFactory : IDXGIFactory7
{
}