9b639cf2d6 2015-05-05 kinaba: /***********************************************************************\ 9b639cf2d6 2015-05-05 kinaba: * dxgi.d * 9b639cf2d6 2015-05-05 kinaba: * * 9b639cf2d6 2015-05-05 kinaba: * Windows API header module * 9b639cf2d6 2015-05-05 kinaba: * * 9b639cf2d6 2015-05-05 kinaba: * Placed into public domain * 9b639cf2d6 2015-05-05 kinaba: \***********************************************************************/ 9b639cf2d6 2015-05-05 kinaba: module win32.directx.dxgi; 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: private import win32.windows; 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: private import win32.directx.dxgitype; 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: enum { 9b639cf2d6 2015-05-05 kinaba: DXGI_CPU_ACCESS_NONE = 0, 9b639cf2d6 2015-05-05 kinaba: DXGI_CPU_ACCESS_DYNAMIC = 1, 9b639cf2d6 2015-05-05 kinaba: DXGI_CPU_ACCESS_READ_WRITE = 2, 9b639cf2d6 2015-05-05 kinaba: DXGI_CPU_ACCESS_SCRATCH = 3, 9b639cf2d6 2015-05-05 kinaba: DXGI_CPU_ACCESS_FIELD = 15 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: enum { 9b639cf2d6 2015-05-05 kinaba: DXGI_USAGE_SHADER_INPUT = 0b00_00010000, 9b639cf2d6 2015-05-05 kinaba: DXGI_USAGE_RENDER_TARGET_OUTPUT = 0b00_00100000, 9b639cf2d6 2015-05-05 kinaba: DXGI_USAGE_BACK_BUFFER = 0b00_01000000, 9b639cf2d6 2015-05-05 kinaba: DXGI_USAGE_SHARED = 0b00_10000000, 9b639cf2d6 2015-05-05 kinaba: DXGI_USAGE_READ_ONLY = 0b01_00000000, 9b639cf2d6 2015-05-05 kinaba: DXGI_USAGE_DISCARD_ON_PRESENT = 0b10_00000000, 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: alias UINT DXGI_USAGE; 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: struct DXGI_FRAME_STATISTICS { 9b639cf2d6 2015-05-05 kinaba: UINT PresentCount; 9b639cf2d6 2015-05-05 kinaba: UINT PresentRefreshCount; 9b639cf2d6 2015-05-05 kinaba: UINT SyncRefreshCount; 9b639cf2d6 2015-05-05 kinaba: LARGE_INTEGER SyncQPCTime; 9b639cf2d6 2015-05-05 kinaba: LARGE_INTEGER SyncGPUTime; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: struct DXGI_MAPPED_RECT { 9b639cf2d6 2015-05-05 kinaba: INT Pitch; 9b639cf2d6 2015-05-05 kinaba: BYTE* pBits; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: struct DXGI_ADAPTER_DESC { 9b639cf2d6 2015-05-05 kinaba: WCHAR[128] Description; 9b639cf2d6 2015-05-05 kinaba: UINT VendorId; 9b639cf2d6 2015-05-05 kinaba: UINT DeviceId; 9b639cf2d6 2015-05-05 kinaba: UINT SubSysId; 9b639cf2d6 2015-05-05 kinaba: UINT Revision; 9b639cf2d6 2015-05-05 kinaba: SIZE_T DedicatedVideoMemory; 9b639cf2d6 2015-05-05 kinaba: SIZE_T DedicatedSystemMemory; 9b639cf2d6 2015-05-05 kinaba: SIZE_T SharedSystemMemory; 9b639cf2d6 2015-05-05 kinaba: LUID AdapterLuid; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: struct DXGI_OUTPUT_DESC { 9b639cf2d6 2015-05-05 kinaba: WCHAR[32] DeviceName; 9b639cf2d6 2015-05-05 kinaba: RECT DesktopCoordinates; 9b639cf2d6 2015-05-05 kinaba: BOOL AttachedToDesktop; 9b639cf2d6 2015-05-05 kinaba: DXGI_MODE_ROTATION Rotation; 9b639cf2d6 2015-05-05 kinaba: HMONITOR Monitor; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: struct DXGI_SHARED_RESOURCE { 9b639cf2d6 2015-05-05 kinaba: HANDLE Handle; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: enum { 9b639cf2d6 2015-05-05 kinaba: DXGI_RESOURCE_PRIORITY_MINIMUM = 0x28000000, 9b639cf2d6 2015-05-05 kinaba: DXGI_RESOURCE_PRIORITY_LOW = 0x50000000, 9b639cf2d6 2015-05-05 kinaba: DXGI_RESOURCE_PRIORITY_NORMAL = 0x78000000, 9b639cf2d6 2015-05-05 kinaba: DXGI_RESOURCE_PRIORITY_HIGH = 0xa0000000, 9b639cf2d6 2015-05-05 kinaba: DXGI_RESOURCE_PRIORITY_MAXIMUM = 0xc8000000 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: enum DXGI_RESIDENCY { 9b639cf2d6 2015-05-05 kinaba: DXGI_RESIDENCY_FULLY_RESIDENT = 1, 9b639cf2d6 2015-05-05 kinaba: DXGI_RESIDENCY_RESIDENT_IN_SHARED_MEMORY = 2, 9b639cf2d6 2015-05-05 kinaba: DXGI_RESIDENCY_EVICTED_TO_DISK = 3 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: struct DXGI_SURFACE_DESC { 9b639cf2d6 2015-05-05 kinaba: UINT Width; 9b639cf2d6 2015-05-05 kinaba: UINT Height; 9b639cf2d6 2015-05-05 kinaba: DXGI_FORMAT Format; 9b639cf2d6 2015-05-05 kinaba: DXGI_SAMPLE_DESC SampleDesc; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: enum DXGI_SWAP_EFFECT { 9b639cf2d6 2015-05-05 kinaba: DXGI_SWAP_EFFECT_DISCARD = 0, 9b639cf2d6 2015-05-05 kinaba: DXGI_SWAP_EFFECT_SEQUENTIAL = 1 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: enum DXGI_SWAP_CHAIN_FLAG { 9b639cf2d6 2015-05-05 kinaba: DXGI_SWAP_CHAIN_FLAG_NONPREROTATED = 1, 9b639cf2d6 2015-05-05 kinaba: DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH = 2 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: struct DXGI_SWAP_CHAIN_DESC { 9b639cf2d6 2015-05-05 kinaba: DXGI_MODE_DESC BufferDesc; 9b639cf2d6 2015-05-05 kinaba: DXGI_SAMPLE_DESC SampleDesc; 9b639cf2d6 2015-05-05 kinaba: DXGI_USAGE BufferUsage; 9b639cf2d6 2015-05-05 kinaba: UINT BufferCount; 9b639cf2d6 2015-05-05 kinaba: HWND OutputWindow; 9b639cf2d6 2015-05-05 kinaba: BOOL Windowed; 9b639cf2d6 2015-05-05 kinaba: DXGI_SWAP_EFFECT SwapEffect; 9b639cf2d6 2015-05-05 kinaba: UINT Flags; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: interface IDXGIObject : IUnknown { 9b639cf2d6 2015-05-05 kinaba: extern(Windows) : 9b639cf2d6 2015-05-05 kinaba: HRESULT SetPrivateData(REFGUID Name, UINT DataSize, void* pData); 9b639cf2d6 2015-05-05 kinaba: HRESULT SetPrivateDataInterface(REFGUID Name, IUnknown pUnknown); 9b639cf2d6 2015-05-05 kinaba: HRESULT GetPrivateData(REFGUID Name, UINT* pDataSize, void* pData); 9b639cf2d6 2015-05-05 kinaba: HRESULT GetParent(REFIID riid, void** ppParent); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: interface IDXGIDeviceSubObject : IDXGIObject { 9b639cf2d6 2015-05-05 kinaba: extern(Windows) : 9b639cf2d6 2015-05-05 kinaba: HRESULT GetDevice(REFIID riid, void** ppDevice); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: interface IDXGIResource : IDXGIDeviceSubObject { 9b639cf2d6 2015-05-05 kinaba: extern(Windows) : 9b639cf2d6 2015-05-05 kinaba: HRESULT GetSharedHandle(HANDLE* pSharedHandle); 9b639cf2d6 2015-05-05 kinaba: HRESULT GetUsage(DXGI_USAGE* pUsage); 9b639cf2d6 2015-05-05 kinaba: HRESULT SetEvictionPriority(UINT EvictionPriority); 9b639cf2d6 2015-05-05 kinaba: HRESULT GetEvictionPriority(UINT* pEvictionPriority); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: interface IDXGISurface : IDXGIDeviceSubObject { 9b639cf2d6 2015-05-05 kinaba: extern(Windows) : 9b639cf2d6 2015-05-05 kinaba: HRESULT GetDesc(DXGI_SURFACE_DESC* pDesc); 9b639cf2d6 2015-05-05 kinaba: HRESULT Map(DXGI_MAPPED_RECT* pLockedRect, UINT MapFlags); 9b639cf2d6 2015-05-05 kinaba: HRESULT Unmap(); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: interface IDXGIAdapter : IDXGIObject { 9b639cf2d6 2015-05-05 kinaba: extern(Windows) : 9b639cf2d6 2015-05-05 kinaba: HRESULT EnumOutputs(UINT Output, IDXGIOutput* ppOutput); 9b639cf2d6 2015-05-05 kinaba: HRESULT GetDesc(DXGI_ADAPTER_DESC* pDesc); 9b639cf2d6 2015-05-05 kinaba: HRESULT CheckInterfaceSupport(REFGUID InterfaceName, LARGE_INTEGER* pUMDVersion); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: interface IDXGIOutput : IDXGIObject { 9b639cf2d6 2015-05-05 kinaba: extern(Windows) : 9b639cf2d6 2015-05-05 kinaba: HRESULT GetDesc(DXGI_OUTPUT_DESC* pDesc); 9b639cf2d6 2015-05-05 kinaba: HRESULT GetDisplayModeList(DXGI_FORMAT EnumFormat, UINT Flags, UINT* pNumModes, DXGI_MODE_DESC* pDesc); 9b639cf2d6 2015-05-05 kinaba: HRESULT FindClosestMatchingMode(DXGI_MODE_DESC* pModeToMatch, DXGI_MODE_DESC* pClosestMatch, IUnknown pConcernedDevice); 9b639cf2d6 2015-05-05 kinaba: HRESULT WaitForVBlank(); 9b639cf2d6 2015-05-05 kinaba: HRESULT TakeOwnership(IUnknown pDevice, BOOL Exclusive); 9b639cf2d6 2015-05-05 kinaba: void ReleaseOwnership(); 9b639cf2d6 2015-05-05 kinaba: HRESULT GetGammaControlCapabilities(DXGI_GAMMA_CONTROL_CAPABILITIES* pGammaCaps); 9b639cf2d6 2015-05-05 kinaba: HRESULT SetGammaControl(DXGI_GAMMA_CONTROL* pArray); 9b639cf2d6 2015-05-05 kinaba: HRESULT GetGammaControl(DXGI_GAMMA_CONTROL* pArray); 9b639cf2d6 2015-05-05 kinaba: HRESULT SetDisplaySurface(IDXGISurface pScanoutSurface); 9b639cf2d6 2015-05-05 kinaba: HRESULT GetDisplaySurfaceData(IDXGISurface pDestination); 9b639cf2d6 2015-05-05 kinaba: HRESULT GetFrameStatistics(DXGI_FRAME_STATISTICS* pStats); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: const DXGI_MAX_SWAP_CHAIN_BUFFERS = 16; 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: enum { 9b639cf2d6 2015-05-05 kinaba: DXGI_PRESENT_TEST = 0x00000001, 9b639cf2d6 2015-05-05 kinaba: DXGI_PRESENT_DO_NOT_SEQUENCE = 0x00000002, 9b639cf2d6 2015-05-05 kinaba: DXGI_PRESENT_RESTART = 0x00000004 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: interface IDXGISwapChain : IDXGIDeviceSubObject { 9b639cf2d6 2015-05-05 kinaba: extern(Windows) : 9b639cf2d6 2015-05-05 kinaba: HRESULT Present(UINT SyncInterval, UINT Flags); 9b639cf2d6 2015-05-05 kinaba: HRESULT GetBuffer(UINT Buffer, REFIID riid, void** ppSurface); 9b639cf2d6 2015-05-05 kinaba: HRESULT SetFullscreenState(BOOL Fullscreen, IDXGIOutput pTarget); 9b639cf2d6 2015-05-05 kinaba: HRESULT GetFullscreenState(BOOL* pFullscreen, IDXGIOutput* ppTarget); 9b639cf2d6 2015-05-05 kinaba: HRESULT GetDesc(DXGI_SWAP_CHAIN_DESC* pDesc); 9b639cf2d6 2015-05-05 kinaba: HRESULT ResizeBuffers(UINT BufferCount, UINT Width, UINT Height, DXGI_FORMAT NewFormat, UINT SwapChainFlags); 9b639cf2d6 2015-05-05 kinaba: HRESULT ResizeTarget(DXGI_MODE_DESC* pNewTargetParameters); 9b639cf2d6 2015-05-05 kinaba: HRESULT GetContainingOutput(IDXGIOutput* ppOutput); 9b639cf2d6 2015-05-05 kinaba: HRESULT GetFrameStatistics(DXGI_FRAME_STATISTICS* pStats); 9b639cf2d6 2015-05-05 kinaba: HRESULT GetLastPresentCount(UINT* pLastPresentCount); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: interface IDXGIFactory : IDXGIObject { 9b639cf2d6 2015-05-05 kinaba: extern(Windows) : 9b639cf2d6 2015-05-05 kinaba: HRESULT EnumAdapters(UINT Adapter, IDXGIAdapter* ppAdapter); 9b639cf2d6 2015-05-05 kinaba: HRESULT MakeWindowAssociation(HWND WindowHandle, UINT Flags); 9b639cf2d6 2015-05-05 kinaba: HRESULT GetWindowAssociation(HWND* pWindowHandle); 9b639cf2d6 2015-05-05 kinaba: HRESULT CreateSwapChain(IUnknown pDevice, DXGI_SWAP_CHAIN_DESC* pDesc, IDXGISwapChain* ppSwapChain); 9b639cf2d6 2015-05-05 kinaba: HRESULT CreateSoftwareAdapter(HMODULE Module, IDXGIAdapter* ppAdapter); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: interface IDXGIDevice : IDXGIObject { 9b639cf2d6 2015-05-05 kinaba: extern(Windows) : 9b639cf2d6 2015-05-05 kinaba: HRESULT GetAdapter(IDXGIAdapter* pAdapter); 9b639cf2d6 2015-05-05 kinaba: HRESULT CreateSurface(DXGI_SURFACE_DESC* pDesc, UINT NumSurfaces, DXGI_USAGE Usage, DXGI_SHARED_RESOURCE* pSharedResource, IDXGISurface* ppSurface); 9b639cf2d6 2015-05-05 kinaba: HRESULT QueryResourceResidency(IUnknown* ppResources, DXGI_RESIDENCY* pResidencyStatus, UINT NumResources); 9b639cf2d6 2015-05-05 kinaba: HRESULT SetGPUThreadPriority(INT Priority); 9b639cf2d6 2015-05-05 kinaba: HRESULT GetGPUThreadPriority(INT* pPriority); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: extern(C) const GUID IID_IDXGIObject = {0xaec22fb8, 0x76f3, 0x4639, [0x9b, 0xe0, 0x28, 0xeb, 0x43, 0xa6, 0x7a, 0x2e]}; 9b639cf2d6 2015-05-05 kinaba: extern(C) const GUID IID_IDXGIDeviceSubObject = {0x3d3e0379, 0xf9de, 0x4d58, [0xbb, 0x6c, 0x18, 0xd6, 0x29, 0x92, 0xf1, 0xa6]}; 9b639cf2d6 2015-05-05 kinaba: extern(C) const GUID IID_IDXGIResource = {0x035f3ab4, 0x482e, 0x4e50, [0xb4, 0x1f, 0x8a, 0x7f, 0x8b, 0xd8, 0x96, 0x0b]}; 9b639cf2d6 2015-05-05 kinaba: extern(C) const GUID IID_IDXGISurface = {0xcafcb56c, 0x6ac3, 0x4889, [0xbf, 0x47, 0x9e, 0x23, 0xbb, 0xd2, 0x60, 0xec]}; 9b639cf2d6 2015-05-05 kinaba: extern(C) const GUID IID_IDXGIAdapter = {0x2411e7e1, 0x12ac, 0x4ccf, [0xbd, 0x14, 0x97, 0x98, 0xe8, 0x53, 0x4d, 0xc0]}; 9b639cf2d6 2015-05-05 kinaba: extern(C) const GUID IID_IDXGIOutput = {0xae02eedb, 0xc735, 0x4690, [0x8d, 0x52, 0x5a, 0x8d, 0xc2, 0x02, 0x13, 0xaa]}; 9b639cf2d6 2015-05-05 kinaba: extern(C) const GUID IID_IDXGISwapChain = {0x310d36a0, 0xd2e7, 0x4c0a, [0xaa, 0x04, 0x6a, 0x9d, 0x23, 0xb8, 0x88, 0x6a]}; 9b639cf2d6 2015-05-05 kinaba: extern(C) const GUID IID_IDXGIFactory = {0x7b7166ec, 0x21c7, 0x44ae, [0xb2, 0x1a, 0xc9, 0xae, 0x32, 0x1a, 0xe3, 0x69]}; 9b639cf2d6 2015-05-05 kinaba: extern(C) const GUID IID_IDXGIDevice = {0x54ec77fa, 0x1377, 0x44e6, [0x8c, 0x32, 0x88, 0xfd, 0x5f, 0x44, 0xc8, 0x4c]}; 9b639cf2d6 2015-05-05 kinaba: