module external.directx.d3d11on12;

/*-------------------------------------------------------------------------------------
 *
 * Copyright (c) Microsoft Corporation
 *
 *-------------------------------------------------------------------------------------*/
// DirectX 11 On 12 Main Header translation from d3d11on12.h
// Latest update: Windows 10, version 1809

public import external.directx.d3d11;
public import external.directx.d3d12;

mixin(uuid!(ID3D11On12Device, "85611e73", "70a9", "490e", ["96", "14", "a9", "e3", "02", "77", "79", "04"]));
extern (C++) interface ID3D11On12Device : IUnknown
{
    HRESULT QueryInterface(REFIID riid, void** ppvObject);
    ULONG AddRef();
    ULONG Release();
    HRESULT CreateWrappedResource(IUnknown* pResource12, const D3D11_RESOURCE_FLAGS* pFlags11, D3D12_RESOURCE_STATES InState, D3D12_RESOURCE_STATES OutState, REFIID riid, void** ppResource11);
    void ReleaseWrappedResources(const ID3D11Resource** ppResources, uint NumResources);
    void AcquireWrappedResources(const ID3D11Resource** ppResources, uint NumResources);
}

mixin(uuid!(ID3D11On12Device1, "bdb64df4", "ea2f", "4c70", ["b8", "61", "aa", "ab", "12", "58", "bb", "5d"]));
extern (C++) interface ID3D11On12Device1 : ID3D11On12Device
{
    HRESULT GetD3D12Device(REFIID riid, void** ppvDevice);
}

alias PFN_D3D11ON12_CREATE_DEVICE = extern (Windows) nothrow HRESULT function(IUnknown* pDevice, uint Flags, const D3D_FEATURE_LEVEL* pFeatureLevels, uint FeatureLevels, const IUnknown** ppCommandQueues, uint NumQueues, uint NodeMask, ID3D11Device** ppDevice, ID3D11DeviceContext** ppImmediateContext, D3D_FEATURE_LEVEL* pChosenFeatureLevel);
extern (Windows) nothrow HRESULT D3D11On12CreateDevice(IUnknown* pDevice, uint Flags, const D3D_FEATURE_LEVEL* pFeatureLevels, uint FeatureLevels, const IUnknown** ppCommandQueues, uint NumQueues, uint NodeMask, ID3D11Device** ppDevice, ID3D11DeviceContext** ppImmediateContext, D3D_FEATURE_LEVEL* pChosenFeatureLevel);
struct D3D11_RESOURCE_FLAGS
{
    uint BindFlags;
    uint MiscFlags;
    uint CPUAccessFlags;
    uint StructureByteStride;
}
