| 1 | /* | 
 
 
 
 
 | 2 | * Copyright 2014 Jacek Caban for CodeWeavers | 
 
 
 
 
 | 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 "dxgi.idl"; | 
 
 
 
 
 | 20 |  | 
 
 
 
 
 | 21 | const UINT DXGI_ENUM_MODES_STEREO = 0x4; | 
 
 
 
 
 | 22 | const UINT DXGI_ENUM_MODES_DISABLED_STEREO = 0x8; | 
 
 
 
 
 | 23 |  | 
 
 
 
 
 | 24 | const DWORD DXGI_SHARED_RESOURCE_READ = 0x80000000; | 
 
 
 
 
 | 25 | const DWORD DXGI_SHARED_RESOURCE_WRITE = 0x00000001; | 
 
 
 
 
 | 26 |  | 
 
 
 
 
 | 27 | typedef enum _DXGI_OFFER_RESOURCE_PRIORITY { | 
 
 
 
 
 | 28 | DXGI_OFFER_RESOURCE_PRIORITY_LOW = 1, | 
 
 
 
 
 | 29 | DXGI_OFFER_RESOURCE_PRIORITY_NORMAL, | 
 
 
 
 
 | 30 | DXGI_OFFER_RESOURCE_PRIORITY_HIGH | 
 
 
 
 
 | 31 | } DXGI_OFFER_RESOURCE_PRIORITY; | 
 
 
 
 
 | 32 |  | 
 
 
 
 
 | 33 | typedef enum DXGI_ALPHA_MODE { | 
 
 
 
 
 | 34 | DXGI_ALPHA_MODE_UNSPECIFIED = 0, | 
 
 
 
 
 | 35 | DXGI_ALPHA_MODE_PREMULTIPLIED = 1, | 
 
 
 
 
 | 36 | DXGI_ALPHA_MODE_STRAIGHT = 2, | 
 
 
 
 
 | 37 | DXGI_ALPHA_MODE_IGNORE = 3, | 
 
 
 
 
 | 38 | DXGI_ALPHA_MODE_FORCE_DWORD = 0xffffffff | 
 
 
 
 
 | 39 | } DXGI_ALPHA_MODE; | 
 
 
 
 
 | 40 |  | 
 
 
 
 
 | 41 | typedef struct DXGI_OUTDUPL_MOVE_RECT | 
 
 
 
 
 | 42 | { | 
 
 
 
 
 | 43 | POINT SourcePoint; | 
 
 
 
 
 | 44 | RECT DestinationRect; | 
 
 
 
 
 | 45 | } DXGI_OUTDUPL_MOVE_RECT; | 
 
 
 
 
 | 46 |  | 
 
 
 
 
 | 47 | typedef struct DXGI_OUTDUPL_DESC | 
 
 
 
 
 | 48 | { | 
 
 
 
 
 | 49 | DXGI_MODE_DESC ModeDesc; | 
 
 
 
 
 | 50 | DXGI_MODE_ROTATION Rotation; | 
 
 
 
 
 | 51 | BOOL DesktopImageInSystemMemory; | 
 
 
 
 
 | 52 | } DXGI_OUTDUPL_DESC; | 
 
 
 
 
 | 53 |  | 
 
 
 
 
 | 54 | typedef struct DXGI_OUTDUPL_POINTER_POSITION | 
 
 
 
 
 | 55 | { | 
 
 
 
 
 | 56 | POINT Position; | 
 
 
 
 
 | 57 | BOOL Visible; | 
 
 
 
 
 | 58 | } DXGI_OUTDUPL_POINTER_POSITION; | 
 
 
 
 
 | 59 |  | 
 
 
 
 
 | 60 | typedef enum DXGI_OUTDUPL_POINTER_SHAPE_TYPE | 
 
 
 
 
 | 61 | { | 
 
 
 
 
 | 62 | DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MONOCHROME = 0x00000001, | 
 
 
 
 
 | 63 | DXGI_OUTDUPL_POINTER_SHAPE_TYPE_COLOR = 0x00000002, | 
 
 
 
 
 | 64 | DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MASKED_COLOR = 0x00000004 | 
 
 
 
 
 | 65 | } DXGI_OUTDUPL_POINTER_SHAPE_TYPE; | 
 
 
 
 
 | 66 |  | 
 
 
 
 
 | 67 | typedef struct DXGI_OUTDUPL_POINTER_SHAPE_INFO | 
 
 
 
 
 | 68 | { | 
 
 
 
 
 | 69 | UINT Type; | 
 
 
 
 
 | 70 | UINT Width; | 
 
 
 
 
 | 71 | UINT Height; | 
 
 
 
 
 | 72 | UINT Pitch; | 
 
 
 
 
 | 73 | POINT HotSpot; | 
 
 
 
 
 | 74 | } DXGI_OUTDUPL_POINTER_SHAPE_INFO; | 
 
 
 
 
 | 75 |  | 
 
 
 
 
 | 76 | typedef struct DXGI_OUTDUPL_FRAME_INFO | 
 
 
 
 
 | 77 | { | 
 
 
 
 
 | 78 | LARGE_INTEGER LastPresentTime; | 
 
 
 
 
 | 79 | LARGE_INTEGER LastMouseUpdateTime; | 
 
 
 
 
 | 80 | UINT AccumulatedFrames; | 
 
 
 
 
 | 81 | BOOL RectsCoalesced; | 
 
 
 
 
 | 82 | BOOL ProtectedContentMaskedOut; | 
 
 
 
 
 | 83 | DXGI_OUTDUPL_POINTER_POSITION PointerPosition; | 
 
 
 
 
 | 84 | UINT TotalMetadataBufferSize; | 
 
 
 
 
 | 85 | UINT PointerShapeBufferSize; | 
 
 
 
 
 | 86 | } DXGI_OUTDUPL_FRAME_INFO; | 
 
 
 
 
 | 87 |  | 
 
 
 
 
 | 88 | typedef struct DXGI_MODE_DESC1 | 
 
 
 
 
 | 89 | { | 
 
 
 
 
 | 90 | UINT Width; | 
 
 
 
 
 | 91 | UINT Height; | 
 
 
 
 
 | 92 | DXGI_RATIONAL RefreshRate; | 
 
 
 
 
 | 93 | DXGI_FORMAT Format; | 
 
 
 
 
 | 94 | DXGI_MODE_SCANLINE_ORDER ScanlineOrdering; | 
 
 
 
 
 | 95 | DXGI_MODE_SCALING Scaling; | 
 
 
 
 
 | 96 | BOOL Stereo; | 
 
 
 
 
 | 97 | } DXGI_MODE_DESC1; | 
 
 
 
 
 | 98 |  | 
 
 
 
 
 | 99 | [ | 
 
 
 
 
 | 100 | object, | 
 
 
 
 
 | 101 | uuid(191cfac3-a341-470d-b26e-a864f428319c), | 
 
 
 
 
 | 102 | local, | 
 
 
 
 
 | 103 | pointer_default(unique) | 
 
 
 
 
 | 104 | ] | 
 
 
 
 
 | 105 | interface IDXGIOutputDuplication : IDXGIObject | 
 
 
 
 
 | 106 | { | 
 
 
 
 
 | 107 | void GetDesc( | 
 
 
 
 
 | 108 | [out] DXGI_OUTDUPL_DESC *desc | 
 
 
 
 
 | 109 | ); | 
 
 
 
 
 | 110 |  | 
 
 
 
 
 | 111 | HRESULT AcquireNextFrame( | 
 
 
 
 
 | 112 | [in] UINT timeout_in_milliseconds, | 
 
 
 
 
 | 113 | [out] DXGI_OUTDUPL_FRAME_INFO *frame_info, | 
 
 
 
 
 | 114 | [out] IDXGIResource **desktop_resource | 
 
 
 
 
 | 115 | ); | 
 
 
 
 
 | 116 |  | 
 
 
 
 
 | 117 | HRESULT GetFrameDirtyRects( | 
 
 
 
 
 | 118 | [in] UINT dirty_rects_buffer_size, | 
 
 
 
 
 | 119 | [out] RECT *dirty_rects_buffer, | 
 
 
 
 
 | 120 | [out] UINT *dirty_rects_buffer_size_required | 
 
 
 
 
 | 121 | ); | 
 
 
 
 
 | 122 |  | 
 
 
 
 
 | 123 | HRESULT GetFrameMoveRects( | 
 
 
 
 
 | 124 | [in] UINT move_rects_buffer_size, | 
 
 
 
 
 | 125 | [out] DXGI_OUTDUPL_MOVE_RECT *move_rect_buffer, | 
 
 
 
 
 | 126 | [out] UINT *move_rects_buffer_size_required | 
 
 
 
 
 | 127 | ); | 
 
 
 
 
 | 128 |  | 
 
 
 
 
 | 129 | HRESULT GetFramePointerShape( | 
 
 
 
 
 | 130 | [in] UINT pointer_shape_buffer_size, | 
 
 
 
 
 | 131 | [out] void *pointer_shape_buffer, | 
 
 
 
 
 | 132 | [out] UINT *pointer_shape_buffer_size_required, | 
 
 
 
 
 | 133 | [out] DXGI_OUTDUPL_POINTER_SHAPE_INFO *pointer_shape_info | 
 
 
 
 
 | 134 | ); | 
 
 
 
 
 | 135 |  | 
 
 
 
 
 | 136 | HRESULT MapDesktopSurface( | 
 
 
 
 
 | 137 | [out] DXGI_MAPPED_RECT *locked_rect | 
 
 
 
 
 | 138 | ); | 
 
 
 
 
 | 139 |  | 
 
 
 
 
 | 140 | HRESULT UnMapDesktopSurface(); | 
 
 
 
 
 | 141 |  | 
 
 
 
 
 | 142 | HRESULT ReleaseFrame(); | 
 
 
 
 
 | 143 | } | 
 
 
 
 
 | 144 |  | 
 
 
 
 
 | 145 | [ | 
 
 
 
 
 | 146 | object, | 
 
 
 
 
 | 147 | uuid(aba496dd-b617-4cb8-a866-bc44d7eb1fa2), | 
 
 
 
 
 | 148 | local, | 
 
 
 
 
 | 149 | pointer_default(unique) | 
 
 
 
 
 | 150 | ] | 
 
 
 
 
 | 151 | interface IDXGISurface2 : IDXGISurface1 | 
 
 
 
 
 | 152 | { | 
 
 
 
 
 | 153 | HRESULT GetResource( | 
 
 
 
 
 | 154 | [in] REFIID iid, | 
 
 
 
 
 | 155 | [out] void **parent_resource, | 
 
 
 
 
 | 156 | [out] UINT *subresource_idx | 
 
 
 
 
 | 157 | ); | 
 
 
 
 
 | 158 | } | 
 
 
 
 
 | 159 |  | 
 
 
 
 
 | 160 | [ | 
 
 
 
 
 | 161 | object, | 
 
 
 
 
 | 162 | uuid(30961379-4609-4a41-998e-54fe567ee0c1), | 
 
 
 
 
 | 163 | local, | 
 
 
 
 
 | 164 | pointer_default(unique) | 
 
 
 
 
 | 165 | ] | 
 
 
 
 
 | 166 | interface IDXGIResource1 : IDXGIResource | 
 
 
 
 
 | 167 | { | 
 
 
 
 
 | 168 | HRESULT CreateSubresourceSurface( | 
 
 
 
 
 | 169 | UINT index, | 
 
 
 
 
 | 170 | [out] IDXGISurface2 **surface | 
 
 
 
 
 | 171 | ); | 
 
 
 
 
 | 172 | HRESULT CreateSharedHandle( | 
 
 
 
 
 | 173 | [in] const SECURITY_ATTRIBUTES *attributes, | 
 
 
 
 
 | 174 | [in] DWORD access, | 
 
 
 
 
 | 175 | [in] const WCHAR *name, | 
 
 
 
 
 | 176 | [out] HANDLE *handle | 
 
 
 
 
 | 177 | ); | 
 
 
 
 
 | 178 | } | 
 
 
 
 
 | 179 |  | 
 
 
 
 
 | 180 | [ | 
 
 
 
 
 | 181 | object, | 
 
 
 
 
 | 182 | uuid(ea9dbf1a-c88e-4486-854a-98aa0138f30c), | 
 
 
 
 
 | 183 | local, | 
 
 
 
 
 | 184 | pointer_default(unique) | 
 
 
 
 
 | 185 | ] | 
 
 
 
 
 | 186 | interface IDXGIDisplayControl : IUnknown | 
 
 
 
 
 | 187 | { | 
 
 
 
 
 | 188 | BOOL IsStereoEnabled(); | 
 
 
 
 
 | 189 | void SetStereoEnabled(BOOL enabled); | 
 
 
 
 
 | 190 | } | 
 
 
 
 
 | 191 |  | 
 
 
 
 
 | 192 | [ | 
 
 
 
 
 | 193 | object, | 
 
 
 
 
 | 194 | uuid(05008617-fbfd-4051-a790-144884b4f6a9), | 
 
 
 
 
 | 195 | local, | 
 
 
 
 
 | 196 | pointer_default(unique) | 
 
 
 
 
 | 197 | ] | 
 
 
 
 
 | 198 | interface IDXGIDevice2 : IDXGIDevice1 | 
 
 
 
 
 | 199 | { | 
 
 
 
 
 | 200 | HRESULT OfferResources( | 
 
 
 
 
 | 201 | [in] UINT NumResources, | 
 
 
 
 
 | 202 | [in, size_is(NumResources)] IDXGIResource *const *ppResources, | 
 
 
 
 
 | 203 | [in] DXGI_OFFER_RESOURCE_PRIORITY Priority); | 
 
 
 
 
 | 204 |  | 
 
 
 
 
 | 205 | HRESULT ReclaimResources( | 
 
 
 
 
 | 206 | [in] UINT NumResources, | 
 
 
 
 
 | 207 | [in, size_is(NumResources)] IDXGIResource *const *ppResources, | 
 
 
 
 
 | 208 | [out, size_is(NumResources)] BOOL *pDiscarded); | 
 
 
 
 
 | 209 |  | 
 
 
 
 
 | 210 | HRESULT EnqueueSetEvent( | 
 
 
 
 
 | 211 | [in] HANDLE hEvent); | 
 
 
 
 
 | 212 | } | 
 
 
 
 
 | 213 |  | 
 
 
 
 
 | 214 | typedef enum DXGI_SCALING { | 
 
 
 
 
 | 215 | DXGI_SCALING_STRETCH = 0, | 
 
 
 
 
 | 216 | DXGI_SCALING_NONE = 1, | 
 
 
 
 
 | 217 | DXGI_SCALING_ASPECT_RATIO_STRETCH = 2, | 
 
 
 
 
 | 218 | } DXGI_SCALING; | 
 
 
 
 
 | 219 |  | 
 
 
 
 
 | 220 | typedef struct DXGI_SWAP_CHAIN_DESC1 { | 
 
 
 
 
 | 221 | UINT Width; | 
 
 
 
 
 | 222 | UINT Height; | 
 
 
 
 
 | 223 | DXGI_FORMAT Format; | 
 
 
 
 
 | 224 | BOOL Stereo; | 
 
 
 
 
 | 225 | DXGI_SAMPLE_DESC SampleDesc; | 
 
 
 
 
 | 226 | DXGI_USAGE BufferUsage; | 
 
 
 
 
 | 227 | UINT BufferCount; | 
 
 
 
 
 | 228 | DXGI_SCALING Scaling; | 
 
 
 
 
 | 229 | DXGI_SWAP_EFFECT SwapEffect; | 
 
 
 
 
 | 230 | DXGI_ALPHA_MODE AlphaMode; | 
 
 
 
 
 | 231 | UINT Flags; | 
 
 
 
 
 | 232 | } DXGI_SWAP_CHAIN_DESC1; | 
 
 
 
 
 | 233 |  | 
 
 
 
 
 | 234 | typedef struct DXGI_SWAP_CHAIN_FULLSCREEN_DESC { | 
 
 
 
 
 | 235 | DXGI_RATIONAL RefreshRate; | 
 
 
 
 
 | 236 | DXGI_MODE_SCANLINE_ORDER ScanlineOrdering; | 
 
 
 
 
 | 237 | DXGI_MODE_SCALING Scaling; | 
 
 
 
 
 | 238 | BOOL Windowed; | 
 
 
 
 
 | 239 | } DXGI_SWAP_CHAIN_FULLSCREEN_DESC; | 
 
 
 
 
 | 240 |  | 
 
 
 
 
 | 241 | typedef struct DXGI_PRESENT_PARAMETERS { | 
 
 
 
 
 | 242 | UINT DirtyRectsCount; | 
 
 
 
 
 | 243 | RECT *pDirtyRects; | 
 
 
 
 
 | 244 | RECT *pScrollRect; | 
 
 
 
 
 | 245 | POINT *pScrollOffset; | 
 
 
 
 
 | 246 | } DXGI_PRESENT_PARAMETERS; | 
 
 
 
 
 | 247 |  | 
 
 
 
 
 | 248 | [ | 
 
 
 
 
 | 249 | object, | 
 
 
 
 
 | 250 | uuid(790a45f7-0d42-4876-983a-0a55cfe6f4aa), | 
 
 
 
 
 | 251 | local, | 
 
 
 
 
 | 252 | pointer_default(unique) | 
 
 
 
 
 | 253 | ] | 
 
 
 
 
 | 254 | interface IDXGISwapChain1 : IDXGISwapChain | 
 
 
 
 
 | 255 | { | 
 
 
 
 
 | 256 | HRESULT GetDesc1( | 
 
 
 
 
 | 257 | [out] DXGI_SWAP_CHAIN_DESC1 *pDesc); | 
 
 
 
 
 | 258 |  | 
 
 
 
 
 | 259 | HRESULT GetFullscreenDesc( | 
 
 
 
 
 | 260 | [out] DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc); | 
 
 
 
 
 | 261 |  | 
 
 
 
 
 | 262 | HRESULT GetHwnd( | 
 
 
 
 
 | 263 | [out] HWND *pHwnd); | 
 
 
 
 
 | 264 |  | 
 
 
 
 
 | 265 | HRESULT GetCoreWindow( | 
 
 
 
 
 | 266 | [in] REFIID refiid, | 
 
 
 
 
 | 267 | [out] void **ppUnk); | 
 
 
 
 
 | 268 |  | 
 
 
 
 
 | 269 | HRESULT Present1( | 
 
 
 
 
 | 270 | [in] UINT SyncInterval, | 
 
 
 
 
 | 271 | [in] UINT PresentFlags, | 
 
 
 
 
 | 272 | [in] const DXGI_PRESENT_PARAMETERS *pPresentParameters); | 
 
 
 
 
 | 273 |  | 
 
 
 
 
 | 274 | BOOL IsTemporaryMonoSupported(); | 
 
 
 
 
 | 275 |  | 
 
 
 
 
 | 276 | HRESULT GetRestrictToOutput( | 
 
 
 
 
 | 277 | [out] IDXGIOutput **ppRestrictToOutput); | 
 
 
 
 
 | 278 |  | 
 
 
 
 
 | 279 | HRESULT SetBackgroundColor( | 
 
 
 
 
 | 280 | [in] const DXGI_RGBA *pColor); | 
 
 
 
 
 | 281 |  | 
 
 
 
 
 | 282 | HRESULT GetBackgroundColor( | 
 
 
 
 
 | 283 | [out] DXGI_RGBA *pColor); | 
 
 
 
 
 | 284 |  | 
 
 
 
 
 | 285 | HRESULT SetRotation( | 
 
 
 
 
 | 286 | [in] DXGI_MODE_ROTATION Rotation); | 
 
 
 
 
 | 287 |  | 
 
 
 
 
 | 288 | HRESULT GetRotation( | 
 
 
 
 
 | 289 | [out] DXGI_MODE_ROTATION *pRotation); | 
 
 
 
 
 | 290 | } | 
 
 
 
 
 | 291 |  | 
 
 
 
 
 | 292 | [ | 
 
 
 
 
 | 293 | object, | 
 
 
 
 
 | 294 | uuid(50c83a1c-e072-4c48-87b0-3630fa36a6d0), | 
 
 
 
 
 | 295 | local, | 
 
 
 
 
 | 296 | pointer_default(unique) | 
 
 
 
 
 | 297 | ] | 
 
 
 
 
 | 298 | interface IDXGIFactory2 : IDXGIFactory1 | 
 
 
 
 
 | 299 | { | 
 
 
 
 
 | 300 | BOOL IsWindowedStereoEnabled(); | 
 
 
 
 
 | 301 |  | 
 
 
 
 
 | 302 | HRESULT CreateSwapChainForHwnd( | 
 
 
 
 
 | 303 | [in]  IUnknown *pDevice, | 
 
 
 
 
 | 304 | [in]  HWND hWnd, | 
 
 
 
 
 | 305 | [in]  const DXGI_SWAP_CHAIN_DESC1 *pDesc, | 
 
 
 
 
 | 306 | [in]  const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc, | 
 
 
 
 
 | 307 | [in]  IDXGIOutput *pRestrictToOutput, | 
 
 
 
 
 | 308 | [out] IDXGISwapChain1 **ppSwapChain); | 
 
 
 
 
 | 309 |  | 
 
 
 
 
 | 310 | HRESULT CreateSwapChainForCoreWindow( | 
 
 
 
 
 | 311 | [in]  IUnknown *pDevice, | 
 
 
 
 
 | 312 | [in]  IUnknown *pWindow, | 
 
 
 
 
 | 313 | [in]  const DXGI_SWAP_CHAIN_DESC1 *pDesc, | 
 
 
 
 
 | 314 | [in]  IDXGIOutput *pRestrictToOutput, | 
 
 
 
 
 | 315 | [out] IDXGISwapChain1 **ppSwapChain); | 
 
 
 
 
 | 316 |  | 
 
 
 
 
 | 317 | HRESULT GetSharedResourceAdapterLuid( | 
 
 
 
 
 | 318 | [in]  HANDLE hResource, | 
 
 
 
 
 | 319 | [out] LUID *pLuid); | 
 
 
 
 
 | 320 |  | 
 
 
 
 
 | 321 | HRESULT RegisterStereoStatusWindow( | 
 
 
 
 
 | 322 | [in]  HWND WindowHandle, | 
 
 
 
 
 | 323 | [in]  UINT wMsg, | 
 
 
 
 
 | 324 | [out] DWORD *pdwCookie); | 
 
 
 
 
 | 325 |  | 
 
 
 
 
 | 326 | HRESULT RegisterStereoStatusEvent( | 
 
 
 
 
 | 327 | [in]  HANDLE hEvent, | 
 
 
 
 
 | 328 | [out] DWORD *pdwCookie); | 
 
 
 
 
 | 329 |  | 
 
 
 
 
 | 330 | void UnregisterStereoStatus( | 
 
 
 
 
 | 331 | [in]  DWORD dwCookie); | 
 
 
 
 
 | 332 |  | 
 
 
 
 
 | 333 | HRESULT RegisterOcclusionStatusWindow( | 
 
 
 
 
 | 334 | [in]  HWND WindowHandle, | 
 
 
 
 
 | 335 | [in]  UINT wMsg, | 
 
 
 
 
 | 336 | [out] DWORD *pdwCookie); | 
 
 
 
 
 | 337 |  | 
 
 
 
 
 | 338 | HRESULT RegisterOcclusionStatusEvent( | 
 
 
 
 
 | 339 | [in]  HANDLE hEvent, | 
 
 
 
 
 | 340 | [out] DWORD *pdwCookie); | 
 
 
 
 
 | 341 |  | 
 
 
 
 
 | 342 | void UnregisterOcclusionStatus( | 
 
 
 
 
 | 343 | [in]  DWORD dwCookie); | 
 
 
 
 
 | 344 |  | 
 
 
 
 
 | 345 | HRESULT CreateSwapChainForComposition( | 
 
 
 
 
 | 346 | [in]  IUnknown *pDevice, | 
 
 
 
 
 | 347 | [in]  const DXGI_SWAP_CHAIN_DESC1 *pDesc, | 
 
 
 
 
 | 348 | [in]  IDXGIOutput *pRestrictToOutput, | 
 
 
 
 
 | 349 | [out] IDXGISwapChain1 **ppSwapChain); | 
 
 
 
 
 | 350 | } | 
 
 
 
 
 | 351 |  | 
 
 
 
 
 | 352 | typedef enum DXGI_GRAPHICS_PREEMPTION_GRANULARITY { | 
 
 
 
 
 | 353 | DXGI_GRAPHICS_PREEMPTION_DMA_BUFFER_BOUNDARY, | 
 
 
 
 
 | 354 | DXGI_GRAPHICS_PREEMPTION_PRIMITIVE_BOUNDARY, | 
 
 
 
 
 | 355 | DXGI_GRAPHICS_PREEMPTION_TRIANGLE_BOUNDARY, | 
 
 
 
 
 | 356 | DXGI_GRAPHICS_PREEMPTION_PIXEL_BOUNDARY, | 
 
 
 
 
 | 357 | DXGI_GRAPHICS_PREEMPTION_INSTRUCTION_BOUNDARY | 
 
 
 
 
 | 358 | } DXGI_GRAPHICS_PREEMPTION_GRANULARITY; | 
 
 
 
 
 | 359 |  | 
 
 
 
 
 | 360 | typedef enum DXGI_COMPUTE_PREEMPTION_GRANULARITY { | 
 
 
 
 
 | 361 | DXGI_COMPUTE_PREEMPTION_DMA_BUFFER_BOUNDARY, | 
 
 
 
 
 | 362 | DXGI_COMPUTE_PREEMPTION_DISPATCH_BOUNDARY, | 
 
 
 
 
 | 363 | DXGI_COMPUTE_PREEMPTION_THREAD_GROUP_BOUNDARY, | 
 
 
 
 
 | 364 | DXGI_COMPUTE_PREEMPTION_THREAD_BOUNDARY, | 
 
 
 
 
 | 365 | DXGI_COMPUTE_PREEMPTION_INSTRUCTION_BOUNDARY | 
 
 
 
 
 | 366 | } DXGI_COMPUTE_PREEMPTION_GRANULARITY; | 
 
 
 
 
 | 367 |  | 
 
 
 
 
 | 368 | typedef struct DXGI_ADAPTER_DESC2 { | 
 
 
 
 
 | 369 | WCHAR Description[128]; | 
 
 
 
 
 | 370 | UINT VendorId; | 
 
 
 
 
 | 371 | UINT DeviceId; | 
 
 
 
 
 | 372 | UINT SubSysId; | 
 
 
 
 
 | 373 | UINT Revision; | 
 
 
 
 
 | 374 | SIZE_T DedicatedVideoMemory; | 
 
 
 
 
 | 375 | SIZE_T DedicatedSystemMemory; | 
 
 
 
 
 | 376 | SIZE_T SharedSystemMemory; | 
 
 
 
 
 | 377 | LUID AdapterLuid; | 
 
 
 
 
 | 378 | UINT Flags; | 
 
 
 
 
 | 379 | DXGI_GRAPHICS_PREEMPTION_GRANULARITY GraphicsPreemptionGranularity; | 
 
 
 
 
 | 380 | DXGI_COMPUTE_PREEMPTION_GRANULARITY ComputePreemptionGranularity; | 
 
 
 
 
 | 381 | } DXGI_ADAPTER_DESC2; | 
 
 
 
 
 | 382 |  | 
 
 
 
 
 | 383 | [ | 
 
 
 
 
 | 384 | object, | 
 
 
 
 
 | 385 | uuid(0aa1ae0a-fa0e-4b84-8644-e05ff8e5acb5), | 
 
 
 
 
 | 386 | local, | 
 
 
 
 
 | 387 | pointer_default(unique) | 
 
 
 
 
 | 388 | ] | 
 
 
 
 
 | 389 | interface IDXGIAdapter2 : IDXGIAdapter1 | 
 
 
 
 
 | 390 | { | 
 
 
 
 
 | 391 | HRESULT GetDesc2([out] DXGI_ADAPTER_DESC2 *pDesc); | 
 
 
 
 
 | 392 | } | 
 
 
 
 
 | 393 |  | 
 
 
 
 
 | 394 | [ | 
 
 
 
 
 | 395 | object, | 
 
 
 
 
 | 396 | uuid(00cddea8-939b-4b83-a340-a685226666cc), | 
 
 
 
 
 | 397 | local, | 
 
 
 
 
 | 398 | pointer_default(unique) | 
 
 
 
 
 | 399 | ] | 
 
 
 
 
 | 400 | interface IDXGIOutput1 : IDXGIOutput | 
 
 
 
 
 | 401 | { | 
 
 
 
 
 | 402 | HRESULT GetDisplayModeList1( | 
 
 
 
 
 | 403 | [in] DXGI_FORMAT enum_format, | 
 
 
 
 
 | 404 | [in] UINT flags, | 
 
 
 
 
 | 405 | [in, out] UINT *num_modes, | 
 
 
 
 
 | 406 | [out] DXGI_MODE_DESC1 *desc | 
 
 
 
 
 | 407 | ); | 
 
 
 
 
 | 408 |  | 
 
 
 
 
 | 409 | HRESULT FindClosestMatchingMode1( | 
 
 
 
 
 | 410 | [in] const DXGI_MODE_DESC1 *mode_to_match, | 
 
 
 
 
 | 411 | [out] DXGI_MODE_DESC1 *closest_match, | 
 
 
 
 
 | 412 | [in] IUnknown *concerned_device | 
 
 
 
 
 | 413 | ); | 
 
 
 
 
 | 414 |  | 
 
 
 
 
 | 415 | HRESULT GetDisplaySurfaceData1( | 
 
 
 
 
 | 416 | [in] IDXGIResource *destination | 
 
 
 
 
 | 417 | ); | 
 
 
 
 
 | 418 |  | 
 
 
 
 
 | 419 | HRESULT DuplicateOutput( | 
 
 
 
 
 | 420 | [in] IUnknown *device, | 
 
 
 
 
 | 421 | [out] IDXGIOutputDuplication **output_duplication | 
 
 
 
 
 | 422 | ); | 
 
 
 
 
 | 423 | } |