| 1 | /* | 
 
 
 
 
 | 2 | * Copyright 2007 Andras Kovacs | 
 
 
 
 
 | 3 | * | 
 
 
 
 
 | 4 | * This library is free software; you can redistribute it and/or | 
 
 
 
 
 | 5 | * modify it under the terms of the GNU Lesser General Public | 
 
 
 
 
 | 6 | * License as published by the Free Software Foundation; either | 
 
 
 
 
 | 7 | * version 2.1 of the License, or (at your option) any later version. | 
 
 
 
 
 | 8 | * | 
 
 
 
 
 | 9 | * This library is distributed in the hope that it will be useful, | 
 
 
 
 
 | 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
 
 
 
 
 | 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
 
 
 
 
 | 12 | * Lesser General Public License for more details. | 
 
 
 
 
 | 13 | * | 
 
 
 
 
 | 14 | * You should have received a copy of the GNU Lesser General Public | 
 
 
 
 
 | 15 | * License along with this library; if not, write to the Free Software | 
 
 
 
 
 | 16 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
 
 
 
 
 | 17 | */ | 
 
 
 
 
 | 18 |  | 
 
 
 
 
 | 19 | import "oaidl.idl"; | 
 
 
 
 
 | 20 | import "ocidl.idl"; | 
 
 
 
 
 | 21 | import "dxgitype.idl"; | 
 
 
 
 
 | 22 |  | 
 
 
 
 
 | 23 | const UINT _FACDXGI = 0x87a; | 
 
 
 
 
 | 24 |  | 
 
 
 
 
 | 25 | cpp_quote("#define MAKE_DXGI_STATUS(x)                         MAKE_HRESULT(0, _FACDXGI, x)") | 
 
 
 
 
 | 26 | cpp_quote("#define MAKE_DXGI_HRESULT(x)                        MAKE_HRESULT(1, _FACDXGI, x)") | 
 
 
 
 
 | 27 |  | 
 
 
 
 
 | 28 | cpp_quote("#if 0") | 
 
 
 
 
 | 29 | typedef HANDLE HMONITOR; | 
 
 
 
 
 | 30 | typedef struct _LUID { | 
 
 
 
 
 | 31 | DWORD LowPart; | 
 
 
 
 
 | 32 | LONG HighPart; | 
 
 
 
 
 | 33 | } LUID, *PLUID; | 
 
 
 
 
 | 34 | cpp_quote("#endif") | 
 
 
 
 
 | 35 |  | 
 
 
 
 
 | 36 | const UINT DXGI_CPU_ACCESS_NONE                     = 0; | 
 
 
 
 
 | 37 | const UINT DXGI_CPU_ACCESS_DYNAMIC                  = 1; | 
 
 
 
 
 | 38 | const UINT DXGI_CPU_ACCESS_READ_WRITE               = 2; | 
 
 
 
 
 | 39 | const UINT DXGI_CPU_ACCESS_SCRATCH                  = 3; | 
 
 
 
 
 | 40 | const UINT DXGI_CPU_ACCESS_FIELD                    = 15; | 
 
 
 
 
 | 41 |  | 
 
 
 
 
 | 42 | typedef UINT DXGI_USAGE; | 
 
 
 
 
 | 43 | const DXGI_USAGE DXGI_USAGE_SHADER_INPUT            = 0x10L; | 
 
 
 
 
 | 44 | const DXGI_USAGE DXGI_USAGE_RENDER_TARGET_OUTPUT    = 0x20L; | 
 
 
 
 
 | 45 | const DXGI_USAGE DXGI_USAGE_BACK_BUFFER             = 0x40L; | 
 
 
 
 
 | 46 | const DXGI_USAGE DXGI_USAGE_SHARED                  = 0x80L; | 
 
 
 
 
 | 47 | const DXGI_USAGE DXGI_USAGE_READ_ONLY               = 0x100L; | 
 
 
 
 
 | 48 | const DXGI_USAGE DXGI_USAGE_DISCARD_ON_PRESENT      = 0x200L; | 
 
 
 
 
 | 49 | const DXGI_USAGE DXGI_USAGE_UNORDERED_ACCESS        = 0x400L; | 
 
 
 
 
 | 50 |  | 
 
 
 
 
 | 51 | const UINT DXGI_ENUM_MODES_INTERLACED               = 1; | 
 
 
 
 
 | 52 | const UINT DXGI_ENUM_MODES_SCALING                  = 2; | 
 
 
 
 
 | 53 |  | 
 
 
 
 
 | 54 | const UINT DXGI_RESOURCE_PRIORITY_MINIMUM           = 0x28000000; | 
 
 
 
 
 | 55 | const UINT DXGI_RESOURCE_PRIORITY_LOW               = 0x50000000; | 
 
 
 
 
 | 56 | const UINT DXGI_RESOURCE_PRIORITY_NORMAL            = 0x78000000; | 
 
 
 
 
 | 57 | const UINT DXGI_RESOURCE_PRIORITY_HIGH              = 0xa0000000; | 
 
 
 
 
 | 58 | const UINT DXGI_RESOURCE_PRIORITY_MAXIMUM           = 0xc8000000; | 
 
 
 
 
 | 59 |  | 
 
 
 
 
 | 60 | const UINT DXGI_MAP_READ                            = 0x1; | 
 
 
 
 
 | 61 | const UINT DXGI_MAP_WRITE                           = 0x2; | 
 
 
 
 
 | 62 | const UINT DXGI_MAP_DISCARD                         = 0x4; | 
 
 
 
 
 | 63 |  | 
 
 
 
 
 | 64 | typedef enum DXGI_SWAP_EFFECT { | 
 
 
 
 
 | 65 | DXGI_SWAP_EFFECT_DISCARD    = 0, | 
 
 
 
 
 | 66 | DXGI_SWAP_EFFECT_SEQUENTIAL = 1, | 
 
 
 
 
 | 67 | DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL = 3, | 
 
 
 
 
 | 68 | DXGI_SWAP_EFFECT_FLIP_DISCARD = 4 | 
 
 
 
 
 | 69 | } DXGI_SWAP_EFFECT; | 
 
 
 
 
 | 70 |  | 
 
 
 
 
 | 71 | typedef enum DXGI_RESIDENCY { | 
 
 
 
 
 | 72 | DXGI_RESIDENCY_FULLY_RESIDENT               = 1, | 
 
 
 
 
 | 73 | DXGI_RESIDENCY_RESIDENT_IN_SHARED_MEMORY    = 2, | 
 
 
 
 
 | 74 | DXGI_RESIDENCY_EVICTED_TO_DISK              = 3, | 
 
 
 
 
 | 75 | } DXGI_RESIDENCY; | 
 
 
 
 
 | 76 |  | 
 
 
 
 
 | 77 | typedef struct DXGI_SURFACE_DESC { | 
 
 
 
 
 | 78 | UINT Width; | 
 
 
 
 
 | 79 | UINT Height; | 
 
 
 
 
 | 80 | DXGI_FORMAT Format; | 
 
 
 
 
 | 81 | DXGI_SAMPLE_DESC SampleDesc; | 
 
 
 
 
 | 82 | } DXGI_SURFACE_DESC; | 
 
 
 
 
 | 83 |  | 
 
 
 
 
 | 84 | typedef struct DXGI_MAPPED_RECT { | 
 
 
 
 
 | 85 | INT Pitch; | 
 
 
 
 
 | 86 | BYTE *pBits; | 
 
 
 
 
 | 87 | } DXGI_MAPPED_RECT; | 
 
 
 
 
 | 88 |  | 
 
 
 
 
 | 89 | typedef struct DXGI_OUTPUT_DESC { | 
 
 
 
 
 | 90 | WCHAR DeviceName[32]; | 
 
 
 
 
 | 91 | RECT DesktopCoordinates; | 
 
 
 
 
 | 92 | BOOL AttachedToDesktop; | 
 
 
 
 
 | 93 | DXGI_MODE_ROTATION Rotation; | 
 
 
 
 
 | 94 | HMONITOR Monitor; | 
 
 
 
 
 | 95 | } DXGI_OUTPUT_DESC; | 
 
 
 
 
 | 96 |  | 
 
 
 
 
 | 97 | typedef struct DXGI_FRAME_STATISTICS { | 
 
 
 
 
 | 98 | UINT PresentCount; | 
 
 
 
 
 | 99 | UINT PresentRefreshCount; | 
 
 
 
 
 | 100 | UINT SyncRefreshCount; | 
 
 
 
 
 | 101 | LARGE_INTEGER SyncQPCTime; | 
 
 
 
 
 | 102 | LARGE_INTEGER SyncGPUTime; | 
 
 
 
 
 | 103 | } DXGI_FRAME_STATISTICS; | 
 
 
 
 
 | 104 |  | 
 
 
 
 
 | 105 | typedef struct DXGI_ADAPTER_DESC { | 
 
 
 
 
 | 106 | WCHAR Description[128]; | 
 
 
 
 
 | 107 | UINT VendorId; | 
 
 
 
 
 | 108 | UINT DeviceId; | 
 
 
 
 
 | 109 | UINT SubSysId; | 
 
 
 
 
 | 110 | UINT Revision; | 
 
 
 
 
 | 111 | SIZE_T DedicatedVideoMemory; | 
 
 
 
 
 | 112 | SIZE_T DedicatedSystemMemory; | 
 
 
 
 
 | 113 | SIZE_T SharedSystemMemory; | 
 
 
 
 
 | 114 | LUID AdapterLuid; | 
 
 
 
 
 | 115 | } DXGI_ADAPTER_DESC; | 
 
 
 
 
 | 116 |  | 
 
 
 
 
 | 117 | typedef enum DXGI_SWAP_CHAIN_FLAG | 
 
 
 
 
 | 118 | { | 
 
 
 
 
 | 119 | DXGI_SWAP_CHAIN_FLAG_NONPREROTATED                          = 0x0001, | 
 
 
 
 
 | 120 | DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH                      = 0x0002, | 
 
 
 
 
 | 121 | DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE                         = 0x0004, | 
 
 
 
 
 | 122 | DXGI_SWAP_CHAIN_FLAG_RESTRICTED_CONTENT                     = 0x0008, | 
 
 
 
 
 | 123 | DXGI_SWAP_CHAIN_FLAG_RESTRICT_SHARED_RESOURCE_DRIVER        = 0x0010, | 
 
 
 
 
 | 124 | DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY                           = 0x0020, | 
 
 
 
 
 | 125 | DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT          = 0x0040, | 
 
 
 
 
 | 126 | DXGI_SWAP_CHAIN_FLAG_FOREGROUND_LAYER                       = 0x0080, | 
 
 
 
 
 | 127 | DXGI_SWAP_CHAIN_FLAG_FULLSCREEN_VIDEO                       = 0x0100, | 
 
 
 
 
 | 128 | DXGI_SWAP_CHAIN_FLAG_YUV_VIDEO                              = 0x0200, | 
 
 
 
 
 | 129 | DXGI_SWAP_CHAIN_FLAG_HW_PROTECTED                           = 0x0400, | 
 
 
 
 
 | 130 | DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING                          = 0x0800, | 
 
 
 
 
 | 131 | DXGI_SWAP_CHAIN_FLAG_RESTRICTED_TO_ALL_HOLOGRAPHIC_DISPLAYS = 0x1000, | 
 
 
 
 
 | 132 | } DXGI_SWAP_CHAIN_FLAG; | 
 
 
 
 
 | 133 |  | 
 
 
 
 
 | 134 | typedef struct DXGI_SWAP_CHAIN_DESC { | 
 
 
 
 
 | 135 | DXGI_MODE_DESC BufferDesc; | 
 
 
 
 
 | 136 | DXGI_SAMPLE_DESC SampleDesc; | 
 
 
 
 
 | 137 | DXGI_USAGE BufferUsage; | 
 
 
 
 
 | 138 | UINT BufferCount; | 
 
 
 
 
 | 139 | HWND OutputWindow; | 
 
 
 
 
 | 140 | BOOL Windowed; | 
 
 
 
 
 | 141 | DXGI_SWAP_EFFECT SwapEffect; | 
 
 
 
 
 | 142 | UINT Flags; | 
 
 
 
 
 | 143 | } DXGI_SWAP_CHAIN_DESC; | 
 
 
 
 
 | 144 |  | 
 
 
 
 
 | 145 | typedef struct DXGI_SHARED_RESOURCE { | 
 
 
 
 
 | 146 | HANDLE Handle; | 
 
 
 
 
 | 147 | } DXGI_SHARED_RESOURCE; | 
 
 
 
 
 | 148 |  | 
 
 
 
 
 | 149 | [ | 
 
 
 
 
 | 150 | object, | 
 
 
 
 
 | 151 | local, | 
 
 
 
 
 | 152 | uuid(aec22fb8-76f3-4639-9be0-28eb43a67a2e) | 
 
 
 
 
 | 153 | ] | 
 
 
 
 
 | 154 | interface IDXGIObject : IUnknown | 
 
 
 
 
 | 155 | { | 
 
 
 
 
 | 156 | HRESULT SetPrivateData( | 
 
 
 
 
 | 157 | [in] REFGUID guid, | 
 
 
 
 
 | 158 | [in] UINT data_size, | 
 
 
 
 
 | 159 | [in] const void *data | 
 
 
 
 
 | 160 | ); | 
 
 
 
 
 | 161 | HRESULT SetPrivateDataInterface( | 
 
 
 
 
 | 162 | [in] REFGUID guid, | 
 
 
 
 
 | 163 | [in] const IUnknown *object | 
 
 
 
 
 | 164 | ); | 
 
 
 
 
 | 165 | HRESULT GetPrivateData( | 
 
 
 
 
 | 166 | [in] REFGUID guid, | 
 
 
 
 
 | 167 | [in, out] UINT *data_size, | 
 
 
 
 
 | 168 | [out] void *data | 
 
 
 
 
 | 169 | ); | 
 
 
 
 
 | 170 | HRESULT GetParent( | 
 
 
 
 
 | 171 | [in] REFIID riid, | 
 
 
 
 
 | 172 | [out] void **parent | 
 
 
 
 
 | 173 | ); | 
 
 
 
 
 | 174 | } | 
 
 
 
 
 | 175 |  | 
 
 
 
 
 | 176 | [ | 
 
 
 
 
 | 177 | object, | 
 
 
 
 
 | 178 | local, | 
 
 
 
 
 | 179 | uuid(3d3e0379-f9de-4d58-bb6c-18d62992f1a6) | 
 
 
 
 
 | 180 | ] | 
 
 
 
 
 | 181 | interface IDXGIDeviceSubObject : IDXGIObject | 
 
 
 
 
 | 182 | { | 
 
 
 
 
 | 183 | HRESULT GetDevice( | 
 
 
 
 
 | 184 | [in] REFIID riid, | 
 
 
 
 
 | 185 | [out] void **device | 
 
 
 
 
 | 186 | ); | 
 
 
 
 
 | 187 | } | 
 
 
 
 
 | 188 |  | 
 
 
 
 
 | 189 | [ | 
 
 
 
 
 | 190 | object, | 
 
 
 
 
 | 191 | uuid(035f3ab4-482e-4e50-b41f-8a7f8bd8960b), | 
 
 
 
 
 | 192 | local, | 
 
 
 
 
 | 193 | pointer_default(unique) | 
 
 
 
 
 | 194 | ] | 
 
 
 
 
 | 195 | interface IDXGIResource : IDXGIDeviceSubObject | 
 
 
 
 
 | 196 | { | 
 
 
 
 
 | 197 | HRESULT GetSharedHandle([out] HANDLE *pSharedHandle); | 
 
 
 
 
 | 198 | HRESULT GetUsage([out] DXGI_USAGE *pUsage); | 
 
 
 
 
 | 199 | HRESULT SetEvictionPriority([in] UINT EvictionPriority); | 
 
 
 
 
 | 200 | HRESULT GetEvictionPriority([out, retval] UINT *pEvictionPriority); | 
 
 
 
 
 | 201 | } | 
 
 
 
 
 | 202 |  | 
 
 
 
 
 | 203 | [ | 
 
 
 
 
 | 204 | object, | 
 
 
 
 
 | 205 | uuid(9d8e1289-d7b3-465f-8126-250e349af85d), | 
 
 
 
 
 | 206 | local, | 
 
 
 
 
 | 207 | pointer_default(unique) | 
 
 
 
 
 | 208 | ] | 
 
 
 
 
 | 209 | interface IDXGIKeyedMutex : IDXGIDeviceSubObject | 
 
 
 
 
 | 210 | { | 
 
 
 
 
 | 211 | HRESULT AcquireSync([in] UINT64 Key, [in] DWORD dwMilliseconds); | 
 
 
 
 
 | 212 | HRESULT ReleaseSync([in] UINT64 Key); | 
 
 
 
 
 | 213 | } | 
 
 
 
 
 | 214 |  | 
 
 
 
 
 | 215 | [ | 
 
 
 
 
 | 216 | object, | 
 
 
 
 
 | 217 | local, | 
 
 
 
 
 | 218 | uuid(cafcb56c-6ac3-4889-bf47-9e23bbd260ec) | 
 
 
 
 
 | 219 | ] | 
 
 
 
 
 | 220 | interface IDXGISurface : IDXGIDeviceSubObject | 
 
 
 
 
 | 221 | { | 
 
 
 
 
 | 222 | HRESULT GetDesc( | 
 
 
 
 
 | 223 | [out] DXGI_SURFACE_DESC *desc | 
 
 
 
 
 | 224 | ); | 
 
 
 
 
 | 225 | HRESULT Map( | 
 
 
 
 
 | 226 | [out] DXGI_MAPPED_RECT *mapped_rect, | 
 
 
 
 
 | 227 | [in] UINT flags | 
 
 
 
 
 | 228 | ); | 
 
 
 
 
 | 229 | HRESULT Unmap( | 
 
 
 
 
 | 230 | ); | 
 
 
 
 
 | 231 | } | 
 
 
 
 
 | 232 |  | 
 
 
 
 
 | 233 | [ | 
 
 
 
 
 | 234 | object, | 
 
 
 
 
 | 235 | local, | 
 
 
 
 
 | 236 | uuid(4ae63092-6327-4c1b-80ae-bfe12ea32b86) | 
 
 
 
 
 | 237 | ] | 
 
 
 
 
 | 238 | interface IDXGISurface1 : IDXGISurface | 
 
 
 
 
 | 239 | { | 
 
 
 
 
 | 240 | HRESULT GetDC( | 
 
 
 
 
 | 241 | [in] BOOL discard, | 
 
 
 
 
 | 242 | [out] HDC *hdc | 
 
 
 
 
 | 243 | ); | 
 
 
 
 
 | 244 | HRESULT ReleaseDC( | 
 
 
 
 
 | 245 | [in] RECT *dirty_rect | 
 
 
 
 
 | 246 | ); | 
 
 
 
 
 | 247 | } | 
 
 
 
 
 | 248 |  | 
 
 
 
 
 | 249 | [ | 
 
 
 
 
 | 250 | object, | 
 
 
 
 
 | 251 | local, | 
 
 
 
 
 | 252 | uuid(ae02eedb-c735-4690-8d52-5a8dc20213aa) | 
 
 
 
 
 | 253 | ] | 
 
 
 
 
 | 254 | interface IDXGIOutput : IDXGIObject | 
 
 
 
 
 | 255 | { | 
 
 
 
 
 | 256 | HRESULT GetDesc( | 
 
 
 
 
 | 257 | [out] DXGI_OUTPUT_DESC *desc | 
 
 
 
 
 | 258 | ); | 
 
 
 
 
 | 259 | HRESULT GetDisplayModeList( | 
 
 
 
 
 | 260 | [in] DXGI_FORMAT format, | 
 
 
 
 
 | 261 | [in] UINT flags, | 
 
 
 
 
 | 262 | [in, out] UINT *mode_count, | 
 
 
 
 
 | 263 | [out] DXGI_MODE_DESC *desc | 
 
 
 
 
 | 264 | ); | 
 
 
 
 
 | 265 | HRESULT FindClosestMatchingMode( | 
 
 
 
 
 | 266 | [in] const DXGI_MODE_DESC *mode, | 
 
 
 
 
 | 267 | [out] DXGI_MODE_DESC *closest_match, | 
 
 
 
 
 | 268 | [in] IUnknown *device | 
 
 
 
 
 | 269 | ); | 
 
 
 
 
 | 270 | HRESULT WaitForVBlank( | 
 
 
 
 
 | 271 | ); | 
 
 
 
 
 | 272 | HRESULT TakeOwnership( | 
 
 
 
 
 | 273 | [in] IUnknown *device, | 
 
 
 
 
 | 274 | [in] BOOL exclusive | 
 
 
 
 
 | 275 | ); | 
 
 
 
 
 | 276 | void ReleaseOwnership( | 
 
 
 
 
 | 277 | ); | 
 
 
 
 
 | 278 | HRESULT GetGammaControlCapabilities( | 
 
 
 
 
 | 279 | [out] DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps | 
 
 
 
 
 | 280 | ); | 
 
 
 
 
 | 281 | HRESULT SetGammaControl( | 
 
 
 
 
 | 282 | [in] const DXGI_GAMMA_CONTROL *gamma_control | 
 
 
 
 
 | 283 | ); | 
 
 
 
 
 | 284 | HRESULT GetGammaControl( | 
 
 
 
 
 | 285 | [out] DXGI_GAMMA_CONTROL *gamma_control | 
 
 
 
 
 | 286 | ); | 
 
 
 
 
 | 287 | HRESULT SetDisplaySurface( | 
 
 
 
 
 | 288 | [in] IDXGISurface *surface | 
 
 
 
 
 | 289 | ); | 
 
 
 
 
 | 290 | HRESULT GetDisplaySurfaceData( | 
 
 
 
 
 | 291 | [in] IDXGISurface *surface | 
 
 
 
 
 | 292 | ); | 
 
 
 
 
 | 293 | HRESULT GetFrameStatistics( | 
 
 
 
 
 | 294 | [out] DXGI_FRAME_STATISTICS *stats | 
 
 
 
 
 | 295 | ); | 
 
 
 
 
 | 296 | } | 
 
 
 
 
 | 297 |  | 
 
 
 
 
 | 298 | [ | 
 
 
 
 
 | 299 | object, | 
 
 
 
 
 | 300 | local, | 
 
 
 
 
 | 301 | uuid(2411e7e1-12ac-4ccf-bd14-9798e8534dc0) | 
 
 
 
 
 | 302 | ] | 
 
 
 
 
 | 303 | interface IDXGIAdapter : IDXGIObject | 
 
 
 
 
 | 304 | { | 
 
 
 
 
 | 305 | HRESULT EnumOutputs( | 
 
 
 
 
 | 306 | [in] UINT output_idx, | 
 
 
 
 
 | 307 | [in, out] IDXGIOutput **output | 
 
 
 
 
 | 308 | ); | 
 
 
 
 
 | 309 | HRESULT GetDesc( | 
 
 
 
 
 | 310 | [out] DXGI_ADAPTER_DESC *desc | 
 
 
 
 
 | 311 | ); | 
 
 
 
 
 | 312 | HRESULT CheckInterfaceSupport( | 
 
 
 
 
 | 313 | [in] REFGUID guid, | 
 
 
 
 
 | 314 | [out] LARGE_INTEGER *umd_version | 
 
 
 
 
 | 315 | ); | 
 
 
 
 
 | 316 | } | 
 
 
 
 
 | 317 |  | 
 
 
 
 
 | 318 | cpp_quote("#define DXGI_MAX_SWAP_CHAIN_BUFFERS  (16)") | 
 
 
 
 
 | 319 |  | 
 
 
 
 
 | 320 | cpp_quote("#define DXGI_PRESENT_TEST                   __MSABI_LONG(0x00000001U)") | 
 
 
 
 
 | 321 | cpp_quote("#define DXGI_PRESENT_DO_NOT_SEQUENCE        __MSABI_LONG(0x00000002U)") | 
 
 
 
 
 | 322 | cpp_quote("#define DXGI_PRESENT_RESTART                __MSABI_LONG(0x00000004U)") | 
 
 
 
 
 | 323 | cpp_quote("#define DXGI_PRESENT_DO_NOT_WAIT            __MSABI_LONG(0x00000008U)") | 
 
 
 
 
 | 324 | cpp_quote("#define DXGI_PRESENT_STEREO_PREFER_RIGHT    __MSABI_LONG(0x00000010U)") | 
 
 
 
 
 | 325 | cpp_quote("#define DXGI_PRESENT_STEREO_TEMPORARY_MONO  __MSABI_LONG(0x00000020U)") | 
 
 
 
 
 | 326 | cpp_quote("#define DXGI_PRESENT_RESTRICT_TO_OUTPUT     __MSABI_LONG(0x00000040U)") | 
 
 
 
 
 | 327 | cpp_quote("#define DXGI_PRESENT_USE_DURATION           __MSABI_LONG(0x00000100U)") | 
 
 
 
 
 | 328 | cpp_quote("#define DXGI_PRESENT_ALLOW_TEARING          __MSABI_LONG(0x00000200U)") | 
 
 
 
 
 | 329 |  | 
 
 
 
 
 | 330 | [ | 
 
 
 
 
 | 331 | object, | 
 
 
 
 
 | 332 | local, | 
 
 
 
 
 | 333 | uuid(310d36a0-d2e7-4c0a-aa04-6a9d23b8886a) | 
 
 
 
 
 | 334 | ] | 
 
 
 
 
 | 335 | interface IDXGISwapChain : IDXGIDeviceSubObject | 
 
 
 
 
 | 336 | { | 
 
 
 
 
 | 337 | HRESULT Present( | 
 
 
 
 
 | 338 | [in] UINT sync_interval, | 
 
 
 
 
 | 339 | [in] UINT flags | 
 
 
 
 
 | 340 | ); | 
 
 
 
 
 | 341 | HRESULT GetBuffer( | 
 
 
 
 
 | 342 | [in] UINT buffer_idx, | 
 
 
 
 
 | 343 | [in] REFIID riid, | 
 
 
 
 
 | 344 | [in, out] void **surface | 
 
 
 
 
 | 345 | ); | 
 
 
 
 
 | 346 | HRESULT SetFullscreenState( | 
 
 
 
 
 | 347 | [in] BOOL fullscreen, | 
 
 
 
 
 | 348 | [in] IDXGIOutput *target | 
 
 
 
 
 | 349 | ); | 
 
 
 
 
 | 350 | HRESULT GetFullscreenState( | 
 
 
 
 
 | 351 | [out] BOOL *fullscreen, | 
 
 
 
 
 | 352 | [out] IDXGIOutput **target | 
 
 
 
 
 | 353 | ); | 
 
 
 
 
 | 354 | HRESULT GetDesc( | 
 
 
 
 
 | 355 | [out] DXGI_SWAP_CHAIN_DESC *desc | 
 
 
 
 
 | 356 | ); | 
 
 
 
 
 | 357 | HRESULT ResizeBuffers( | 
 
 
 
 
 | 358 | [in] UINT buffer_count, | 
 
 
 
 
 | 359 | [in] UINT width, | 
 
 
 
 
 | 360 | [in] UINT height, | 
 
 
 
 
 | 361 | [in] DXGI_FORMAT format, | 
 
 
 
 
 | 362 | [in] UINT flags | 
 
 
 
 
 | 363 | ); | 
 
 
 
 
 | 364 | HRESULT ResizeTarget( | 
 
 
 
 
 | 365 | [in] const DXGI_MODE_DESC *target_mode_desc | 
 
 
 
 
 | 366 | ); | 
 
 
 
 
 | 367 | HRESULT GetContainingOutput( | 
 
 
 
 
 | 368 | [out] IDXGIOutput **output | 
 
 
 
 
 | 369 | ); | 
 
 
 
 
 | 370 | HRESULT GetFrameStatistics( | 
 
 
 
 
 | 371 | [out] DXGI_FRAME_STATISTICS *stats | 
 
 
 
 
 | 372 | ); | 
 
 
 
 
 | 373 | HRESULT GetLastPresentCount( | 
 
 
 
 
 | 374 | [out] UINT *last_present_count | 
 
 
 
 
 | 375 | ); | 
 
 
 
 
 | 376 | } | 
 
 
 
 
 | 377 |  | 
 
 
 
 
 | 378 | cpp_quote("#define DXGI_MWA_NO_WINDOW_CHANGES  0x1") | 
 
 
 
 
 | 379 | cpp_quote("#define DXGI_MWA_NO_ALT_ENTER       0x2") | 
 
 
 
 
 | 380 | cpp_quote("#define DXGI_MWA_NO_PRINT_SCREEN    0x4") | 
 
 
 
 
 | 381 | cpp_quote("#define DXGI_MWA_VALID              0x7") | 
 
 
 
 
 | 382 |  | 
 
 
 
 
 | 383 | [ | 
 
 
 
 
 | 384 | object, | 
 
 
 
 
 | 385 | local, | 
 
 
 
 
 | 386 | uuid(7b7166ec-21c7-44ae-b21a-c9ae321ae369) | 
 
 
 
 
 | 387 | ] | 
 
 
 
 
 | 388 | interface IDXGIFactory : IDXGIObject | 
 
 
 
 
 | 389 | { | 
 
 
 
 
 | 390 | HRESULT EnumAdapters( | 
 
 
 
 
 | 391 | [in] UINT adapter_idx, | 
 
 
 
 
 | 392 | [out] IDXGIAdapter **adapter | 
 
 
 
 
 | 393 | ); | 
 
 
 
 
 | 394 | HRESULT MakeWindowAssociation( | 
 
 
 
 
 | 395 | [in] HWND window, | 
 
 
 
 
 | 396 | [in] UINT flags | 
 
 
 
 
 | 397 | ); | 
 
 
 
 
 | 398 | HRESULT GetWindowAssociation( | 
 
 
 
 
 | 399 | [in] HWND *window | 
 
 
 
 
 | 400 | ); | 
 
 
 
 
 | 401 | HRESULT CreateSwapChain( | 
 
 
 
 
 | 402 | [in] IUnknown *device, | 
 
 
 
 
 | 403 | [in] DXGI_SWAP_CHAIN_DESC *desc, | 
 
 
 
 
 | 404 | [out] IDXGISwapChain **swapchain | 
 
 
 
 
 | 405 | ); | 
 
 
 
 
 | 406 | HRESULT CreateSoftwareAdapter( | 
 
 
 
 
 | 407 | [in] HMODULE swrast, | 
 
 
 
 
 | 408 | [out] IDXGIAdapter **adapter | 
 
 
 
 
 | 409 | ); | 
 
 
 
 
 | 410 | } | 
 
 
 
 
 | 411 |  | 
 
 
 
 
 | 412 | [local] HRESULT __stdcall CreateDXGIFactory(REFIID riid, void **factory); | 
 
 
 
 
 | 413 | [local] HRESULT __stdcall CreateDXGIFactory1(REFIID riid, void **factory); | 
 
 
 
 
 | 414 |  | 
 
 
 
 
 | 415 | [ | 
 
 
 
 
 | 416 | object, | 
 
 
 
 
 | 417 | local, | 
 
 
 
 
 | 418 | uuid(54ec77fa-1377-44e6-8c32-88fd5f44c84c) | 
 
 
 
 
 | 419 | ] | 
 
 
 
 
 | 420 | interface IDXGIDevice : IDXGIObject | 
 
 
 
 
 | 421 | { | 
 
 
 
 
 | 422 | HRESULT GetAdapter( | 
 
 
 
 
 | 423 | [out] IDXGIAdapter **adapter | 
 
 
 
 
 | 424 | ); | 
 
 
 
 
 | 425 | HRESULT CreateSurface( | 
 
 
 
 
 | 426 | [in] const DXGI_SURFACE_DESC *desc, | 
 
 
 
 
 | 427 | [in] UINT surface_count, | 
 
 
 
 
 | 428 | [in] DXGI_USAGE usage, | 
 
 
 
 
 | 429 | [in] const DXGI_SHARED_RESOURCE *shared_resource, | 
 
 
 
 
 | 430 | [out] IDXGISurface **surface | 
 
 
 
 
 | 431 | ); | 
 
 
 
 
 | 432 | HRESULT QueryResourceResidency( | 
 
 
 
 
 | 433 | [in] IUnknown *const *resources, | 
 
 
 
 
 | 434 | [out] DXGI_RESIDENCY *residency, | 
 
 
 
 
 | 435 | [in] UINT resource_count | 
 
 
 
 
 | 436 | ); | 
 
 
 
 
 | 437 | HRESULT SetGPUThreadPriority( | 
 
 
 
 
 | 438 | [in] INT priority | 
 
 
 
 
 | 439 | ); | 
 
 
 
 
 | 440 | HRESULT GetGPUThreadPriority( | 
 
 
 
 
 | 441 | [out] INT *priority | 
 
 
 
 
 | 442 | ); | 
 
 
 
 
 | 443 | } | 
 
 
 
 
 | 444 |  | 
 
 
 
 
 | 445 | typedef enum DXGI_ADAPTER_FLAG { | 
 
 
 
 
 | 446 | DXGI_ADAPTER_FLAG_NONE         = 0, | 
 
 
 
 
 | 447 | DXGI_ADAPTER_FLAG_REMOTE       = 1, | 
 
 
 
 
 | 448 | DXGI_ADAPTER_FLAG_SOFTWARE     = 2, | 
 
 
 
 
 | 449 | DXGI_ADAPTER_FLAG_FORCE_DWORD  = 0xFFFFFFFF | 
 
 
 
 
 | 450 | } DXGI_ADAPTER_FLAG; | 
 
 
 
 
 | 451 |  | 
 
 
 
 
 | 452 | typedef struct DXGI_ADAPTER_DESC1 { | 
 
 
 
 
 | 453 | WCHAR  Description[128]; | 
 
 
 
 
 | 454 | UINT   VendorId; | 
 
 
 
 
 | 455 | UINT   DeviceId; | 
 
 
 
 
 | 456 | UINT   SubSysId; | 
 
 
 
 
 | 457 | UINT   Revision; | 
 
 
 
 
 | 458 | SIZE_T DedicatedVideoMemory; | 
 
 
 
 
 | 459 | SIZE_T DedicatedSystemMemory; | 
 
 
 
 
 | 460 | SIZE_T SharedSystemMemory; | 
 
 
 
 
 | 461 | LUID   AdapterLuid; | 
 
 
 
 
 | 462 | UINT   Flags; | 
 
 
 
 
 | 463 | } DXGI_ADAPTER_DESC1; | 
 
 
 
 
 | 464 |  | 
 
 
 
 
 | 465 | typedef struct DXGI_DISPLAY_COLOR_SPACE { | 
 
 
 
 
 | 466 | FLOAT PrimaryCoordinates[8][2]; | 
 
 
 
 
 | 467 | FLOAT WhitePoints[16][2]; | 
 
 
 
 
 | 468 | } DXGI_DISPLAY_COLOR_SPACE; | 
 
 
 
 
 | 469 |  | 
 
 
 
 
 | 470 | [ | 
 
 
 
 
 | 471 | object, | 
 
 
 
 
 | 472 | uuid(29038f61-3839-4626-91fd-086879011a05), | 
 
 
 
 
 | 473 | local, | 
 
 
 
 
 | 474 | pointer_default(unique) | 
 
 
 
 
 | 475 | ] | 
 
 
 
 
 | 476 | interface IDXGIAdapter1 : IDXGIAdapter | 
 
 
 
 
 | 477 | { | 
 
 
 
 
 | 478 | HRESULT GetDesc1([out] DXGI_ADAPTER_DESC1 *pDesc); | 
 
 
 
 
 | 479 | } | 
 
 
 
 
 | 480 |  | 
 
 
 
 
 | 481 | [ | 
 
 
 
 
 | 482 | object, | 
 
 
 
 
 | 483 | uuid(77db970f-6276-48ba-ba28-070143b4392c), | 
 
 
 
 
 | 484 | local, | 
 
 
 
 
 | 485 | pointer_default(unique) | 
 
 
 
 
 | 486 | ] | 
 
 
 
 
 | 487 | interface IDXGIDevice1 : IDXGIDevice | 
 
 
 
 
 | 488 | { | 
 
 
 
 
 | 489 | HRESULT SetMaximumFrameLatency([in] UINT MaxLatency); | 
 
 
 
 
 | 490 | HRESULT GetMaximumFrameLatency([out] UINT *pMaxLatency); | 
 
 
 
 
 | 491 | } | 
 
 
 
 
 | 492 |  | 
 
 
 
 
 | 493 | [ | 
 
 
 
 
 | 494 | object, | 
 
 
 
 
 | 495 | uuid(770aae78-f26f-4dba-a829-253c83d1b387), | 
 
 
 
 
 | 496 | local, | 
 
 
 
 
 | 497 | pointer_default(unique) | 
 
 
 
 
 | 498 | ] | 
 
 
 
 
 | 499 | interface IDXGIFactory1 : IDXGIFactory | 
 
 
 
 
 | 500 | { | 
 
 
 
 
 | 501 | HRESULT EnumAdapters1([in] UINT Adapter, [out] IDXGIAdapter1 **ppAdapter); | 
 
 
 
 
 | 502 | BOOL IsCurrent(); | 
 
 
 
 
 | 503 | } |