root/trunk/win32/directx/dxgi.d

Revision 239, 7.5 kB (checked in by WeirdCat, 4 years ago)

DXGI_PRESENT* flags

Line 
1 /***********************************************************************\
2 *                                 dxgi.d                                *
3 *                                                                       *
4 *                       Windows API header module                       *
5 *                                                                       *
6 *                       Placed into public domain                       *
7 \***********************************************************************/
8 module win32.directx.dxgi;
9
10 private import win32.windows;
11
12 private import win32.directx.dxgitype;
13
14 enum {
15     DXGI_CPU_ACCESS_NONE        =  0,
16     DXGI_CPU_ACCESS_DYNAMIC     =  1,
17     DXGI_CPU_ACCESS_READ_WRITE  =  2,
18     DXGI_CPU_ACCESS_SCRATCH     =  3,
19     DXGI_CPU_ACCESS_FIELD       = 15
20 }
21
22 enum {
23     DXGI_USAGE_SHADER_INPUT         = 0b00_00010000,
24     DXGI_USAGE_RENDER_TARGET_OUTPUT = 0b00_00100000,
25     DXGI_USAGE_BACK_BUFFER          = 0b00_01000000,
26     DXGI_USAGE_SHARED               = 0b00_10000000,
27     DXGI_USAGE_READ_ONLY            = 0b01_00000000,
28     DXGI_USAGE_DISCARD_ON_PRESENT   = 0b10_00000000,
29 }
30 alias UINT DXGI_USAGE;
31
32 struct DXGI_FRAME_STATISTICS {
33     UINT PresentCount;
34     UINT PresentRefreshCount;
35     UINT SyncRefreshCount;
36     LARGE_INTEGER SyncQPCTime;
37     LARGE_INTEGER SyncGPUTime;
38 }
39
40 struct DXGI_MAPPED_RECT {
41     INT Pitch;
42     BYTE* pBits;
43 }
44
45 struct DXGI_ADAPTER_DESC {
46     WCHAR[128] Description;
47     UINT VendorId;
48     UINT DeviceId;
49     UINT SubSysId;
50     UINT Revision;
51     SIZE_T DedicatedVideoMemory;
52     SIZE_T DedicatedSystemMemory;
53     SIZE_T SharedSystemMemory;
54     LUID AdapterLuid;
55 }
56
57 struct DXGI_OUTPUT_DESC {
58     WCHAR[32] DeviceName;
59     RECT DesktopCoordinates;
60     BOOL AttachedToDesktop;
61     DXGI_MODE_ROTATION Rotation;
62     HMONITOR Monitor;
63 }
64
65 struct DXGI_SHARED_RESOURCE {
66     HANDLE Handle;
67 }
68
69 enum {
70     DXGI_RESOURCE_PRIORITY_MINIMUM  = 0x28000000,
71     DXGI_RESOURCE_PRIORITY_LOW      = 0x50000000,
72     DXGI_RESOURCE_PRIORITY_NORMAL   = 0x78000000,
73     DXGI_RESOURCE_PRIORITY_HIGH     = 0xa0000000,
74     DXGI_RESOURCE_PRIORITY_MAXIMUM  = 0xc8000000
75 }
76
77 enum DXGI_RESIDENCY {
78     DXGI_RESIDENCY_FULLY_RESIDENT               = 1,
79     DXGI_RESIDENCY_RESIDENT_IN_SHARED_MEMORY    = 2,
80     DXGI_RESIDENCY_EVICTED_TO_DISK              = 3
81 }
82
83 struct DXGI_SURFACE_DESC {
84     UINT Width;
85     UINT Height;
86     DXGI_FORMAT Format;
87     DXGI_SAMPLE_DESC SampleDesc;
88 }
89
90 enum DXGI_SWAP_EFFECT {
91     DXGI_SWAP_EFFECT_DISCARD    = 0,
92     DXGI_SWAP_EFFECT_SEQUENTIAL = 1
93 }
94
95 enum DXGI_SWAP_CHAIN_FLAG {
96     DXGI_SWAP_CHAIN_FLAG_NONPREROTATED      = 1,
97     DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH  = 2
98 }
99
100 struct DXGI_SWAP_CHAIN_DESC {
101     DXGI_MODE_DESC BufferDesc;
102     DXGI_SAMPLE_DESC SampleDesc;
103     DXGI_USAGE BufferUsage;
104     UINT BufferCount;
105     HWND OutputWindow;
106     BOOL Windowed;
107     DXGI_SWAP_EFFECT SwapEffect;
108     UINT Flags;
109 }
110
111 interface IDXGIObject : IUnknown {
112     extern(Windows) :
113     HRESULT SetPrivateData(REFGUID Name, UINT DataSize, void* pData);
114     HRESULT SetPrivateDataInterface(REFGUID Name, IUnknown pUnknown);
115     HRESULT GetPrivateData(REFGUID Name, UINT* pDataSize, void* pData);
116     HRESULT GetParent(REFIID riid, void** ppParent);
117 }
118
119 interface IDXGIDeviceSubObject : IDXGIObject {
120     extern(Windows) :
121     HRESULT GetDevice(REFIID riid, void** ppDevice);
122 }
123
124 interface IDXGIResource : IDXGIDeviceSubObject {
125     extern(Windows) :
126     HRESULT GetSharedHandle(HANDLE* pSharedHandle);
127     HRESULT GetUsage(DXGI_USAGE* pUsage);
128     HRESULT SetEvictionPriority(UINT EvictionPriority);
129     HRESULT GetEvictionPriority(UINT* pEvictionPriority);
130 }
131
132 interface IDXGISurface : IDXGIDeviceSubObject {
133     extern(Windows) :
134     HRESULT GetDesc(DXGI_SURFACE_DESC* pDesc);
135     HRESULT Map(DXGI_MAPPED_RECT* pLockedRect, UINT MapFlags);
136     HRESULT Unmap();
137 }
138
139 interface IDXGIAdapter : IDXGIObject {
140     extern(Windows) :
141     HRESULT EnumOutputs(UINT Output, IDXGIOutput* ppOutput);
142     HRESULT GetDesc(DXGI_ADAPTER_DESC* pDesc);
143     HRESULT CheckInterfaceSupport(REFGUID InterfaceName, LARGE_INTEGER* pUMDVersion);
144 }
145
146 interface IDXGIOutput : IDXGIObject {
147     extern(Windows) :
148     HRESULT GetDesc(DXGI_OUTPUT_DESC* pDesc);
149     HRESULT GetDisplayModeList(DXGI_FORMAT EnumFormat, UINT Flags, UINT* pNumModes, DXGI_MODE_DESC* pDesc);
150     HRESULT FindClosestMatchingMode(DXGI_MODE_DESC* pModeToMatch, DXGI_MODE_DESC* pClosestMatch, IUnknown pConcernedDevice);
151     HRESULT WaitForVBlank();
152     HRESULT TakeOwnership(IUnknown pDevice, BOOL Exclusive);
153     void ReleaseOwnership();
154     HRESULT GetGammaControlCapabilities(DXGI_GAMMA_CONTROL_CAPABILITIES* pGammaCaps);
155     HRESULT SetGammaControl(DXGI_GAMMA_CONTROL* pArray);
156     HRESULT GetGammaControl(DXGI_GAMMA_CONTROL* pArray);
157     HRESULT SetDisplaySurface(IDXGISurface pScanoutSurface);
158     HRESULT GetDisplaySurfaceData(IDXGISurface pDestination);
159     HRESULT GetFrameStatistics(DXGI_FRAME_STATISTICS* pStats);
160 }
161
162 const DXGI_MAX_SWAP_CHAIN_BUFFERS = 16;
163
164 enum {
165     DXGI_PRESENT_TEST               = 0x00000001,
166     DXGI_PRESENT_DO_NOT_SEQUENCE    = 0x00000002,
167     DXGI_PRESENT_RESTART            = 0x00000004
168 }
169
170 interface IDXGISwapChain : IDXGIDeviceSubObject {
171     extern(Windows) :
172     HRESULT Present(UINT SyncInterval, UINT Flags);
173     HRESULT GetBuffer(UINT Buffer, REFIID riid, void** ppSurface);
174     HRESULT SetFullscreenState(BOOL Fullscreen, IDXGIOutput pTarget);
175     HRESULT GetFullscreenState(BOOL* pFullscreen, IDXGIOutput* ppTarget);
176     HRESULT GetDesc(DXGI_SWAP_CHAIN_DESC* pDesc);
177     HRESULT ResizeBuffers(UINT BufferCount, UINT Width, UINT Height, DXGI_FORMAT NewFormat, UINT SwapChainFlags);
178     HRESULT ResizeTarget(DXGI_MODE_DESC* pNewTargetParameters);
179     HRESULT GetContainingOutput(IDXGIOutput* ppOutput);
180     HRESULT GetFrameStatistics(DXGI_FRAME_STATISTICS* pStats);
181     HRESULT GetLastPresentCount(UINT* pLastPresentCount);
182 }
183
184 interface IDXGIFactory : IDXGIObject {
185     extern(Windows) :
186     HRESULT EnumAdapters(UINT Adapter, IDXGIAdapter* ppAdapter);
187     HRESULT MakeWindowAssociation(HWND WindowHandle, UINT Flags);
188     HRESULT GetWindowAssociation(HWND* pWindowHandle);
189     HRESULT CreateSwapChain(IUnknown pDevice, DXGI_SWAP_CHAIN_DESC* pDesc, IDXGISwapChain* ppSwapChain);
190     HRESULT CreateSoftwareAdapter(HMODULE Module, IDXGIAdapter* ppAdapter);
191 }
192
193 interface IDXGIDevice : IDXGIObject {
194     extern(Windows) :
195     HRESULT GetAdapter(IDXGIAdapter* pAdapter);
196     HRESULT CreateSurface(DXGI_SURFACE_DESC* pDesc, UINT NumSurfaces, DXGI_USAGE Usage, DXGI_SHARED_RESOURCE* pSharedResource, IDXGISurface* ppSurface);
197     HRESULT QueryResourceResidency(IUnknown* ppResources, DXGI_RESIDENCY* pResidencyStatus, UINT NumResources);
198     HRESULT SetGPUThreadPriority(INT Priority);
199     HRESULT GetGPUThreadPriority(INT* pPriority);
200 }
201
202 extern(C) const GUID IID_IDXGIObject            = {0xaec22fb8, 0x76f3, 0x4639, [0x9b, 0xe0, 0x28, 0xeb, 0x43, 0xa6, 0x7a, 0x2e]};
203 extern(C) const GUID IID_IDXGIDeviceSubObject   = {0x3d3e0379, 0xf9de, 0x4d58, [0xbb, 0x6c, 0x18, 0xd6, 0x29, 0x92, 0xf1, 0xa6]};
204 extern(C) const GUID IID_IDXGIResource          = {0x035f3ab4, 0x482e, 0x4e50, [0xb4, 0x1f, 0x8a, 0x7f, 0x8b, 0xd8, 0x96, 0x0b]};
205 extern(C) const GUID IID_IDXGISurface           = {0xcafcb56c, 0x6ac3, 0x4889, [0xbf, 0x47, 0x9e, 0x23, 0xbb, 0xd2, 0x60, 0xec]};
206 extern(C) const GUID IID_IDXGIAdapter           = {0x2411e7e1, 0x12ac, 0x4ccf, [0xbd, 0x14, 0x97, 0x98, 0xe8, 0x53, 0x4d, 0xc0]};
207 extern(C) const GUID IID_IDXGIOutput            = {0xae02eedb, 0xc735, 0x4690, [0x8d, 0x52, 0x5a, 0x8d, 0xc2, 0x02, 0x13, 0xaa]};
208 extern(C) const GUID IID_IDXGISwapChain         = {0x310d36a0, 0xd2e7, 0x4c0a, [0xaa, 0x04, 0x6a, 0x9d, 0x23, 0xb8, 0x88, 0x6a]};
209 extern(C) const GUID IID_IDXGIFactory           = {0x7b7166ec, 0x21c7, 0x44ae, [0xb2, 0x1a, 0xc9, 0xae, 0x32, 0x1a, 0xe3, 0x69]};
210 extern(C) const GUID IID_IDXGIDevice            = {0x54ec77fa, 0x1377, 0x44e6, [0x8c, 0x32, 0x88, 0xfd, 0x5f, 0x44, 0xc8, 0x4c]};
Note: See TracBrowser for help on using the browser.