dxgi1_2.h 88 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204
  1. /*** Autogenerated by WIDL 7.7 from include/dxgi1_2.idl - Do not edit ***/
  2. #ifdef _WIN32
  3. #ifndef __REQUIRED_RPCNDR_H_VERSION__
  4. #define __REQUIRED_RPCNDR_H_VERSION__ 475
  5. #endif
  6. #include <rpc.h>
  7. #include <rpcndr.h>
  8. #endif
  9. #ifndef COM_NO_WINDOWS_H
  10. #include <windows.h>
  11. #include <ole2.h>
  12. #endif
  13. #ifndef __dxgi1_2_h__
  14. #define __dxgi1_2_h__
  15. /* Forward declarations */
  16. #ifndef __IDXGIOutputDuplication_FWD_DEFINED__
  17. #define __IDXGIOutputDuplication_FWD_DEFINED__
  18. typedef interface IDXGIOutputDuplication IDXGIOutputDuplication;
  19. #ifdef __cplusplus
  20. interface IDXGIOutputDuplication;
  21. #endif /* __cplusplus */
  22. #endif
  23. #ifndef __IDXGISurface2_FWD_DEFINED__
  24. #define __IDXGISurface2_FWD_DEFINED__
  25. typedef interface IDXGISurface2 IDXGISurface2;
  26. #ifdef __cplusplus
  27. interface IDXGISurface2;
  28. #endif /* __cplusplus */
  29. #endif
  30. #ifndef __IDXGIResource1_FWD_DEFINED__
  31. #define __IDXGIResource1_FWD_DEFINED__
  32. typedef interface IDXGIResource1 IDXGIResource1;
  33. #ifdef __cplusplus
  34. interface IDXGIResource1;
  35. #endif /* __cplusplus */
  36. #endif
  37. #ifndef __IDXGIDisplayControl_FWD_DEFINED__
  38. #define __IDXGIDisplayControl_FWD_DEFINED__
  39. typedef interface IDXGIDisplayControl IDXGIDisplayControl;
  40. #ifdef __cplusplus
  41. interface IDXGIDisplayControl;
  42. #endif /* __cplusplus */
  43. #endif
  44. #ifndef __IDXGIDevice2_FWD_DEFINED__
  45. #define __IDXGIDevice2_FWD_DEFINED__
  46. typedef interface IDXGIDevice2 IDXGIDevice2;
  47. #ifdef __cplusplus
  48. interface IDXGIDevice2;
  49. #endif /* __cplusplus */
  50. #endif
  51. #ifndef __IDXGISwapChain1_FWD_DEFINED__
  52. #define __IDXGISwapChain1_FWD_DEFINED__
  53. typedef interface IDXGISwapChain1 IDXGISwapChain1;
  54. #ifdef __cplusplus
  55. interface IDXGISwapChain1;
  56. #endif /* __cplusplus */
  57. #endif
  58. #ifndef __IDXGIFactory2_FWD_DEFINED__
  59. #define __IDXGIFactory2_FWD_DEFINED__
  60. typedef interface IDXGIFactory2 IDXGIFactory2;
  61. #ifdef __cplusplus
  62. interface IDXGIFactory2;
  63. #endif /* __cplusplus */
  64. #endif
  65. #ifndef __IDXGIAdapter2_FWD_DEFINED__
  66. #define __IDXGIAdapter2_FWD_DEFINED__
  67. typedef interface IDXGIAdapter2 IDXGIAdapter2;
  68. #ifdef __cplusplus
  69. interface IDXGIAdapter2;
  70. #endif /* __cplusplus */
  71. #endif
  72. #ifndef __IDXGIOutput1_FWD_DEFINED__
  73. #define __IDXGIOutput1_FWD_DEFINED__
  74. typedef interface IDXGIOutput1 IDXGIOutput1;
  75. #ifdef __cplusplus
  76. interface IDXGIOutput1;
  77. #endif /* __cplusplus */
  78. #endif
  79. /* Headers for imported files */
  80. #include <dxgi.h>
  81. #ifdef __cplusplus
  82. extern "C" {
  83. #endif
  84. #define DXGI_ENUM_MODES_STEREO (0x4)
  85. #define DXGI_ENUM_MODES_DISABLED_STEREO (0x8)
  86. #define DXGI_SHARED_RESOURCE_READ (0x80000000)
  87. #define DXGI_SHARED_RESOURCE_WRITE (0x1)
  88. typedef enum _DXGI_OFFER_RESOURCE_PRIORITY {
  89. DXGI_OFFER_RESOURCE_PRIORITY_LOW = 1,
  90. DXGI_OFFER_RESOURCE_PRIORITY_NORMAL = 2,
  91. DXGI_OFFER_RESOURCE_PRIORITY_HIGH = 3
  92. } DXGI_OFFER_RESOURCE_PRIORITY;
  93. typedef enum DXGI_ALPHA_MODE {
  94. DXGI_ALPHA_MODE_UNSPECIFIED = 0,
  95. DXGI_ALPHA_MODE_PREMULTIPLIED = 1,
  96. DXGI_ALPHA_MODE_STRAIGHT = 2,
  97. DXGI_ALPHA_MODE_IGNORE = 3,
  98. DXGI_ALPHA_MODE_FORCE_DWORD = 0xffffffff
  99. } DXGI_ALPHA_MODE;
  100. typedef struct DXGI_OUTDUPL_MOVE_RECT {
  101. POINT SourcePoint;
  102. RECT DestinationRect;
  103. } DXGI_OUTDUPL_MOVE_RECT;
  104. typedef struct DXGI_OUTDUPL_DESC {
  105. DXGI_MODE_DESC ModeDesc;
  106. DXGI_MODE_ROTATION Rotation;
  107. WINBOOL DesktopImageInSystemMemory;
  108. } DXGI_OUTDUPL_DESC;
  109. typedef struct DXGI_OUTDUPL_POINTER_POSITION {
  110. POINT Position;
  111. WINBOOL Visible;
  112. } DXGI_OUTDUPL_POINTER_POSITION;
  113. typedef enum DXGI_OUTDUPL_POINTER_SHAPE_TYPE {
  114. DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MONOCHROME = 0x1,
  115. DXGI_OUTDUPL_POINTER_SHAPE_TYPE_COLOR = 0x2,
  116. DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MASKED_COLOR = 0x4
  117. } DXGI_OUTDUPL_POINTER_SHAPE_TYPE;
  118. typedef struct DXGI_OUTDUPL_POINTER_SHAPE_INFO {
  119. UINT Type;
  120. UINT Width;
  121. UINT Height;
  122. UINT Pitch;
  123. POINT HotSpot;
  124. } DXGI_OUTDUPL_POINTER_SHAPE_INFO;
  125. typedef struct DXGI_OUTDUPL_FRAME_INFO {
  126. LARGE_INTEGER LastPresentTime;
  127. LARGE_INTEGER LastMouseUpdateTime;
  128. UINT AccumulatedFrames;
  129. WINBOOL RectsCoalesced;
  130. WINBOOL ProtectedContentMaskedOut;
  131. DXGI_OUTDUPL_POINTER_POSITION PointerPosition;
  132. UINT TotalMetadataBufferSize;
  133. UINT PointerShapeBufferSize;
  134. } DXGI_OUTDUPL_FRAME_INFO;
  135. typedef struct DXGI_MODE_DESC1 {
  136. UINT Width;
  137. UINT Height;
  138. DXGI_RATIONAL RefreshRate;
  139. DXGI_FORMAT Format;
  140. DXGI_MODE_SCANLINE_ORDER ScanlineOrdering;
  141. DXGI_MODE_SCALING Scaling;
  142. WINBOOL Stereo;
  143. } DXGI_MODE_DESC1;
  144. /*****************************************************************************
  145. * IDXGIOutputDuplication interface
  146. */
  147. #ifndef __IDXGIOutputDuplication_INTERFACE_DEFINED__
  148. #define __IDXGIOutputDuplication_INTERFACE_DEFINED__
  149. DEFINE_GUID(IID_IDXGIOutputDuplication, 0x191cfac3, 0xa341, 0x470d, 0xb2,0x6e, 0xa8,0x64,0xf4,0x28,0x31,0x9c);
  150. #if defined(__cplusplus) && !defined(CINTERFACE)
  151. MIDL_INTERFACE("191cfac3-a341-470d-b26e-a864f428319c")
  152. IDXGIOutputDuplication : public IDXGIObject
  153. {
  154. virtual void STDMETHODCALLTYPE GetDesc(
  155. DXGI_OUTDUPL_DESC *desc) = 0;
  156. virtual HRESULT STDMETHODCALLTYPE AcquireNextFrame(
  157. UINT timeout_in_milliseconds,
  158. DXGI_OUTDUPL_FRAME_INFO *frame_info,
  159. IDXGIResource **desktop_resource) = 0;
  160. virtual HRESULT STDMETHODCALLTYPE GetFrameDirtyRects(
  161. UINT dirty_rects_buffer_size,
  162. RECT *dirty_rects_buffer,
  163. UINT *dirty_rects_buffer_size_required) = 0;
  164. virtual HRESULT STDMETHODCALLTYPE GetFrameMoveRects(
  165. UINT move_rects_buffer_size,
  166. DXGI_OUTDUPL_MOVE_RECT *move_rect_buffer,
  167. UINT *move_rects_buffer_size_required) = 0;
  168. virtual HRESULT STDMETHODCALLTYPE GetFramePointerShape(
  169. UINT pointer_shape_buffer_size,
  170. void *pointer_shape_buffer,
  171. UINT *pointer_shape_buffer_size_required,
  172. DXGI_OUTDUPL_POINTER_SHAPE_INFO *pointer_shape_info) = 0;
  173. virtual HRESULT STDMETHODCALLTYPE MapDesktopSurface(
  174. DXGI_MAPPED_RECT *locked_rect) = 0;
  175. virtual HRESULT STDMETHODCALLTYPE UnMapDesktopSurface(
  176. ) = 0;
  177. virtual HRESULT STDMETHODCALLTYPE ReleaseFrame(
  178. ) = 0;
  179. };
  180. #ifdef __CRT_UUID_DECL
  181. __CRT_UUID_DECL(IDXGIOutputDuplication, 0x191cfac3, 0xa341, 0x470d, 0xb2,0x6e, 0xa8,0x64,0xf4,0x28,0x31,0x9c)
  182. #endif
  183. #else
  184. typedef struct IDXGIOutputDuplicationVtbl {
  185. BEGIN_INTERFACE
  186. /*** IUnknown methods ***/
  187. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  188. IDXGIOutputDuplication *This,
  189. REFIID riid,
  190. void **ppvObject);
  191. ULONG (STDMETHODCALLTYPE *AddRef)(
  192. IDXGIOutputDuplication *This);
  193. ULONG (STDMETHODCALLTYPE *Release)(
  194. IDXGIOutputDuplication *This);
  195. /*** IDXGIObject methods ***/
  196. HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  197. IDXGIOutputDuplication *This,
  198. REFGUID guid,
  199. UINT data_size,
  200. const void *data);
  201. HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  202. IDXGIOutputDuplication *This,
  203. REFGUID guid,
  204. const IUnknown *object);
  205. HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  206. IDXGIOutputDuplication *This,
  207. REFGUID guid,
  208. UINT *data_size,
  209. void *data);
  210. HRESULT (STDMETHODCALLTYPE *GetParent)(
  211. IDXGIOutputDuplication *This,
  212. REFIID riid,
  213. void **parent);
  214. /*** IDXGIOutputDuplication methods ***/
  215. void (STDMETHODCALLTYPE *GetDesc)(
  216. IDXGIOutputDuplication *This,
  217. DXGI_OUTDUPL_DESC *desc);
  218. HRESULT (STDMETHODCALLTYPE *AcquireNextFrame)(
  219. IDXGIOutputDuplication *This,
  220. UINT timeout_in_milliseconds,
  221. DXGI_OUTDUPL_FRAME_INFO *frame_info,
  222. IDXGIResource **desktop_resource);
  223. HRESULT (STDMETHODCALLTYPE *GetFrameDirtyRects)(
  224. IDXGIOutputDuplication *This,
  225. UINT dirty_rects_buffer_size,
  226. RECT *dirty_rects_buffer,
  227. UINT *dirty_rects_buffer_size_required);
  228. HRESULT (STDMETHODCALLTYPE *GetFrameMoveRects)(
  229. IDXGIOutputDuplication *This,
  230. UINT move_rects_buffer_size,
  231. DXGI_OUTDUPL_MOVE_RECT *move_rect_buffer,
  232. UINT *move_rects_buffer_size_required);
  233. HRESULT (STDMETHODCALLTYPE *GetFramePointerShape)(
  234. IDXGIOutputDuplication *This,
  235. UINT pointer_shape_buffer_size,
  236. void *pointer_shape_buffer,
  237. UINT *pointer_shape_buffer_size_required,
  238. DXGI_OUTDUPL_POINTER_SHAPE_INFO *pointer_shape_info);
  239. HRESULT (STDMETHODCALLTYPE *MapDesktopSurface)(
  240. IDXGIOutputDuplication *This,
  241. DXGI_MAPPED_RECT *locked_rect);
  242. HRESULT (STDMETHODCALLTYPE *UnMapDesktopSurface)(
  243. IDXGIOutputDuplication *This);
  244. HRESULT (STDMETHODCALLTYPE *ReleaseFrame)(
  245. IDXGIOutputDuplication *This);
  246. END_INTERFACE
  247. } IDXGIOutputDuplicationVtbl;
  248. interface IDXGIOutputDuplication {
  249. CONST_VTBL IDXGIOutputDuplicationVtbl* lpVtbl;
  250. };
  251. #ifdef COBJMACROS
  252. #ifndef WIDL_C_INLINE_WRAPPERS
  253. /*** IUnknown methods ***/
  254. #define IDXGIOutputDuplication_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  255. #define IDXGIOutputDuplication_AddRef(This) (This)->lpVtbl->AddRef(This)
  256. #define IDXGIOutputDuplication_Release(This) (This)->lpVtbl->Release(This)
  257. /*** IDXGIObject methods ***/
  258. #define IDXGIOutputDuplication_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  259. #define IDXGIOutputDuplication_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
  260. #define IDXGIOutputDuplication_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  261. #define IDXGIOutputDuplication_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
  262. /*** IDXGIOutputDuplication methods ***/
  263. #define IDXGIOutputDuplication_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
  264. #define IDXGIOutputDuplication_AcquireNextFrame(This,timeout_in_milliseconds,frame_info,desktop_resource) (This)->lpVtbl->AcquireNextFrame(This,timeout_in_milliseconds,frame_info,desktop_resource)
  265. #define IDXGIOutputDuplication_GetFrameDirtyRects(This,dirty_rects_buffer_size,dirty_rects_buffer,dirty_rects_buffer_size_required) (This)->lpVtbl->GetFrameDirtyRects(This,dirty_rects_buffer_size,dirty_rects_buffer,dirty_rects_buffer_size_required)
  266. #define IDXGIOutputDuplication_GetFrameMoveRects(This,move_rects_buffer_size,move_rect_buffer,move_rects_buffer_size_required) (This)->lpVtbl->GetFrameMoveRects(This,move_rects_buffer_size,move_rect_buffer,move_rects_buffer_size_required)
  267. #define IDXGIOutputDuplication_GetFramePointerShape(This,pointer_shape_buffer_size,pointer_shape_buffer,pointer_shape_buffer_size_required,pointer_shape_info) (This)->lpVtbl->GetFramePointerShape(This,pointer_shape_buffer_size,pointer_shape_buffer,pointer_shape_buffer_size_required,pointer_shape_info)
  268. #define IDXGIOutputDuplication_MapDesktopSurface(This,locked_rect) (This)->lpVtbl->MapDesktopSurface(This,locked_rect)
  269. #define IDXGIOutputDuplication_UnMapDesktopSurface(This) (This)->lpVtbl->UnMapDesktopSurface(This)
  270. #define IDXGIOutputDuplication_ReleaseFrame(This) (This)->lpVtbl->ReleaseFrame(This)
  271. #else
  272. /*** IUnknown methods ***/
  273. static FORCEINLINE HRESULT IDXGIOutputDuplication_QueryInterface(IDXGIOutputDuplication* This,REFIID riid,void **ppvObject) {
  274. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  275. }
  276. static FORCEINLINE ULONG IDXGIOutputDuplication_AddRef(IDXGIOutputDuplication* This) {
  277. return This->lpVtbl->AddRef(This);
  278. }
  279. static FORCEINLINE ULONG IDXGIOutputDuplication_Release(IDXGIOutputDuplication* This) {
  280. return This->lpVtbl->Release(This);
  281. }
  282. /*** IDXGIObject methods ***/
  283. static FORCEINLINE HRESULT IDXGIOutputDuplication_SetPrivateData(IDXGIOutputDuplication* This,REFGUID guid,UINT data_size,const void *data) {
  284. return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  285. }
  286. static FORCEINLINE HRESULT IDXGIOutputDuplication_SetPrivateDataInterface(IDXGIOutputDuplication* This,REFGUID guid,const IUnknown *object) {
  287. return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
  288. }
  289. static FORCEINLINE HRESULT IDXGIOutputDuplication_GetPrivateData(IDXGIOutputDuplication* This,REFGUID guid,UINT *data_size,void *data) {
  290. return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  291. }
  292. static FORCEINLINE HRESULT IDXGIOutputDuplication_GetParent(IDXGIOutputDuplication* This,REFIID riid,void **parent) {
  293. return This->lpVtbl->GetParent(This,riid,parent);
  294. }
  295. /*** IDXGIOutputDuplication methods ***/
  296. static FORCEINLINE void IDXGIOutputDuplication_GetDesc(IDXGIOutputDuplication* This,DXGI_OUTDUPL_DESC *desc) {
  297. This->lpVtbl->GetDesc(This,desc);
  298. }
  299. static FORCEINLINE HRESULT IDXGIOutputDuplication_AcquireNextFrame(IDXGIOutputDuplication* This,UINT timeout_in_milliseconds,DXGI_OUTDUPL_FRAME_INFO *frame_info,IDXGIResource **desktop_resource) {
  300. return This->lpVtbl->AcquireNextFrame(This,timeout_in_milliseconds,frame_info,desktop_resource);
  301. }
  302. static FORCEINLINE HRESULT IDXGIOutputDuplication_GetFrameDirtyRects(IDXGIOutputDuplication* This,UINT dirty_rects_buffer_size,RECT *dirty_rects_buffer,UINT *dirty_rects_buffer_size_required) {
  303. return This->lpVtbl->GetFrameDirtyRects(This,dirty_rects_buffer_size,dirty_rects_buffer,dirty_rects_buffer_size_required);
  304. }
  305. static FORCEINLINE HRESULT IDXGIOutputDuplication_GetFrameMoveRects(IDXGIOutputDuplication* This,UINT move_rects_buffer_size,DXGI_OUTDUPL_MOVE_RECT *move_rect_buffer,UINT *move_rects_buffer_size_required) {
  306. return This->lpVtbl->GetFrameMoveRects(This,move_rects_buffer_size,move_rect_buffer,move_rects_buffer_size_required);
  307. }
  308. static FORCEINLINE HRESULT IDXGIOutputDuplication_GetFramePointerShape(IDXGIOutputDuplication* This,UINT pointer_shape_buffer_size,void *pointer_shape_buffer,UINT *pointer_shape_buffer_size_required,DXGI_OUTDUPL_POINTER_SHAPE_INFO *pointer_shape_info) {
  309. return This->lpVtbl->GetFramePointerShape(This,pointer_shape_buffer_size,pointer_shape_buffer,pointer_shape_buffer_size_required,pointer_shape_info);
  310. }
  311. static FORCEINLINE HRESULT IDXGIOutputDuplication_MapDesktopSurface(IDXGIOutputDuplication* This,DXGI_MAPPED_RECT *locked_rect) {
  312. return This->lpVtbl->MapDesktopSurface(This,locked_rect);
  313. }
  314. static FORCEINLINE HRESULT IDXGIOutputDuplication_UnMapDesktopSurface(IDXGIOutputDuplication* This) {
  315. return This->lpVtbl->UnMapDesktopSurface(This);
  316. }
  317. static FORCEINLINE HRESULT IDXGIOutputDuplication_ReleaseFrame(IDXGIOutputDuplication* This) {
  318. return This->lpVtbl->ReleaseFrame(This);
  319. }
  320. #endif
  321. #endif
  322. #endif
  323. #endif /* __IDXGIOutputDuplication_INTERFACE_DEFINED__ */
  324. /*****************************************************************************
  325. * IDXGISurface2 interface
  326. */
  327. #ifndef __IDXGISurface2_INTERFACE_DEFINED__
  328. #define __IDXGISurface2_INTERFACE_DEFINED__
  329. DEFINE_GUID(IID_IDXGISurface2, 0xaba496dd, 0xb617, 0x4cb8, 0xa8,0x66, 0xbc,0x44,0xd7,0xeb,0x1f,0xa2);
  330. #if defined(__cplusplus) && !defined(CINTERFACE)
  331. MIDL_INTERFACE("aba496dd-b617-4cb8-a866-bc44d7eb1fa2")
  332. IDXGISurface2 : public IDXGISurface1
  333. {
  334. virtual HRESULT STDMETHODCALLTYPE GetResource(
  335. REFIID iid,
  336. void **parent_resource,
  337. UINT *subresource_idx) = 0;
  338. };
  339. #ifdef __CRT_UUID_DECL
  340. __CRT_UUID_DECL(IDXGISurface2, 0xaba496dd, 0xb617, 0x4cb8, 0xa8,0x66, 0xbc,0x44,0xd7,0xeb,0x1f,0xa2)
  341. #endif
  342. #else
  343. typedef struct IDXGISurface2Vtbl {
  344. BEGIN_INTERFACE
  345. /*** IUnknown methods ***/
  346. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  347. IDXGISurface2 *This,
  348. REFIID riid,
  349. void **ppvObject);
  350. ULONG (STDMETHODCALLTYPE *AddRef)(
  351. IDXGISurface2 *This);
  352. ULONG (STDMETHODCALLTYPE *Release)(
  353. IDXGISurface2 *This);
  354. /*** IDXGIObject methods ***/
  355. HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  356. IDXGISurface2 *This,
  357. REFGUID guid,
  358. UINT data_size,
  359. const void *data);
  360. HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  361. IDXGISurface2 *This,
  362. REFGUID guid,
  363. const IUnknown *object);
  364. HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  365. IDXGISurface2 *This,
  366. REFGUID guid,
  367. UINT *data_size,
  368. void *data);
  369. HRESULT (STDMETHODCALLTYPE *GetParent)(
  370. IDXGISurface2 *This,
  371. REFIID riid,
  372. void **parent);
  373. /*** IDXGIDeviceSubObject methods ***/
  374. HRESULT (STDMETHODCALLTYPE *GetDevice)(
  375. IDXGISurface2 *This,
  376. REFIID riid,
  377. void **device);
  378. /*** IDXGISurface methods ***/
  379. HRESULT (STDMETHODCALLTYPE *GetDesc)(
  380. IDXGISurface2 *This,
  381. DXGI_SURFACE_DESC *desc);
  382. HRESULT (STDMETHODCALLTYPE *Map)(
  383. IDXGISurface2 *This,
  384. DXGI_MAPPED_RECT *mapped_rect,
  385. UINT flags);
  386. HRESULT (STDMETHODCALLTYPE *Unmap)(
  387. IDXGISurface2 *This);
  388. /*** IDXGISurface1 methods ***/
  389. HRESULT (STDMETHODCALLTYPE *GetDC)(
  390. IDXGISurface2 *This,
  391. WINBOOL discard,
  392. HDC *hdc);
  393. HRESULT (STDMETHODCALLTYPE *ReleaseDC)(
  394. IDXGISurface2 *This,
  395. RECT *dirty_rect);
  396. /*** IDXGISurface2 methods ***/
  397. HRESULT (STDMETHODCALLTYPE *GetResource)(
  398. IDXGISurface2 *This,
  399. REFIID iid,
  400. void **parent_resource,
  401. UINT *subresource_idx);
  402. END_INTERFACE
  403. } IDXGISurface2Vtbl;
  404. interface IDXGISurface2 {
  405. CONST_VTBL IDXGISurface2Vtbl* lpVtbl;
  406. };
  407. #ifdef COBJMACROS
  408. #ifndef WIDL_C_INLINE_WRAPPERS
  409. /*** IUnknown methods ***/
  410. #define IDXGISurface2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  411. #define IDXGISurface2_AddRef(This) (This)->lpVtbl->AddRef(This)
  412. #define IDXGISurface2_Release(This) (This)->lpVtbl->Release(This)
  413. /*** IDXGIObject methods ***/
  414. #define IDXGISurface2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  415. #define IDXGISurface2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
  416. #define IDXGISurface2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  417. #define IDXGISurface2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
  418. /*** IDXGIDeviceSubObject methods ***/
  419. #define IDXGISurface2_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
  420. /*** IDXGISurface methods ***/
  421. #define IDXGISurface2_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
  422. #define IDXGISurface2_Map(This,mapped_rect,flags) (This)->lpVtbl->Map(This,mapped_rect,flags)
  423. #define IDXGISurface2_Unmap(This) (This)->lpVtbl->Unmap(This)
  424. /*** IDXGISurface1 methods ***/
  425. #define IDXGISurface2_GetDC(This,discard,hdc) (This)->lpVtbl->GetDC(This,discard,hdc)
  426. #define IDXGISurface2_ReleaseDC(This,dirty_rect) (This)->lpVtbl->ReleaseDC(This,dirty_rect)
  427. /*** IDXGISurface2 methods ***/
  428. #define IDXGISurface2_GetResource(This,iid,parent_resource,subresource_idx) (This)->lpVtbl->GetResource(This,iid,parent_resource,subresource_idx)
  429. #else
  430. /*** IUnknown methods ***/
  431. static FORCEINLINE HRESULT IDXGISurface2_QueryInterface(IDXGISurface2* This,REFIID riid,void **ppvObject) {
  432. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  433. }
  434. static FORCEINLINE ULONG IDXGISurface2_AddRef(IDXGISurface2* This) {
  435. return This->lpVtbl->AddRef(This);
  436. }
  437. static FORCEINLINE ULONG IDXGISurface2_Release(IDXGISurface2* This) {
  438. return This->lpVtbl->Release(This);
  439. }
  440. /*** IDXGIObject methods ***/
  441. static FORCEINLINE HRESULT IDXGISurface2_SetPrivateData(IDXGISurface2* This,REFGUID guid,UINT data_size,const void *data) {
  442. return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  443. }
  444. static FORCEINLINE HRESULT IDXGISurface2_SetPrivateDataInterface(IDXGISurface2* This,REFGUID guid,const IUnknown *object) {
  445. return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
  446. }
  447. static FORCEINLINE HRESULT IDXGISurface2_GetPrivateData(IDXGISurface2* This,REFGUID guid,UINT *data_size,void *data) {
  448. return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  449. }
  450. static FORCEINLINE HRESULT IDXGISurface2_GetParent(IDXGISurface2* This,REFIID riid,void **parent) {
  451. return This->lpVtbl->GetParent(This,riid,parent);
  452. }
  453. /*** IDXGIDeviceSubObject methods ***/
  454. static FORCEINLINE HRESULT IDXGISurface2_GetDevice(IDXGISurface2* This,REFIID riid,void **device) {
  455. return This->lpVtbl->GetDevice(This,riid,device);
  456. }
  457. /*** IDXGISurface methods ***/
  458. static FORCEINLINE HRESULT IDXGISurface2_GetDesc(IDXGISurface2* This,DXGI_SURFACE_DESC *desc) {
  459. return This->lpVtbl->GetDesc(This,desc);
  460. }
  461. static FORCEINLINE HRESULT IDXGISurface2_Map(IDXGISurface2* This,DXGI_MAPPED_RECT *mapped_rect,UINT flags) {
  462. return This->lpVtbl->Map(This,mapped_rect,flags);
  463. }
  464. static FORCEINLINE HRESULT IDXGISurface2_Unmap(IDXGISurface2* This) {
  465. return This->lpVtbl->Unmap(This);
  466. }
  467. /*** IDXGISurface1 methods ***/
  468. static FORCEINLINE HRESULT IDXGISurface2_GetDC(IDXGISurface2* This,WINBOOL discard,HDC *hdc) {
  469. return This->lpVtbl->GetDC(This,discard,hdc);
  470. }
  471. static FORCEINLINE HRESULT IDXGISurface2_ReleaseDC(IDXGISurface2* This,RECT *dirty_rect) {
  472. return This->lpVtbl->ReleaseDC(This,dirty_rect);
  473. }
  474. /*** IDXGISurface2 methods ***/
  475. static FORCEINLINE HRESULT IDXGISurface2_GetResource(IDXGISurface2* This,REFIID iid,void **parent_resource,UINT *subresource_idx) {
  476. return This->lpVtbl->GetResource(This,iid,parent_resource,subresource_idx);
  477. }
  478. #endif
  479. #endif
  480. #endif
  481. #endif /* __IDXGISurface2_INTERFACE_DEFINED__ */
  482. /*****************************************************************************
  483. * IDXGIResource1 interface
  484. */
  485. #ifndef __IDXGIResource1_INTERFACE_DEFINED__
  486. #define __IDXGIResource1_INTERFACE_DEFINED__
  487. DEFINE_GUID(IID_IDXGIResource1, 0x30961379, 0x4609, 0x4a41, 0x99,0x8e, 0x54,0xfe,0x56,0x7e,0xe0,0xc1);
  488. #if defined(__cplusplus) && !defined(CINTERFACE)
  489. MIDL_INTERFACE("30961379-4609-4a41-998e-54fe567ee0c1")
  490. IDXGIResource1 : public IDXGIResource
  491. {
  492. virtual HRESULT STDMETHODCALLTYPE CreateSubresourceSurface(
  493. UINT index,
  494. IDXGISurface2 **surface) = 0;
  495. virtual HRESULT STDMETHODCALLTYPE CreateSharedHandle(
  496. const SECURITY_ATTRIBUTES *attributes,
  497. DWORD access,
  498. const WCHAR *name,
  499. HANDLE *handle) = 0;
  500. };
  501. #ifdef __CRT_UUID_DECL
  502. __CRT_UUID_DECL(IDXGIResource1, 0x30961379, 0x4609, 0x4a41, 0x99,0x8e, 0x54,0xfe,0x56,0x7e,0xe0,0xc1)
  503. #endif
  504. #else
  505. typedef struct IDXGIResource1Vtbl {
  506. BEGIN_INTERFACE
  507. /*** IUnknown methods ***/
  508. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  509. IDXGIResource1 *This,
  510. REFIID riid,
  511. void **ppvObject);
  512. ULONG (STDMETHODCALLTYPE *AddRef)(
  513. IDXGIResource1 *This);
  514. ULONG (STDMETHODCALLTYPE *Release)(
  515. IDXGIResource1 *This);
  516. /*** IDXGIObject methods ***/
  517. HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  518. IDXGIResource1 *This,
  519. REFGUID guid,
  520. UINT data_size,
  521. const void *data);
  522. HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  523. IDXGIResource1 *This,
  524. REFGUID guid,
  525. const IUnknown *object);
  526. HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  527. IDXGIResource1 *This,
  528. REFGUID guid,
  529. UINT *data_size,
  530. void *data);
  531. HRESULT (STDMETHODCALLTYPE *GetParent)(
  532. IDXGIResource1 *This,
  533. REFIID riid,
  534. void **parent);
  535. /*** IDXGIDeviceSubObject methods ***/
  536. HRESULT (STDMETHODCALLTYPE *GetDevice)(
  537. IDXGIResource1 *This,
  538. REFIID riid,
  539. void **device);
  540. /*** IDXGIResource methods ***/
  541. HRESULT (STDMETHODCALLTYPE *GetSharedHandle)(
  542. IDXGIResource1 *This,
  543. HANDLE *pSharedHandle);
  544. HRESULT (STDMETHODCALLTYPE *GetUsage)(
  545. IDXGIResource1 *This,
  546. DXGI_USAGE *pUsage);
  547. HRESULT (STDMETHODCALLTYPE *SetEvictionPriority)(
  548. IDXGIResource1 *This,
  549. UINT EvictionPriority);
  550. HRESULT (STDMETHODCALLTYPE *GetEvictionPriority)(
  551. IDXGIResource1 *This,
  552. UINT *pEvictionPriority);
  553. /*** IDXGIResource1 methods ***/
  554. HRESULT (STDMETHODCALLTYPE *CreateSubresourceSurface)(
  555. IDXGIResource1 *This,
  556. UINT index,
  557. IDXGISurface2 **surface);
  558. HRESULT (STDMETHODCALLTYPE *CreateSharedHandle)(
  559. IDXGIResource1 *This,
  560. const SECURITY_ATTRIBUTES *attributes,
  561. DWORD access,
  562. const WCHAR *name,
  563. HANDLE *handle);
  564. END_INTERFACE
  565. } IDXGIResource1Vtbl;
  566. interface IDXGIResource1 {
  567. CONST_VTBL IDXGIResource1Vtbl* lpVtbl;
  568. };
  569. #ifdef COBJMACROS
  570. #ifndef WIDL_C_INLINE_WRAPPERS
  571. /*** IUnknown methods ***/
  572. #define IDXGIResource1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  573. #define IDXGIResource1_AddRef(This) (This)->lpVtbl->AddRef(This)
  574. #define IDXGIResource1_Release(This) (This)->lpVtbl->Release(This)
  575. /*** IDXGIObject methods ***/
  576. #define IDXGIResource1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  577. #define IDXGIResource1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
  578. #define IDXGIResource1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  579. #define IDXGIResource1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
  580. /*** IDXGIDeviceSubObject methods ***/
  581. #define IDXGIResource1_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
  582. /*** IDXGIResource methods ***/
  583. #define IDXGIResource1_GetSharedHandle(This,pSharedHandle) (This)->lpVtbl->GetSharedHandle(This,pSharedHandle)
  584. #define IDXGIResource1_GetUsage(This,pUsage) (This)->lpVtbl->GetUsage(This,pUsage)
  585. #define IDXGIResource1_SetEvictionPriority(This,EvictionPriority) (This)->lpVtbl->SetEvictionPriority(This,EvictionPriority)
  586. #define IDXGIResource1_GetEvictionPriority(This,pEvictionPriority) (This)->lpVtbl->GetEvictionPriority(This,pEvictionPriority)
  587. /*** IDXGIResource1 methods ***/
  588. #define IDXGIResource1_CreateSubresourceSurface(This,index,surface) (This)->lpVtbl->CreateSubresourceSurface(This,index,surface)
  589. #define IDXGIResource1_CreateSharedHandle(This,attributes,access,name,handle) (This)->lpVtbl->CreateSharedHandle(This,attributes,access,name,handle)
  590. #else
  591. /*** IUnknown methods ***/
  592. static FORCEINLINE HRESULT IDXGIResource1_QueryInterface(IDXGIResource1* This,REFIID riid,void **ppvObject) {
  593. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  594. }
  595. static FORCEINLINE ULONG IDXGIResource1_AddRef(IDXGIResource1* This) {
  596. return This->lpVtbl->AddRef(This);
  597. }
  598. static FORCEINLINE ULONG IDXGIResource1_Release(IDXGIResource1* This) {
  599. return This->lpVtbl->Release(This);
  600. }
  601. /*** IDXGIObject methods ***/
  602. static FORCEINLINE HRESULT IDXGIResource1_SetPrivateData(IDXGIResource1* This,REFGUID guid,UINT data_size,const void *data) {
  603. return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  604. }
  605. static FORCEINLINE HRESULT IDXGIResource1_SetPrivateDataInterface(IDXGIResource1* This,REFGUID guid,const IUnknown *object) {
  606. return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
  607. }
  608. static FORCEINLINE HRESULT IDXGIResource1_GetPrivateData(IDXGIResource1* This,REFGUID guid,UINT *data_size,void *data) {
  609. return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  610. }
  611. static FORCEINLINE HRESULT IDXGIResource1_GetParent(IDXGIResource1* This,REFIID riid,void **parent) {
  612. return This->lpVtbl->GetParent(This,riid,parent);
  613. }
  614. /*** IDXGIDeviceSubObject methods ***/
  615. static FORCEINLINE HRESULT IDXGIResource1_GetDevice(IDXGIResource1* This,REFIID riid,void **device) {
  616. return This->lpVtbl->GetDevice(This,riid,device);
  617. }
  618. /*** IDXGIResource methods ***/
  619. static FORCEINLINE HRESULT IDXGIResource1_GetSharedHandle(IDXGIResource1* This,HANDLE *pSharedHandle) {
  620. return This->lpVtbl->GetSharedHandle(This,pSharedHandle);
  621. }
  622. static FORCEINLINE HRESULT IDXGIResource1_GetUsage(IDXGIResource1* This,DXGI_USAGE *pUsage) {
  623. return This->lpVtbl->GetUsage(This,pUsage);
  624. }
  625. static FORCEINLINE HRESULT IDXGIResource1_SetEvictionPriority(IDXGIResource1* This,UINT EvictionPriority) {
  626. return This->lpVtbl->SetEvictionPriority(This,EvictionPriority);
  627. }
  628. static FORCEINLINE HRESULT IDXGIResource1_GetEvictionPriority(IDXGIResource1* This,UINT *pEvictionPriority) {
  629. return This->lpVtbl->GetEvictionPriority(This,pEvictionPriority);
  630. }
  631. /*** IDXGIResource1 methods ***/
  632. static FORCEINLINE HRESULT IDXGIResource1_CreateSubresourceSurface(IDXGIResource1* This,UINT index,IDXGISurface2 **surface) {
  633. return This->lpVtbl->CreateSubresourceSurface(This,index,surface);
  634. }
  635. static FORCEINLINE HRESULT IDXGIResource1_CreateSharedHandle(IDXGIResource1* This,const SECURITY_ATTRIBUTES *attributes,DWORD access,const WCHAR *name,HANDLE *handle) {
  636. return This->lpVtbl->CreateSharedHandle(This,attributes,access,name,handle);
  637. }
  638. #endif
  639. #endif
  640. #endif
  641. #endif /* __IDXGIResource1_INTERFACE_DEFINED__ */
  642. /*****************************************************************************
  643. * IDXGIDisplayControl interface
  644. */
  645. #ifndef __IDXGIDisplayControl_INTERFACE_DEFINED__
  646. #define __IDXGIDisplayControl_INTERFACE_DEFINED__
  647. DEFINE_GUID(IID_IDXGIDisplayControl, 0xea9dbf1a, 0xc88e, 0x4486, 0x85,0x4a, 0x98,0xaa,0x01,0x38,0xf3,0x0c);
  648. #if defined(__cplusplus) && !defined(CINTERFACE)
  649. MIDL_INTERFACE("ea9dbf1a-c88e-4486-854a-98aa0138f30c")
  650. IDXGIDisplayControl : public IUnknown
  651. {
  652. virtual WINBOOL STDMETHODCALLTYPE IsStereoEnabled(
  653. ) = 0;
  654. virtual void STDMETHODCALLTYPE SetStereoEnabled(
  655. WINBOOL enabled) = 0;
  656. };
  657. #ifdef __CRT_UUID_DECL
  658. __CRT_UUID_DECL(IDXGIDisplayControl, 0xea9dbf1a, 0xc88e, 0x4486, 0x85,0x4a, 0x98,0xaa,0x01,0x38,0xf3,0x0c)
  659. #endif
  660. #else
  661. typedef struct IDXGIDisplayControlVtbl {
  662. BEGIN_INTERFACE
  663. /*** IUnknown methods ***/
  664. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  665. IDXGIDisplayControl *This,
  666. REFIID riid,
  667. void **ppvObject);
  668. ULONG (STDMETHODCALLTYPE *AddRef)(
  669. IDXGIDisplayControl *This);
  670. ULONG (STDMETHODCALLTYPE *Release)(
  671. IDXGIDisplayControl *This);
  672. /*** IDXGIDisplayControl methods ***/
  673. WINBOOL (STDMETHODCALLTYPE *IsStereoEnabled)(
  674. IDXGIDisplayControl *This);
  675. void (STDMETHODCALLTYPE *SetStereoEnabled)(
  676. IDXGIDisplayControl *This,
  677. WINBOOL enabled);
  678. END_INTERFACE
  679. } IDXGIDisplayControlVtbl;
  680. interface IDXGIDisplayControl {
  681. CONST_VTBL IDXGIDisplayControlVtbl* lpVtbl;
  682. };
  683. #ifdef COBJMACROS
  684. #ifndef WIDL_C_INLINE_WRAPPERS
  685. /*** IUnknown methods ***/
  686. #define IDXGIDisplayControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  687. #define IDXGIDisplayControl_AddRef(This) (This)->lpVtbl->AddRef(This)
  688. #define IDXGIDisplayControl_Release(This) (This)->lpVtbl->Release(This)
  689. /*** IDXGIDisplayControl methods ***/
  690. #define IDXGIDisplayControl_IsStereoEnabled(This) (This)->lpVtbl->IsStereoEnabled(This)
  691. #define IDXGIDisplayControl_SetStereoEnabled(This,enabled) (This)->lpVtbl->SetStereoEnabled(This,enabled)
  692. #else
  693. /*** IUnknown methods ***/
  694. static FORCEINLINE HRESULT IDXGIDisplayControl_QueryInterface(IDXGIDisplayControl* This,REFIID riid,void **ppvObject) {
  695. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  696. }
  697. static FORCEINLINE ULONG IDXGIDisplayControl_AddRef(IDXGIDisplayControl* This) {
  698. return This->lpVtbl->AddRef(This);
  699. }
  700. static FORCEINLINE ULONG IDXGIDisplayControl_Release(IDXGIDisplayControl* This) {
  701. return This->lpVtbl->Release(This);
  702. }
  703. /*** IDXGIDisplayControl methods ***/
  704. static FORCEINLINE WINBOOL IDXGIDisplayControl_IsStereoEnabled(IDXGIDisplayControl* This) {
  705. return This->lpVtbl->IsStereoEnabled(This);
  706. }
  707. static FORCEINLINE void IDXGIDisplayControl_SetStereoEnabled(IDXGIDisplayControl* This,WINBOOL enabled) {
  708. This->lpVtbl->SetStereoEnabled(This,enabled);
  709. }
  710. #endif
  711. #endif
  712. #endif
  713. #endif /* __IDXGIDisplayControl_INTERFACE_DEFINED__ */
  714. /*****************************************************************************
  715. * IDXGIDevice2 interface
  716. */
  717. #ifndef __IDXGIDevice2_INTERFACE_DEFINED__
  718. #define __IDXGIDevice2_INTERFACE_DEFINED__
  719. DEFINE_GUID(IID_IDXGIDevice2, 0x05008617, 0xfbfd, 0x4051, 0xa7,0x90, 0x14,0x48,0x84,0xb4,0xf6,0xa9);
  720. #if defined(__cplusplus) && !defined(CINTERFACE)
  721. MIDL_INTERFACE("05008617-fbfd-4051-a790-144884b4f6a9")
  722. IDXGIDevice2 : public IDXGIDevice1
  723. {
  724. virtual HRESULT STDMETHODCALLTYPE OfferResources(
  725. UINT NumResources,
  726. IDXGIResource *const *ppResources,
  727. DXGI_OFFER_RESOURCE_PRIORITY Priority) = 0;
  728. virtual HRESULT STDMETHODCALLTYPE ReclaimResources(
  729. UINT NumResources,
  730. IDXGIResource *const *ppResources,
  731. WINBOOL *pDiscarded) = 0;
  732. virtual HRESULT STDMETHODCALLTYPE EnqueueSetEvent(
  733. HANDLE hEvent) = 0;
  734. };
  735. #ifdef __CRT_UUID_DECL
  736. __CRT_UUID_DECL(IDXGIDevice2, 0x05008617, 0xfbfd, 0x4051, 0xa7,0x90, 0x14,0x48,0x84,0xb4,0xf6,0xa9)
  737. #endif
  738. #else
  739. typedef struct IDXGIDevice2Vtbl {
  740. BEGIN_INTERFACE
  741. /*** IUnknown methods ***/
  742. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  743. IDXGIDevice2 *This,
  744. REFIID riid,
  745. void **ppvObject);
  746. ULONG (STDMETHODCALLTYPE *AddRef)(
  747. IDXGIDevice2 *This);
  748. ULONG (STDMETHODCALLTYPE *Release)(
  749. IDXGIDevice2 *This);
  750. /*** IDXGIObject methods ***/
  751. HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  752. IDXGIDevice2 *This,
  753. REFGUID guid,
  754. UINT data_size,
  755. const void *data);
  756. HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  757. IDXGIDevice2 *This,
  758. REFGUID guid,
  759. const IUnknown *object);
  760. HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  761. IDXGIDevice2 *This,
  762. REFGUID guid,
  763. UINT *data_size,
  764. void *data);
  765. HRESULT (STDMETHODCALLTYPE *GetParent)(
  766. IDXGIDevice2 *This,
  767. REFIID riid,
  768. void **parent);
  769. /*** IDXGIDevice methods ***/
  770. HRESULT (STDMETHODCALLTYPE *GetAdapter)(
  771. IDXGIDevice2 *This,
  772. IDXGIAdapter **adapter);
  773. HRESULT (STDMETHODCALLTYPE *CreateSurface)(
  774. IDXGIDevice2 *This,
  775. const DXGI_SURFACE_DESC *desc,
  776. UINT surface_count,
  777. DXGI_USAGE usage,
  778. const DXGI_SHARED_RESOURCE *shared_resource,
  779. IDXGISurface **surface);
  780. HRESULT (STDMETHODCALLTYPE *QueryResourceResidency)(
  781. IDXGIDevice2 *This,
  782. IUnknown *const *resources,
  783. DXGI_RESIDENCY *residency,
  784. UINT resource_count);
  785. HRESULT (STDMETHODCALLTYPE *SetGPUThreadPriority)(
  786. IDXGIDevice2 *This,
  787. INT priority);
  788. HRESULT (STDMETHODCALLTYPE *GetGPUThreadPriority)(
  789. IDXGIDevice2 *This,
  790. INT *priority);
  791. /*** IDXGIDevice1 methods ***/
  792. HRESULT (STDMETHODCALLTYPE *SetMaximumFrameLatency)(
  793. IDXGIDevice2 *This,
  794. UINT MaxLatency);
  795. HRESULT (STDMETHODCALLTYPE *GetMaximumFrameLatency)(
  796. IDXGIDevice2 *This,
  797. UINT *pMaxLatency);
  798. /*** IDXGIDevice2 methods ***/
  799. HRESULT (STDMETHODCALLTYPE *OfferResources)(
  800. IDXGIDevice2 *This,
  801. UINT NumResources,
  802. IDXGIResource *const *ppResources,
  803. DXGI_OFFER_RESOURCE_PRIORITY Priority);
  804. HRESULT (STDMETHODCALLTYPE *ReclaimResources)(
  805. IDXGIDevice2 *This,
  806. UINT NumResources,
  807. IDXGIResource *const *ppResources,
  808. WINBOOL *pDiscarded);
  809. HRESULT (STDMETHODCALLTYPE *EnqueueSetEvent)(
  810. IDXGIDevice2 *This,
  811. HANDLE hEvent);
  812. END_INTERFACE
  813. } IDXGIDevice2Vtbl;
  814. interface IDXGIDevice2 {
  815. CONST_VTBL IDXGIDevice2Vtbl* lpVtbl;
  816. };
  817. #ifdef COBJMACROS
  818. #ifndef WIDL_C_INLINE_WRAPPERS
  819. /*** IUnknown methods ***/
  820. #define IDXGIDevice2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  821. #define IDXGIDevice2_AddRef(This) (This)->lpVtbl->AddRef(This)
  822. #define IDXGIDevice2_Release(This) (This)->lpVtbl->Release(This)
  823. /*** IDXGIObject methods ***/
  824. #define IDXGIDevice2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  825. #define IDXGIDevice2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
  826. #define IDXGIDevice2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  827. #define IDXGIDevice2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
  828. /*** IDXGIDevice methods ***/
  829. #define IDXGIDevice2_GetAdapter(This,adapter) (This)->lpVtbl->GetAdapter(This,adapter)
  830. #define IDXGIDevice2_CreateSurface(This,desc,surface_count,usage,shared_resource,surface) (This)->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface)
  831. #define IDXGIDevice2_QueryResourceResidency(This,resources,residency,resource_count) (This)->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count)
  832. #define IDXGIDevice2_SetGPUThreadPriority(This,priority) (This)->lpVtbl->SetGPUThreadPriority(This,priority)
  833. #define IDXGIDevice2_GetGPUThreadPriority(This,priority) (This)->lpVtbl->GetGPUThreadPriority(This,priority)
  834. /*** IDXGIDevice1 methods ***/
  835. #define IDXGIDevice2_SetMaximumFrameLatency(This,MaxLatency) (This)->lpVtbl->SetMaximumFrameLatency(This,MaxLatency)
  836. #define IDXGIDevice2_GetMaximumFrameLatency(This,pMaxLatency) (This)->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency)
  837. /*** IDXGIDevice2 methods ***/
  838. #define IDXGIDevice2_OfferResources(This,NumResources,ppResources,Priority) (This)->lpVtbl->OfferResources(This,NumResources,ppResources,Priority)
  839. #define IDXGIDevice2_ReclaimResources(This,NumResources,ppResources,pDiscarded) (This)->lpVtbl->ReclaimResources(This,NumResources,ppResources,pDiscarded)
  840. #define IDXGIDevice2_EnqueueSetEvent(This,hEvent) (This)->lpVtbl->EnqueueSetEvent(This,hEvent)
  841. #else
  842. /*** IUnknown methods ***/
  843. static FORCEINLINE HRESULT IDXGIDevice2_QueryInterface(IDXGIDevice2* This,REFIID riid,void **ppvObject) {
  844. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  845. }
  846. static FORCEINLINE ULONG IDXGIDevice2_AddRef(IDXGIDevice2* This) {
  847. return This->lpVtbl->AddRef(This);
  848. }
  849. static FORCEINLINE ULONG IDXGIDevice2_Release(IDXGIDevice2* This) {
  850. return This->lpVtbl->Release(This);
  851. }
  852. /*** IDXGIObject methods ***/
  853. static FORCEINLINE HRESULT IDXGIDevice2_SetPrivateData(IDXGIDevice2* This,REFGUID guid,UINT data_size,const void *data) {
  854. return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  855. }
  856. static FORCEINLINE HRESULT IDXGIDevice2_SetPrivateDataInterface(IDXGIDevice2* This,REFGUID guid,const IUnknown *object) {
  857. return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
  858. }
  859. static FORCEINLINE HRESULT IDXGIDevice2_GetPrivateData(IDXGIDevice2* This,REFGUID guid,UINT *data_size,void *data) {
  860. return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  861. }
  862. static FORCEINLINE HRESULT IDXGIDevice2_GetParent(IDXGIDevice2* This,REFIID riid,void **parent) {
  863. return This->lpVtbl->GetParent(This,riid,parent);
  864. }
  865. /*** IDXGIDevice methods ***/
  866. static FORCEINLINE HRESULT IDXGIDevice2_GetAdapter(IDXGIDevice2* This,IDXGIAdapter **adapter) {
  867. return This->lpVtbl->GetAdapter(This,adapter);
  868. }
  869. static FORCEINLINE HRESULT IDXGIDevice2_CreateSurface(IDXGIDevice2* This,const DXGI_SURFACE_DESC *desc,UINT surface_count,DXGI_USAGE usage,const DXGI_SHARED_RESOURCE *shared_resource,IDXGISurface **surface) {
  870. return This->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface);
  871. }
  872. static FORCEINLINE HRESULT IDXGIDevice2_QueryResourceResidency(IDXGIDevice2* This,IUnknown *const *resources,DXGI_RESIDENCY *residency,UINT resource_count) {
  873. return This->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count);
  874. }
  875. static FORCEINLINE HRESULT IDXGIDevice2_SetGPUThreadPriority(IDXGIDevice2* This,INT priority) {
  876. return This->lpVtbl->SetGPUThreadPriority(This,priority);
  877. }
  878. static FORCEINLINE HRESULT IDXGIDevice2_GetGPUThreadPriority(IDXGIDevice2* This,INT *priority) {
  879. return This->lpVtbl->GetGPUThreadPriority(This,priority);
  880. }
  881. /*** IDXGIDevice1 methods ***/
  882. static FORCEINLINE HRESULT IDXGIDevice2_SetMaximumFrameLatency(IDXGIDevice2* This,UINT MaxLatency) {
  883. return This->lpVtbl->SetMaximumFrameLatency(This,MaxLatency);
  884. }
  885. static FORCEINLINE HRESULT IDXGIDevice2_GetMaximumFrameLatency(IDXGIDevice2* This,UINT *pMaxLatency) {
  886. return This->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency);
  887. }
  888. /*** IDXGIDevice2 methods ***/
  889. static FORCEINLINE HRESULT IDXGIDevice2_OfferResources(IDXGIDevice2* This,UINT NumResources,IDXGIResource *const *ppResources,DXGI_OFFER_RESOURCE_PRIORITY Priority) {
  890. return This->lpVtbl->OfferResources(This,NumResources,ppResources,Priority);
  891. }
  892. static FORCEINLINE HRESULT IDXGIDevice2_ReclaimResources(IDXGIDevice2* This,UINT NumResources,IDXGIResource *const *ppResources,WINBOOL *pDiscarded) {
  893. return This->lpVtbl->ReclaimResources(This,NumResources,ppResources,pDiscarded);
  894. }
  895. static FORCEINLINE HRESULT IDXGIDevice2_EnqueueSetEvent(IDXGIDevice2* This,HANDLE hEvent) {
  896. return This->lpVtbl->EnqueueSetEvent(This,hEvent);
  897. }
  898. #endif
  899. #endif
  900. #endif
  901. #endif /* __IDXGIDevice2_INTERFACE_DEFINED__ */
  902. typedef enum DXGI_SCALING {
  903. DXGI_SCALING_STRETCH = 0,
  904. DXGI_SCALING_NONE = 1,
  905. DXGI_SCALING_ASPECT_RATIO_STRETCH = 2
  906. } DXGI_SCALING;
  907. typedef struct DXGI_SWAP_CHAIN_DESC1 {
  908. UINT Width;
  909. UINT Height;
  910. DXGI_FORMAT Format;
  911. WINBOOL Stereo;
  912. DXGI_SAMPLE_DESC SampleDesc;
  913. DXGI_USAGE BufferUsage;
  914. UINT BufferCount;
  915. DXGI_SCALING Scaling;
  916. DXGI_SWAP_EFFECT SwapEffect;
  917. DXGI_ALPHA_MODE AlphaMode;
  918. UINT Flags;
  919. } DXGI_SWAP_CHAIN_DESC1;
  920. typedef struct DXGI_SWAP_CHAIN_FULLSCREEN_DESC {
  921. DXGI_RATIONAL RefreshRate;
  922. DXGI_MODE_SCANLINE_ORDER ScanlineOrdering;
  923. DXGI_MODE_SCALING Scaling;
  924. WINBOOL Windowed;
  925. } DXGI_SWAP_CHAIN_FULLSCREEN_DESC;
  926. typedef struct DXGI_PRESENT_PARAMETERS {
  927. UINT DirtyRectsCount;
  928. RECT *pDirtyRects;
  929. RECT *pScrollRect;
  930. POINT *pScrollOffset;
  931. } DXGI_PRESENT_PARAMETERS;
  932. /*****************************************************************************
  933. * IDXGISwapChain1 interface
  934. */
  935. #ifndef __IDXGISwapChain1_INTERFACE_DEFINED__
  936. #define __IDXGISwapChain1_INTERFACE_DEFINED__
  937. DEFINE_GUID(IID_IDXGISwapChain1, 0x790a45f7, 0x0d42, 0x4876, 0x98,0x3a, 0x0a,0x55,0xcf,0xe6,0xf4,0xaa);
  938. #if defined(__cplusplus) && !defined(CINTERFACE)
  939. MIDL_INTERFACE("790a45f7-0d42-4876-983a-0a55cfe6f4aa")
  940. IDXGISwapChain1 : public IDXGISwapChain
  941. {
  942. virtual HRESULT STDMETHODCALLTYPE GetDesc1(
  943. DXGI_SWAP_CHAIN_DESC1 *pDesc) = 0;
  944. virtual HRESULT STDMETHODCALLTYPE GetFullscreenDesc(
  945. DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc) = 0;
  946. virtual HRESULT STDMETHODCALLTYPE GetHwnd(
  947. HWND *pHwnd) = 0;
  948. virtual HRESULT STDMETHODCALLTYPE GetCoreWindow(
  949. REFIID refiid,
  950. void **ppUnk) = 0;
  951. virtual HRESULT STDMETHODCALLTYPE Present1(
  952. UINT SyncInterval,
  953. UINT PresentFlags,
  954. const DXGI_PRESENT_PARAMETERS *pPresentParameters) = 0;
  955. virtual WINBOOL STDMETHODCALLTYPE IsTemporaryMonoSupported(
  956. ) = 0;
  957. virtual HRESULT STDMETHODCALLTYPE GetRestrictToOutput(
  958. IDXGIOutput **ppRestrictToOutput) = 0;
  959. virtual HRESULT STDMETHODCALLTYPE SetBackgroundColor(
  960. const DXGI_RGBA *pColor) = 0;
  961. virtual HRESULT STDMETHODCALLTYPE GetBackgroundColor(
  962. DXGI_RGBA *pColor) = 0;
  963. virtual HRESULT STDMETHODCALLTYPE SetRotation(
  964. DXGI_MODE_ROTATION Rotation) = 0;
  965. virtual HRESULT STDMETHODCALLTYPE GetRotation(
  966. DXGI_MODE_ROTATION *pRotation) = 0;
  967. };
  968. #ifdef __CRT_UUID_DECL
  969. __CRT_UUID_DECL(IDXGISwapChain1, 0x790a45f7, 0x0d42, 0x4876, 0x98,0x3a, 0x0a,0x55,0xcf,0xe6,0xf4,0xaa)
  970. #endif
  971. #else
  972. typedef struct IDXGISwapChain1Vtbl {
  973. BEGIN_INTERFACE
  974. /*** IUnknown methods ***/
  975. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  976. IDXGISwapChain1 *This,
  977. REFIID riid,
  978. void **ppvObject);
  979. ULONG (STDMETHODCALLTYPE *AddRef)(
  980. IDXGISwapChain1 *This);
  981. ULONG (STDMETHODCALLTYPE *Release)(
  982. IDXGISwapChain1 *This);
  983. /*** IDXGIObject methods ***/
  984. HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  985. IDXGISwapChain1 *This,
  986. REFGUID guid,
  987. UINT data_size,
  988. const void *data);
  989. HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  990. IDXGISwapChain1 *This,
  991. REFGUID guid,
  992. const IUnknown *object);
  993. HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  994. IDXGISwapChain1 *This,
  995. REFGUID guid,
  996. UINT *data_size,
  997. void *data);
  998. HRESULT (STDMETHODCALLTYPE *GetParent)(
  999. IDXGISwapChain1 *This,
  1000. REFIID riid,
  1001. void **parent);
  1002. /*** IDXGIDeviceSubObject methods ***/
  1003. HRESULT (STDMETHODCALLTYPE *GetDevice)(
  1004. IDXGISwapChain1 *This,
  1005. REFIID riid,
  1006. void **device);
  1007. /*** IDXGISwapChain methods ***/
  1008. HRESULT (STDMETHODCALLTYPE *Present)(
  1009. IDXGISwapChain1 *This,
  1010. UINT sync_interval,
  1011. UINT flags);
  1012. HRESULT (STDMETHODCALLTYPE *GetBuffer)(
  1013. IDXGISwapChain1 *This,
  1014. UINT buffer_idx,
  1015. REFIID riid,
  1016. void **surface);
  1017. HRESULT (STDMETHODCALLTYPE *SetFullscreenState)(
  1018. IDXGISwapChain1 *This,
  1019. WINBOOL fullscreen,
  1020. IDXGIOutput *target);
  1021. HRESULT (STDMETHODCALLTYPE *GetFullscreenState)(
  1022. IDXGISwapChain1 *This,
  1023. WINBOOL *fullscreen,
  1024. IDXGIOutput **target);
  1025. HRESULT (STDMETHODCALLTYPE *GetDesc)(
  1026. IDXGISwapChain1 *This,
  1027. DXGI_SWAP_CHAIN_DESC *desc);
  1028. HRESULT (STDMETHODCALLTYPE *ResizeBuffers)(
  1029. IDXGISwapChain1 *This,
  1030. UINT buffer_count,
  1031. UINT width,
  1032. UINT height,
  1033. DXGI_FORMAT format,
  1034. UINT flags);
  1035. HRESULT (STDMETHODCALLTYPE *ResizeTarget)(
  1036. IDXGISwapChain1 *This,
  1037. const DXGI_MODE_DESC *target_mode_desc);
  1038. HRESULT (STDMETHODCALLTYPE *GetContainingOutput)(
  1039. IDXGISwapChain1 *This,
  1040. IDXGIOutput **output);
  1041. HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
  1042. IDXGISwapChain1 *This,
  1043. DXGI_FRAME_STATISTICS *stats);
  1044. HRESULT (STDMETHODCALLTYPE *GetLastPresentCount)(
  1045. IDXGISwapChain1 *This,
  1046. UINT *last_present_count);
  1047. /*** IDXGISwapChain1 methods ***/
  1048. HRESULT (STDMETHODCALLTYPE *GetDesc1)(
  1049. IDXGISwapChain1 *This,
  1050. DXGI_SWAP_CHAIN_DESC1 *pDesc);
  1051. HRESULT (STDMETHODCALLTYPE *GetFullscreenDesc)(
  1052. IDXGISwapChain1 *This,
  1053. DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc);
  1054. HRESULT (STDMETHODCALLTYPE *GetHwnd)(
  1055. IDXGISwapChain1 *This,
  1056. HWND *pHwnd);
  1057. HRESULT (STDMETHODCALLTYPE *GetCoreWindow)(
  1058. IDXGISwapChain1 *This,
  1059. REFIID refiid,
  1060. void **ppUnk);
  1061. HRESULT (STDMETHODCALLTYPE *Present1)(
  1062. IDXGISwapChain1 *This,
  1063. UINT SyncInterval,
  1064. UINT PresentFlags,
  1065. const DXGI_PRESENT_PARAMETERS *pPresentParameters);
  1066. WINBOOL (STDMETHODCALLTYPE *IsTemporaryMonoSupported)(
  1067. IDXGISwapChain1 *This);
  1068. HRESULT (STDMETHODCALLTYPE *GetRestrictToOutput)(
  1069. IDXGISwapChain1 *This,
  1070. IDXGIOutput **ppRestrictToOutput);
  1071. HRESULT (STDMETHODCALLTYPE *SetBackgroundColor)(
  1072. IDXGISwapChain1 *This,
  1073. const DXGI_RGBA *pColor);
  1074. HRESULT (STDMETHODCALLTYPE *GetBackgroundColor)(
  1075. IDXGISwapChain1 *This,
  1076. DXGI_RGBA *pColor);
  1077. HRESULT (STDMETHODCALLTYPE *SetRotation)(
  1078. IDXGISwapChain1 *This,
  1079. DXGI_MODE_ROTATION Rotation);
  1080. HRESULT (STDMETHODCALLTYPE *GetRotation)(
  1081. IDXGISwapChain1 *This,
  1082. DXGI_MODE_ROTATION *pRotation);
  1083. END_INTERFACE
  1084. } IDXGISwapChain1Vtbl;
  1085. interface IDXGISwapChain1 {
  1086. CONST_VTBL IDXGISwapChain1Vtbl* lpVtbl;
  1087. };
  1088. #ifdef COBJMACROS
  1089. #ifndef WIDL_C_INLINE_WRAPPERS
  1090. /*** IUnknown methods ***/
  1091. #define IDXGISwapChain1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  1092. #define IDXGISwapChain1_AddRef(This) (This)->lpVtbl->AddRef(This)
  1093. #define IDXGISwapChain1_Release(This) (This)->lpVtbl->Release(This)
  1094. /*** IDXGIObject methods ***/
  1095. #define IDXGISwapChain1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  1096. #define IDXGISwapChain1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
  1097. #define IDXGISwapChain1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  1098. #define IDXGISwapChain1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
  1099. /*** IDXGIDeviceSubObject methods ***/
  1100. #define IDXGISwapChain1_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device)
  1101. /*** IDXGISwapChain methods ***/
  1102. #define IDXGISwapChain1_Present(This,sync_interval,flags) (This)->lpVtbl->Present(This,sync_interval,flags)
  1103. #define IDXGISwapChain1_GetBuffer(This,buffer_idx,riid,surface) (This)->lpVtbl->GetBuffer(This,buffer_idx,riid,surface)
  1104. #define IDXGISwapChain1_SetFullscreenState(This,fullscreen,target) (This)->lpVtbl->SetFullscreenState(This,fullscreen,target)
  1105. #define IDXGISwapChain1_GetFullscreenState(This,fullscreen,target) (This)->lpVtbl->GetFullscreenState(This,fullscreen,target)
  1106. #define IDXGISwapChain1_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
  1107. #define IDXGISwapChain1_ResizeBuffers(This,buffer_count,width,height,format,flags) (This)->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags)
  1108. #define IDXGISwapChain1_ResizeTarget(This,target_mode_desc) (This)->lpVtbl->ResizeTarget(This,target_mode_desc)
  1109. #define IDXGISwapChain1_GetContainingOutput(This,output) (This)->lpVtbl->GetContainingOutput(This,output)
  1110. #define IDXGISwapChain1_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats)
  1111. #define IDXGISwapChain1_GetLastPresentCount(This,last_present_count) (This)->lpVtbl->GetLastPresentCount(This,last_present_count)
  1112. /*** IDXGISwapChain1 methods ***/
  1113. #define IDXGISwapChain1_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc)
  1114. #define IDXGISwapChain1_GetFullscreenDesc(This,pDesc) (This)->lpVtbl->GetFullscreenDesc(This,pDesc)
  1115. #define IDXGISwapChain1_GetHwnd(This,pHwnd) (This)->lpVtbl->GetHwnd(This,pHwnd)
  1116. #define IDXGISwapChain1_GetCoreWindow(This,refiid,ppUnk) (This)->lpVtbl->GetCoreWindow(This,refiid,ppUnk)
  1117. #define IDXGISwapChain1_Present1(This,SyncInterval,PresentFlags,pPresentParameters) (This)->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters)
  1118. #define IDXGISwapChain1_IsTemporaryMonoSupported(This) (This)->lpVtbl->IsTemporaryMonoSupported(This)
  1119. #define IDXGISwapChain1_GetRestrictToOutput(This,ppRestrictToOutput) (This)->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput)
  1120. #define IDXGISwapChain1_SetBackgroundColor(This,pColor) (This)->lpVtbl->SetBackgroundColor(This,pColor)
  1121. #define IDXGISwapChain1_GetBackgroundColor(This,pColor) (This)->lpVtbl->GetBackgroundColor(This,pColor)
  1122. #define IDXGISwapChain1_SetRotation(This,Rotation) (This)->lpVtbl->SetRotation(This,Rotation)
  1123. #define IDXGISwapChain1_GetRotation(This,pRotation) (This)->lpVtbl->GetRotation(This,pRotation)
  1124. #else
  1125. /*** IUnknown methods ***/
  1126. static FORCEINLINE HRESULT IDXGISwapChain1_QueryInterface(IDXGISwapChain1* This,REFIID riid,void **ppvObject) {
  1127. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  1128. }
  1129. static FORCEINLINE ULONG IDXGISwapChain1_AddRef(IDXGISwapChain1* This) {
  1130. return This->lpVtbl->AddRef(This);
  1131. }
  1132. static FORCEINLINE ULONG IDXGISwapChain1_Release(IDXGISwapChain1* This) {
  1133. return This->lpVtbl->Release(This);
  1134. }
  1135. /*** IDXGIObject methods ***/
  1136. static FORCEINLINE HRESULT IDXGISwapChain1_SetPrivateData(IDXGISwapChain1* This,REFGUID guid,UINT data_size,const void *data) {
  1137. return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  1138. }
  1139. static FORCEINLINE HRESULT IDXGISwapChain1_SetPrivateDataInterface(IDXGISwapChain1* This,REFGUID guid,const IUnknown *object) {
  1140. return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
  1141. }
  1142. static FORCEINLINE HRESULT IDXGISwapChain1_GetPrivateData(IDXGISwapChain1* This,REFGUID guid,UINT *data_size,void *data) {
  1143. return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  1144. }
  1145. static FORCEINLINE HRESULT IDXGISwapChain1_GetParent(IDXGISwapChain1* This,REFIID riid,void **parent) {
  1146. return This->lpVtbl->GetParent(This,riid,parent);
  1147. }
  1148. /*** IDXGIDeviceSubObject methods ***/
  1149. static FORCEINLINE HRESULT IDXGISwapChain1_GetDevice(IDXGISwapChain1* This,REFIID riid,void **device) {
  1150. return This->lpVtbl->GetDevice(This,riid,device);
  1151. }
  1152. /*** IDXGISwapChain methods ***/
  1153. static FORCEINLINE HRESULT IDXGISwapChain1_Present(IDXGISwapChain1* This,UINT sync_interval,UINT flags) {
  1154. return This->lpVtbl->Present(This,sync_interval,flags);
  1155. }
  1156. static FORCEINLINE HRESULT IDXGISwapChain1_GetBuffer(IDXGISwapChain1* This,UINT buffer_idx,REFIID riid,void **surface) {
  1157. return This->lpVtbl->GetBuffer(This,buffer_idx,riid,surface);
  1158. }
  1159. static FORCEINLINE HRESULT IDXGISwapChain1_SetFullscreenState(IDXGISwapChain1* This,WINBOOL fullscreen,IDXGIOutput *target) {
  1160. return This->lpVtbl->SetFullscreenState(This,fullscreen,target);
  1161. }
  1162. static FORCEINLINE HRESULT IDXGISwapChain1_GetFullscreenState(IDXGISwapChain1* This,WINBOOL *fullscreen,IDXGIOutput **target) {
  1163. return This->lpVtbl->GetFullscreenState(This,fullscreen,target);
  1164. }
  1165. static FORCEINLINE HRESULT IDXGISwapChain1_GetDesc(IDXGISwapChain1* This,DXGI_SWAP_CHAIN_DESC *desc) {
  1166. return This->lpVtbl->GetDesc(This,desc);
  1167. }
  1168. static FORCEINLINE HRESULT IDXGISwapChain1_ResizeBuffers(IDXGISwapChain1* This,UINT buffer_count,UINT width,UINT height,DXGI_FORMAT format,UINT flags) {
  1169. return This->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags);
  1170. }
  1171. static FORCEINLINE HRESULT IDXGISwapChain1_ResizeTarget(IDXGISwapChain1* This,const DXGI_MODE_DESC *target_mode_desc) {
  1172. return This->lpVtbl->ResizeTarget(This,target_mode_desc);
  1173. }
  1174. static FORCEINLINE HRESULT IDXGISwapChain1_GetContainingOutput(IDXGISwapChain1* This,IDXGIOutput **output) {
  1175. return This->lpVtbl->GetContainingOutput(This,output);
  1176. }
  1177. static FORCEINLINE HRESULT IDXGISwapChain1_GetFrameStatistics(IDXGISwapChain1* This,DXGI_FRAME_STATISTICS *stats) {
  1178. return This->lpVtbl->GetFrameStatistics(This,stats);
  1179. }
  1180. static FORCEINLINE HRESULT IDXGISwapChain1_GetLastPresentCount(IDXGISwapChain1* This,UINT *last_present_count) {
  1181. return This->lpVtbl->GetLastPresentCount(This,last_present_count);
  1182. }
  1183. /*** IDXGISwapChain1 methods ***/
  1184. static FORCEINLINE HRESULT IDXGISwapChain1_GetDesc1(IDXGISwapChain1* This,DXGI_SWAP_CHAIN_DESC1 *pDesc) {
  1185. return This->lpVtbl->GetDesc1(This,pDesc);
  1186. }
  1187. static FORCEINLINE HRESULT IDXGISwapChain1_GetFullscreenDesc(IDXGISwapChain1* This,DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc) {
  1188. return This->lpVtbl->GetFullscreenDesc(This,pDesc);
  1189. }
  1190. static FORCEINLINE HRESULT IDXGISwapChain1_GetHwnd(IDXGISwapChain1* This,HWND *pHwnd) {
  1191. return This->lpVtbl->GetHwnd(This,pHwnd);
  1192. }
  1193. static FORCEINLINE HRESULT IDXGISwapChain1_GetCoreWindow(IDXGISwapChain1* This,REFIID refiid,void **ppUnk) {
  1194. return This->lpVtbl->GetCoreWindow(This,refiid,ppUnk);
  1195. }
  1196. static FORCEINLINE HRESULT IDXGISwapChain1_Present1(IDXGISwapChain1* This,UINT SyncInterval,UINT PresentFlags,const DXGI_PRESENT_PARAMETERS *pPresentParameters) {
  1197. return This->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters);
  1198. }
  1199. static FORCEINLINE WINBOOL IDXGISwapChain1_IsTemporaryMonoSupported(IDXGISwapChain1* This) {
  1200. return This->lpVtbl->IsTemporaryMonoSupported(This);
  1201. }
  1202. static FORCEINLINE HRESULT IDXGISwapChain1_GetRestrictToOutput(IDXGISwapChain1* This,IDXGIOutput **ppRestrictToOutput) {
  1203. return This->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput);
  1204. }
  1205. static FORCEINLINE HRESULT IDXGISwapChain1_SetBackgroundColor(IDXGISwapChain1* This,const DXGI_RGBA *pColor) {
  1206. return This->lpVtbl->SetBackgroundColor(This,pColor);
  1207. }
  1208. static FORCEINLINE HRESULT IDXGISwapChain1_GetBackgroundColor(IDXGISwapChain1* This,DXGI_RGBA *pColor) {
  1209. return This->lpVtbl->GetBackgroundColor(This,pColor);
  1210. }
  1211. static FORCEINLINE HRESULT IDXGISwapChain1_SetRotation(IDXGISwapChain1* This,DXGI_MODE_ROTATION Rotation) {
  1212. return This->lpVtbl->SetRotation(This,Rotation);
  1213. }
  1214. static FORCEINLINE HRESULT IDXGISwapChain1_GetRotation(IDXGISwapChain1* This,DXGI_MODE_ROTATION *pRotation) {
  1215. return This->lpVtbl->GetRotation(This,pRotation);
  1216. }
  1217. #endif
  1218. #endif
  1219. #endif
  1220. #endif /* __IDXGISwapChain1_INTERFACE_DEFINED__ */
  1221. /*****************************************************************************
  1222. * IDXGIFactory2 interface
  1223. */
  1224. #ifndef __IDXGIFactory2_INTERFACE_DEFINED__
  1225. #define __IDXGIFactory2_INTERFACE_DEFINED__
  1226. DEFINE_GUID(IID_IDXGIFactory2, 0x50c83a1c, 0xe072, 0x4c48, 0x87,0xb0, 0x36,0x30,0xfa,0x36,0xa6,0xd0);
  1227. #if defined(__cplusplus) && !defined(CINTERFACE)
  1228. MIDL_INTERFACE("50c83a1c-e072-4c48-87b0-3630fa36a6d0")
  1229. IDXGIFactory2 : public IDXGIFactory1
  1230. {
  1231. virtual WINBOOL STDMETHODCALLTYPE IsWindowedStereoEnabled(
  1232. ) = 0;
  1233. virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForHwnd(
  1234. IUnknown *pDevice,
  1235. HWND hWnd,
  1236. const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  1237. const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
  1238. IDXGIOutput *pRestrictToOutput,
  1239. IDXGISwapChain1 **ppSwapChain) = 0;
  1240. virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForCoreWindow(
  1241. IUnknown *pDevice,
  1242. IUnknown *pWindow,
  1243. const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  1244. IDXGIOutput *pRestrictToOutput,
  1245. IDXGISwapChain1 **ppSwapChain) = 0;
  1246. virtual HRESULT STDMETHODCALLTYPE GetSharedResourceAdapterLuid(
  1247. HANDLE hResource,
  1248. LUID *pLuid) = 0;
  1249. virtual HRESULT STDMETHODCALLTYPE RegisterStereoStatusWindow(
  1250. HWND WindowHandle,
  1251. UINT wMsg,
  1252. DWORD *pdwCookie) = 0;
  1253. virtual HRESULT STDMETHODCALLTYPE RegisterStereoStatusEvent(
  1254. HANDLE hEvent,
  1255. DWORD *pdwCookie) = 0;
  1256. virtual void STDMETHODCALLTYPE UnregisterStereoStatus(
  1257. DWORD dwCookie) = 0;
  1258. virtual HRESULT STDMETHODCALLTYPE RegisterOcclusionStatusWindow(
  1259. HWND WindowHandle,
  1260. UINT wMsg,
  1261. DWORD *pdwCookie) = 0;
  1262. virtual HRESULT STDMETHODCALLTYPE RegisterOcclusionStatusEvent(
  1263. HANDLE hEvent,
  1264. DWORD *pdwCookie) = 0;
  1265. virtual void STDMETHODCALLTYPE UnregisterOcclusionStatus(
  1266. DWORD dwCookie) = 0;
  1267. virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForComposition(
  1268. IUnknown *pDevice,
  1269. const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  1270. IDXGIOutput *pRestrictToOutput,
  1271. IDXGISwapChain1 **ppSwapChain) = 0;
  1272. };
  1273. #ifdef __CRT_UUID_DECL
  1274. __CRT_UUID_DECL(IDXGIFactory2, 0x50c83a1c, 0xe072, 0x4c48, 0x87,0xb0, 0x36,0x30,0xfa,0x36,0xa6,0xd0)
  1275. #endif
  1276. #else
  1277. typedef struct IDXGIFactory2Vtbl {
  1278. BEGIN_INTERFACE
  1279. /*** IUnknown methods ***/
  1280. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  1281. IDXGIFactory2 *This,
  1282. REFIID riid,
  1283. void **ppvObject);
  1284. ULONG (STDMETHODCALLTYPE *AddRef)(
  1285. IDXGIFactory2 *This);
  1286. ULONG (STDMETHODCALLTYPE *Release)(
  1287. IDXGIFactory2 *This);
  1288. /*** IDXGIObject methods ***/
  1289. HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  1290. IDXGIFactory2 *This,
  1291. REFGUID guid,
  1292. UINT data_size,
  1293. const void *data);
  1294. HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  1295. IDXGIFactory2 *This,
  1296. REFGUID guid,
  1297. const IUnknown *object);
  1298. HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  1299. IDXGIFactory2 *This,
  1300. REFGUID guid,
  1301. UINT *data_size,
  1302. void *data);
  1303. HRESULT (STDMETHODCALLTYPE *GetParent)(
  1304. IDXGIFactory2 *This,
  1305. REFIID riid,
  1306. void **parent);
  1307. /*** IDXGIFactory methods ***/
  1308. HRESULT (STDMETHODCALLTYPE *EnumAdapters)(
  1309. IDXGIFactory2 *This,
  1310. UINT adapter_idx,
  1311. IDXGIAdapter **adapter);
  1312. HRESULT (STDMETHODCALLTYPE *MakeWindowAssociation)(
  1313. IDXGIFactory2 *This,
  1314. HWND window,
  1315. UINT flags);
  1316. HRESULT (STDMETHODCALLTYPE *GetWindowAssociation)(
  1317. IDXGIFactory2 *This,
  1318. HWND *window);
  1319. HRESULT (STDMETHODCALLTYPE *CreateSwapChain)(
  1320. IDXGIFactory2 *This,
  1321. IUnknown *device,
  1322. DXGI_SWAP_CHAIN_DESC *desc,
  1323. IDXGISwapChain **swapchain);
  1324. HRESULT (STDMETHODCALLTYPE *CreateSoftwareAdapter)(
  1325. IDXGIFactory2 *This,
  1326. HMODULE swrast,
  1327. IDXGIAdapter **adapter);
  1328. /*** IDXGIFactory1 methods ***/
  1329. HRESULT (STDMETHODCALLTYPE *EnumAdapters1)(
  1330. IDXGIFactory2 *This,
  1331. UINT Adapter,
  1332. IDXGIAdapter1 **ppAdapter);
  1333. WINBOOL (STDMETHODCALLTYPE *IsCurrent)(
  1334. IDXGIFactory2 *This);
  1335. /*** IDXGIFactory2 methods ***/
  1336. WINBOOL (STDMETHODCALLTYPE *IsWindowedStereoEnabled)(
  1337. IDXGIFactory2 *This);
  1338. HRESULT (STDMETHODCALLTYPE *CreateSwapChainForHwnd)(
  1339. IDXGIFactory2 *This,
  1340. IUnknown *pDevice,
  1341. HWND hWnd,
  1342. const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  1343. const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
  1344. IDXGIOutput *pRestrictToOutput,
  1345. IDXGISwapChain1 **ppSwapChain);
  1346. HRESULT (STDMETHODCALLTYPE *CreateSwapChainForCoreWindow)(
  1347. IDXGIFactory2 *This,
  1348. IUnknown *pDevice,
  1349. IUnknown *pWindow,
  1350. const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  1351. IDXGIOutput *pRestrictToOutput,
  1352. IDXGISwapChain1 **ppSwapChain);
  1353. HRESULT (STDMETHODCALLTYPE *GetSharedResourceAdapterLuid)(
  1354. IDXGIFactory2 *This,
  1355. HANDLE hResource,
  1356. LUID *pLuid);
  1357. HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)(
  1358. IDXGIFactory2 *This,
  1359. HWND WindowHandle,
  1360. UINT wMsg,
  1361. DWORD *pdwCookie);
  1362. HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusEvent)(
  1363. IDXGIFactory2 *This,
  1364. HANDLE hEvent,
  1365. DWORD *pdwCookie);
  1366. void (STDMETHODCALLTYPE *UnregisterStereoStatus)(
  1367. IDXGIFactory2 *This,
  1368. DWORD dwCookie);
  1369. HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)(
  1370. IDXGIFactory2 *This,
  1371. HWND WindowHandle,
  1372. UINT wMsg,
  1373. DWORD *pdwCookie);
  1374. HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusEvent)(
  1375. IDXGIFactory2 *This,
  1376. HANDLE hEvent,
  1377. DWORD *pdwCookie);
  1378. void (STDMETHODCALLTYPE *UnregisterOcclusionStatus)(
  1379. IDXGIFactory2 *This,
  1380. DWORD dwCookie);
  1381. HRESULT (STDMETHODCALLTYPE *CreateSwapChainForComposition)(
  1382. IDXGIFactory2 *This,
  1383. IUnknown *pDevice,
  1384. const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  1385. IDXGIOutput *pRestrictToOutput,
  1386. IDXGISwapChain1 **ppSwapChain);
  1387. END_INTERFACE
  1388. } IDXGIFactory2Vtbl;
  1389. interface IDXGIFactory2 {
  1390. CONST_VTBL IDXGIFactory2Vtbl* lpVtbl;
  1391. };
  1392. #ifdef COBJMACROS
  1393. #ifndef WIDL_C_INLINE_WRAPPERS
  1394. /*** IUnknown methods ***/
  1395. #define IDXGIFactory2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  1396. #define IDXGIFactory2_AddRef(This) (This)->lpVtbl->AddRef(This)
  1397. #define IDXGIFactory2_Release(This) (This)->lpVtbl->Release(This)
  1398. /*** IDXGIObject methods ***/
  1399. #define IDXGIFactory2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  1400. #define IDXGIFactory2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
  1401. #define IDXGIFactory2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  1402. #define IDXGIFactory2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
  1403. /*** IDXGIFactory methods ***/
  1404. #define IDXGIFactory2_EnumAdapters(This,adapter_idx,adapter) (This)->lpVtbl->EnumAdapters(This,adapter_idx,adapter)
  1405. #define IDXGIFactory2_MakeWindowAssociation(This,window,flags) (This)->lpVtbl->MakeWindowAssociation(This,window,flags)
  1406. #define IDXGIFactory2_GetWindowAssociation(This,window) (This)->lpVtbl->GetWindowAssociation(This,window)
  1407. #define IDXGIFactory2_CreateSwapChain(This,device,desc,swapchain) (This)->lpVtbl->CreateSwapChain(This,device,desc,swapchain)
  1408. #define IDXGIFactory2_CreateSoftwareAdapter(This,swrast,adapter) (This)->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter)
  1409. /*** IDXGIFactory1 methods ***/
  1410. #define IDXGIFactory2_EnumAdapters1(This,Adapter,ppAdapter) (This)->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter)
  1411. #define IDXGIFactory2_IsCurrent(This) (This)->lpVtbl->IsCurrent(This)
  1412. /*** IDXGIFactory2 methods ***/
  1413. #define IDXGIFactory2_IsWindowedStereoEnabled(This) (This)->lpVtbl->IsWindowedStereoEnabled(This)
  1414. #define IDXGIFactory2_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain)
  1415. #define IDXGIFactory2_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain)
  1416. #define IDXGIFactory2_GetSharedResourceAdapterLuid(This,hResource,pLuid) (This)->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid)
  1417. #define IDXGIFactory2_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)
  1418. #define IDXGIFactory2_RegisterStereoStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie)
  1419. #define IDXGIFactory2_UnregisterStereoStatus(This,dwCookie) (This)->lpVtbl->UnregisterStereoStatus(This,dwCookie)
  1420. #define IDXGIFactory2_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)
  1421. #define IDXGIFactory2_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie)
  1422. #define IDXGIFactory2_UnregisterOcclusionStatus(This,dwCookie) (This)->lpVtbl->UnregisterOcclusionStatus(This,dwCookie)
  1423. #define IDXGIFactory2_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain)
  1424. #else
  1425. /*** IUnknown methods ***/
  1426. static FORCEINLINE HRESULT IDXGIFactory2_QueryInterface(IDXGIFactory2* This,REFIID riid,void **ppvObject) {
  1427. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  1428. }
  1429. static FORCEINLINE ULONG IDXGIFactory2_AddRef(IDXGIFactory2* This) {
  1430. return This->lpVtbl->AddRef(This);
  1431. }
  1432. static FORCEINLINE ULONG IDXGIFactory2_Release(IDXGIFactory2* This) {
  1433. return This->lpVtbl->Release(This);
  1434. }
  1435. /*** IDXGIObject methods ***/
  1436. static FORCEINLINE HRESULT IDXGIFactory2_SetPrivateData(IDXGIFactory2* This,REFGUID guid,UINT data_size,const void *data) {
  1437. return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  1438. }
  1439. static FORCEINLINE HRESULT IDXGIFactory2_SetPrivateDataInterface(IDXGIFactory2* This,REFGUID guid,const IUnknown *object) {
  1440. return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
  1441. }
  1442. static FORCEINLINE HRESULT IDXGIFactory2_GetPrivateData(IDXGIFactory2* This,REFGUID guid,UINT *data_size,void *data) {
  1443. return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  1444. }
  1445. static FORCEINLINE HRESULT IDXGIFactory2_GetParent(IDXGIFactory2* This,REFIID riid,void **parent) {
  1446. return This->lpVtbl->GetParent(This,riid,parent);
  1447. }
  1448. /*** IDXGIFactory methods ***/
  1449. static FORCEINLINE HRESULT IDXGIFactory2_EnumAdapters(IDXGIFactory2* This,UINT adapter_idx,IDXGIAdapter **adapter) {
  1450. return This->lpVtbl->EnumAdapters(This,adapter_idx,adapter);
  1451. }
  1452. static FORCEINLINE HRESULT IDXGIFactory2_MakeWindowAssociation(IDXGIFactory2* This,HWND window,UINT flags) {
  1453. return This->lpVtbl->MakeWindowAssociation(This,window,flags);
  1454. }
  1455. static FORCEINLINE HRESULT IDXGIFactory2_GetWindowAssociation(IDXGIFactory2* This,HWND *window) {
  1456. return This->lpVtbl->GetWindowAssociation(This,window);
  1457. }
  1458. static FORCEINLINE HRESULT IDXGIFactory2_CreateSwapChain(IDXGIFactory2* This,IUnknown *device,DXGI_SWAP_CHAIN_DESC *desc,IDXGISwapChain **swapchain) {
  1459. return This->lpVtbl->CreateSwapChain(This,device,desc,swapchain);
  1460. }
  1461. static FORCEINLINE HRESULT IDXGIFactory2_CreateSoftwareAdapter(IDXGIFactory2* This,HMODULE swrast,IDXGIAdapter **adapter) {
  1462. return This->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter);
  1463. }
  1464. /*** IDXGIFactory1 methods ***/
  1465. static FORCEINLINE HRESULT IDXGIFactory2_EnumAdapters1(IDXGIFactory2* This,UINT Adapter,IDXGIAdapter1 **ppAdapter) {
  1466. return This->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter);
  1467. }
  1468. static FORCEINLINE WINBOOL IDXGIFactory2_IsCurrent(IDXGIFactory2* This) {
  1469. return This->lpVtbl->IsCurrent(This);
  1470. }
  1471. /*** IDXGIFactory2 methods ***/
  1472. static FORCEINLINE WINBOOL IDXGIFactory2_IsWindowedStereoEnabled(IDXGIFactory2* This) {
  1473. return This->lpVtbl->IsWindowedStereoEnabled(This);
  1474. }
  1475. static FORCEINLINE HRESULT IDXGIFactory2_CreateSwapChainForHwnd(IDXGIFactory2* This,IUnknown *pDevice,HWND hWnd,const DXGI_SWAP_CHAIN_DESC1 *pDesc,const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
  1476. return This->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain);
  1477. }
  1478. static FORCEINLINE HRESULT IDXGIFactory2_CreateSwapChainForCoreWindow(IDXGIFactory2* This,IUnknown *pDevice,IUnknown *pWindow,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
  1479. return This->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain);
  1480. }
  1481. static FORCEINLINE HRESULT IDXGIFactory2_GetSharedResourceAdapterLuid(IDXGIFactory2* This,HANDLE hResource,LUID *pLuid) {
  1482. return This->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid);
  1483. }
  1484. static FORCEINLINE HRESULT IDXGIFactory2_RegisterStereoStatusWindow(IDXGIFactory2* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
  1485. return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
  1486. }
  1487. static FORCEINLINE HRESULT IDXGIFactory2_RegisterStereoStatusEvent(IDXGIFactory2* This,HANDLE hEvent,DWORD *pdwCookie) {
  1488. return This->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie);
  1489. }
  1490. static FORCEINLINE void IDXGIFactory2_UnregisterStereoStatus(IDXGIFactory2* This,DWORD dwCookie) {
  1491. This->lpVtbl->UnregisterStereoStatus(This,dwCookie);
  1492. }
  1493. static FORCEINLINE HRESULT IDXGIFactory2_RegisterOcclusionStatusWindow(IDXGIFactory2* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
  1494. return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
  1495. }
  1496. static FORCEINLINE HRESULT IDXGIFactory2_RegisterOcclusionStatusEvent(IDXGIFactory2* This,HANDLE hEvent,DWORD *pdwCookie) {
  1497. return This->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie);
  1498. }
  1499. static FORCEINLINE void IDXGIFactory2_UnregisterOcclusionStatus(IDXGIFactory2* This,DWORD dwCookie) {
  1500. This->lpVtbl->UnregisterOcclusionStatus(This,dwCookie);
  1501. }
  1502. static FORCEINLINE HRESULT IDXGIFactory2_CreateSwapChainForComposition(IDXGIFactory2* This,IUnknown *pDevice,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
  1503. return This->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain);
  1504. }
  1505. #endif
  1506. #endif
  1507. #endif
  1508. #endif /* __IDXGIFactory2_INTERFACE_DEFINED__ */
  1509. typedef enum DXGI_GRAPHICS_PREEMPTION_GRANULARITY {
  1510. DXGI_GRAPHICS_PREEMPTION_DMA_BUFFER_BOUNDARY = 0,
  1511. DXGI_GRAPHICS_PREEMPTION_PRIMITIVE_BOUNDARY = 1,
  1512. DXGI_GRAPHICS_PREEMPTION_TRIANGLE_BOUNDARY = 2,
  1513. DXGI_GRAPHICS_PREEMPTION_PIXEL_BOUNDARY = 3,
  1514. DXGI_GRAPHICS_PREEMPTION_INSTRUCTION_BOUNDARY = 4
  1515. } DXGI_GRAPHICS_PREEMPTION_GRANULARITY;
  1516. typedef enum DXGI_COMPUTE_PREEMPTION_GRANULARITY {
  1517. DXGI_COMPUTE_PREEMPTION_DMA_BUFFER_BOUNDARY = 0,
  1518. DXGI_COMPUTE_PREEMPTION_DISPATCH_BOUNDARY = 1,
  1519. DXGI_COMPUTE_PREEMPTION_THREAD_GROUP_BOUNDARY = 2,
  1520. DXGI_COMPUTE_PREEMPTION_THREAD_BOUNDARY = 3,
  1521. DXGI_COMPUTE_PREEMPTION_INSTRUCTION_BOUNDARY = 4
  1522. } DXGI_COMPUTE_PREEMPTION_GRANULARITY;
  1523. typedef struct DXGI_ADAPTER_DESC2 {
  1524. WCHAR Description[128];
  1525. UINT VendorId;
  1526. UINT DeviceId;
  1527. UINT SubSysId;
  1528. UINT Revision;
  1529. SIZE_T DedicatedVideoMemory;
  1530. SIZE_T DedicatedSystemMemory;
  1531. SIZE_T SharedSystemMemory;
  1532. LUID AdapterLuid;
  1533. UINT Flags;
  1534. DXGI_GRAPHICS_PREEMPTION_GRANULARITY GraphicsPreemptionGranularity;
  1535. DXGI_COMPUTE_PREEMPTION_GRANULARITY ComputePreemptionGranularity;
  1536. } DXGI_ADAPTER_DESC2;
  1537. /*****************************************************************************
  1538. * IDXGIAdapter2 interface
  1539. */
  1540. #ifndef __IDXGIAdapter2_INTERFACE_DEFINED__
  1541. #define __IDXGIAdapter2_INTERFACE_DEFINED__
  1542. DEFINE_GUID(IID_IDXGIAdapter2, 0x0aa1ae0a, 0xfa0e, 0x4b84, 0x86,0x44, 0xe0,0x5f,0xf8,0xe5,0xac,0xb5);
  1543. #if defined(__cplusplus) && !defined(CINTERFACE)
  1544. MIDL_INTERFACE("0aa1ae0a-fa0e-4b84-8644-e05ff8e5acb5")
  1545. IDXGIAdapter2 : public IDXGIAdapter1
  1546. {
  1547. virtual HRESULT STDMETHODCALLTYPE GetDesc2(
  1548. DXGI_ADAPTER_DESC2 *pDesc) = 0;
  1549. };
  1550. #ifdef __CRT_UUID_DECL
  1551. __CRT_UUID_DECL(IDXGIAdapter2, 0x0aa1ae0a, 0xfa0e, 0x4b84, 0x86,0x44, 0xe0,0x5f,0xf8,0xe5,0xac,0xb5)
  1552. #endif
  1553. #else
  1554. typedef struct IDXGIAdapter2Vtbl {
  1555. BEGIN_INTERFACE
  1556. /*** IUnknown methods ***/
  1557. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  1558. IDXGIAdapter2 *This,
  1559. REFIID riid,
  1560. void **ppvObject);
  1561. ULONG (STDMETHODCALLTYPE *AddRef)(
  1562. IDXGIAdapter2 *This);
  1563. ULONG (STDMETHODCALLTYPE *Release)(
  1564. IDXGIAdapter2 *This);
  1565. /*** IDXGIObject methods ***/
  1566. HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  1567. IDXGIAdapter2 *This,
  1568. REFGUID guid,
  1569. UINT data_size,
  1570. const void *data);
  1571. HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  1572. IDXGIAdapter2 *This,
  1573. REFGUID guid,
  1574. const IUnknown *object);
  1575. HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  1576. IDXGIAdapter2 *This,
  1577. REFGUID guid,
  1578. UINT *data_size,
  1579. void *data);
  1580. HRESULT (STDMETHODCALLTYPE *GetParent)(
  1581. IDXGIAdapter2 *This,
  1582. REFIID riid,
  1583. void **parent);
  1584. /*** IDXGIAdapter methods ***/
  1585. HRESULT (STDMETHODCALLTYPE *EnumOutputs)(
  1586. IDXGIAdapter2 *This,
  1587. UINT output_idx,
  1588. IDXGIOutput **output);
  1589. HRESULT (STDMETHODCALLTYPE *GetDesc)(
  1590. IDXGIAdapter2 *This,
  1591. DXGI_ADAPTER_DESC *desc);
  1592. HRESULT (STDMETHODCALLTYPE *CheckInterfaceSupport)(
  1593. IDXGIAdapter2 *This,
  1594. REFGUID guid,
  1595. LARGE_INTEGER *umd_version);
  1596. /*** IDXGIAdapter1 methods ***/
  1597. HRESULT (STDMETHODCALLTYPE *GetDesc1)(
  1598. IDXGIAdapter2 *This,
  1599. DXGI_ADAPTER_DESC1 *pDesc);
  1600. /*** IDXGIAdapter2 methods ***/
  1601. HRESULT (STDMETHODCALLTYPE *GetDesc2)(
  1602. IDXGIAdapter2 *This,
  1603. DXGI_ADAPTER_DESC2 *pDesc);
  1604. END_INTERFACE
  1605. } IDXGIAdapter2Vtbl;
  1606. interface IDXGIAdapter2 {
  1607. CONST_VTBL IDXGIAdapter2Vtbl* lpVtbl;
  1608. };
  1609. #ifdef COBJMACROS
  1610. #ifndef WIDL_C_INLINE_WRAPPERS
  1611. /*** IUnknown methods ***/
  1612. #define IDXGIAdapter2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  1613. #define IDXGIAdapter2_AddRef(This) (This)->lpVtbl->AddRef(This)
  1614. #define IDXGIAdapter2_Release(This) (This)->lpVtbl->Release(This)
  1615. /*** IDXGIObject methods ***/
  1616. #define IDXGIAdapter2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  1617. #define IDXGIAdapter2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
  1618. #define IDXGIAdapter2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  1619. #define IDXGIAdapter2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
  1620. /*** IDXGIAdapter methods ***/
  1621. #define IDXGIAdapter2_EnumOutputs(This,output_idx,output) (This)->lpVtbl->EnumOutputs(This,output_idx,output)
  1622. #define IDXGIAdapter2_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
  1623. #define IDXGIAdapter2_CheckInterfaceSupport(This,guid,umd_version) (This)->lpVtbl->CheckInterfaceSupport(This,guid,umd_version)
  1624. /*** IDXGIAdapter1 methods ***/
  1625. #define IDXGIAdapter2_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc)
  1626. /*** IDXGIAdapter2 methods ***/
  1627. #define IDXGIAdapter2_GetDesc2(This,pDesc) (This)->lpVtbl->GetDesc2(This,pDesc)
  1628. #else
  1629. /*** IUnknown methods ***/
  1630. static FORCEINLINE HRESULT IDXGIAdapter2_QueryInterface(IDXGIAdapter2* This,REFIID riid,void **ppvObject) {
  1631. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  1632. }
  1633. static FORCEINLINE ULONG IDXGIAdapter2_AddRef(IDXGIAdapter2* This) {
  1634. return This->lpVtbl->AddRef(This);
  1635. }
  1636. static FORCEINLINE ULONG IDXGIAdapter2_Release(IDXGIAdapter2* This) {
  1637. return This->lpVtbl->Release(This);
  1638. }
  1639. /*** IDXGIObject methods ***/
  1640. static FORCEINLINE HRESULT IDXGIAdapter2_SetPrivateData(IDXGIAdapter2* This,REFGUID guid,UINT data_size,const void *data) {
  1641. return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  1642. }
  1643. static FORCEINLINE HRESULT IDXGIAdapter2_SetPrivateDataInterface(IDXGIAdapter2* This,REFGUID guid,const IUnknown *object) {
  1644. return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
  1645. }
  1646. static FORCEINLINE HRESULT IDXGIAdapter2_GetPrivateData(IDXGIAdapter2* This,REFGUID guid,UINT *data_size,void *data) {
  1647. return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  1648. }
  1649. static FORCEINLINE HRESULT IDXGIAdapter2_GetParent(IDXGIAdapter2* This,REFIID riid,void **parent) {
  1650. return This->lpVtbl->GetParent(This,riid,parent);
  1651. }
  1652. /*** IDXGIAdapter methods ***/
  1653. static FORCEINLINE HRESULT IDXGIAdapter2_EnumOutputs(IDXGIAdapter2* This,UINT output_idx,IDXGIOutput **output) {
  1654. return This->lpVtbl->EnumOutputs(This,output_idx,output);
  1655. }
  1656. static FORCEINLINE HRESULT IDXGIAdapter2_GetDesc(IDXGIAdapter2* This,DXGI_ADAPTER_DESC *desc) {
  1657. return This->lpVtbl->GetDesc(This,desc);
  1658. }
  1659. static FORCEINLINE HRESULT IDXGIAdapter2_CheckInterfaceSupport(IDXGIAdapter2* This,REFGUID guid,LARGE_INTEGER *umd_version) {
  1660. return This->lpVtbl->CheckInterfaceSupport(This,guid,umd_version);
  1661. }
  1662. /*** IDXGIAdapter1 methods ***/
  1663. static FORCEINLINE HRESULT IDXGIAdapter2_GetDesc1(IDXGIAdapter2* This,DXGI_ADAPTER_DESC1 *pDesc) {
  1664. return This->lpVtbl->GetDesc1(This,pDesc);
  1665. }
  1666. /*** IDXGIAdapter2 methods ***/
  1667. static FORCEINLINE HRESULT IDXGIAdapter2_GetDesc2(IDXGIAdapter2* This,DXGI_ADAPTER_DESC2 *pDesc) {
  1668. return This->lpVtbl->GetDesc2(This,pDesc);
  1669. }
  1670. #endif
  1671. #endif
  1672. #endif
  1673. #endif /* __IDXGIAdapter2_INTERFACE_DEFINED__ */
  1674. /*****************************************************************************
  1675. * IDXGIOutput1 interface
  1676. */
  1677. #ifndef __IDXGIOutput1_INTERFACE_DEFINED__
  1678. #define __IDXGIOutput1_INTERFACE_DEFINED__
  1679. DEFINE_GUID(IID_IDXGIOutput1, 0x00cddea8, 0x939b, 0x4b83, 0xa3,0x40, 0xa6,0x85,0x22,0x66,0x66,0xcc);
  1680. #if defined(__cplusplus) && !defined(CINTERFACE)
  1681. MIDL_INTERFACE("00cddea8-939b-4b83-a340-a685226666cc")
  1682. IDXGIOutput1 : public IDXGIOutput
  1683. {
  1684. virtual HRESULT STDMETHODCALLTYPE GetDisplayModeList1(
  1685. DXGI_FORMAT enum_format,
  1686. UINT flags,
  1687. UINT *num_modes,
  1688. DXGI_MODE_DESC1 *desc) = 0;
  1689. virtual HRESULT STDMETHODCALLTYPE FindClosestMatchingMode1(
  1690. const DXGI_MODE_DESC1 *mode_to_match,
  1691. DXGI_MODE_DESC1 *closest_match,
  1692. IUnknown *concerned_device) = 0;
  1693. virtual HRESULT STDMETHODCALLTYPE GetDisplaySurfaceData1(
  1694. IDXGIResource *destination) = 0;
  1695. virtual HRESULT STDMETHODCALLTYPE DuplicateOutput(
  1696. IUnknown *device,
  1697. IDXGIOutputDuplication **output_duplication) = 0;
  1698. };
  1699. #ifdef __CRT_UUID_DECL
  1700. __CRT_UUID_DECL(IDXGIOutput1, 0x00cddea8, 0x939b, 0x4b83, 0xa3,0x40, 0xa6,0x85,0x22,0x66,0x66,0xcc)
  1701. #endif
  1702. #else
  1703. typedef struct IDXGIOutput1Vtbl {
  1704. BEGIN_INTERFACE
  1705. /*** IUnknown methods ***/
  1706. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  1707. IDXGIOutput1 *This,
  1708. REFIID riid,
  1709. void **ppvObject);
  1710. ULONG (STDMETHODCALLTYPE *AddRef)(
  1711. IDXGIOutput1 *This);
  1712. ULONG (STDMETHODCALLTYPE *Release)(
  1713. IDXGIOutput1 *This);
  1714. /*** IDXGIObject methods ***/
  1715. HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  1716. IDXGIOutput1 *This,
  1717. REFGUID guid,
  1718. UINT data_size,
  1719. const void *data);
  1720. HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  1721. IDXGIOutput1 *This,
  1722. REFGUID guid,
  1723. const IUnknown *object);
  1724. HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  1725. IDXGIOutput1 *This,
  1726. REFGUID guid,
  1727. UINT *data_size,
  1728. void *data);
  1729. HRESULT (STDMETHODCALLTYPE *GetParent)(
  1730. IDXGIOutput1 *This,
  1731. REFIID riid,
  1732. void **parent);
  1733. /*** IDXGIOutput methods ***/
  1734. HRESULT (STDMETHODCALLTYPE *GetDesc)(
  1735. IDXGIOutput1 *This,
  1736. DXGI_OUTPUT_DESC *desc);
  1737. HRESULT (STDMETHODCALLTYPE *GetDisplayModeList)(
  1738. IDXGIOutput1 *This,
  1739. DXGI_FORMAT format,
  1740. UINT flags,
  1741. UINT *mode_count,
  1742. DXGI_MODE_DESC *desc);
  1743. HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode)(
  1744. IDXGIOutput1 *This,
  1745. const DXGI_MODE_DESC *mode,
  1746. DXGI_MODE_DESC *closest_match,
  1747. IUnknown *device);
  1748. HRESULT (STDMETHODCALLTYPE *WaitForVBlank)(
  1749. IDXGIOutput1 *This);
  1750. HRESULT (STDMETHODCALLTYPE *TakeOwnership)(
  1751. IDXGIOutput1 *This,
  1752. IUnknown *device,
  1753. WINBOOL exclusive);
  1754. void (STDMETHODCALLTYPE *ReleaseOwnership)(
  1755. IDXGIOutput1 *This);
  1756. HRESULT (STDMETHODCALLTYPE *GetGammaControlCapabilities)(
  1757. IDXGIOutput1 *This,
  1758. DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps);
  1759. HRESULT (STDMETHODCALLTYPE *SetGammaControl)(
  1760. IDXGIOutput1 *This,
  1761. const DXGI_GAMMA_CONTROL *gamma_control);
  1762. HRESULT (STDMETHODCALLTYPE *GetGammaControl)(
  1763. IDXGIOutput1 *This,
  1764. DXGI_GAMMA_CONTROL *gamma_control);
  1765. HRESULT (STDMETHODCALLTYPE *SetDisplaySurface)(
  1766. IDXGIOutput1 *This,
  1767. IDXGISurface *surface);
  1768. HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData)(
  1769. IDXGIOutput1 *This,
  1770. IDXGISurface *surface);
  1771. HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
  1772. IDXGIOutput1 *This,
  1773. DXGI_FRAME_STATISTICS *stats);
  1774. /*** IDXGIOutput1 methods ***/
  1775. HRESULT (STDMETHODCALLTYPE *GetDisplayModeList1)(
  1776. IDXGIOutput1 *This,
  1777. DXGI_FORMAT enum_format,
  1778. UINT flags,
  1779. UINT *num_modes,
  1780. DXGI_MODE_DESC1 *desc);
  1781. HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode1)(
  1782. IDXGIOutput1 *This,
  1783. const DXGI_MODE_DESC1 *mode_to_match,
  1784. DXGI_MODE_DESC1 *closest_match,
  1785. IUnknown *concerned_device);
  1786. HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData1)(
  1787. IDXGIOutput1 *This,
  1788. IDXGIResource *destination);
  1789. HRESULT (STDMETHODCALLTYPE *DuplicateOutput)(
  1790. IDXGIOutput1 *This,
  1791. IUnknown *device,
  1792. IDXGIOutputDuplication **output_duplication);
  1793. END_INTERFACE
  1794. } IDXGIOutput1Vtbl;
  1795. interface IDXGIOutput1 {
  1796. CONST_VTBL IDXGIOutput1Vtbl* lpVtbl;
  1797. };
  1798. #ifdef COBJMACROS
  1799. #ifndef WIDL_C_INLINE_WRAPPERS
  1800. /*** IUnknown methods ***/
  1801. #define IDXGIOutput1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  1802. #define IDXGIOutput1_AddRef(This) (This)->lpVtbl->AddRef(This)
  1803. #define IDXGIOutput1_Release(This) (This)->lpVtbl->Release(This)
  1804. /*** IDXGIObject methods ***/
  1805. #define IDXGIOutput1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  1806. #define IDXGIOutput1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
  1807. #define IDXGIOutput1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  1808. #define IDXGIOutput1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
  1809. /*** IDXGIOutput methods ***/
  1810. #define IDXGIOutput1_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
  1811. #define IDXGIOutput1_GetDisplayModeList(This,format,flags,mode_count,desc) (This)->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc)
  1812. #define IDXGIOutput1_FindClosestMatchingMode(This,mode,closest_match,device) (This)->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device)
  1813. #define IDXGIOutput1_WaitForVBlank(This) (This)->lpVtbl->WaitForVBlank(This)
  1814. #define IDXGIOutput1_TakeOwnership(This,device,exclusive) (This)->lpVtbl->TakeOwnership(This,device,exclusive)
  1815. #define IDXGIOutput1_ReleaseOwnership(This) (This)->lpVtbl->ReleaseOwnership(This)
  1816. #define IDXGIOutput1_GetGammaControlCapabilities(This,gamma_caps) (This)->lpVtbl->GetGammaControlCapabilities(This,gamma_caps)
  1817. #define IDXGIOutput1_SetGammaControl(This,gamma_control) (This)->lpVtbl->SetGammaControl(This,gamma_control)
  1818. #define IDXGIOutput1_GetGammaControl(This,gamma_control) (This)->lpVtbl->GetGammaControl(This,gamma_control)
  1819. #define IDXGIOutput1_SetDisplaySurface(This,surface) (This)->lpVtbl->SetDisplaySurface(This,surface)
  1820. #define IDXGIOutput1_GetDisplaySurfaceData(This,surface) (This)->lpVtbl->GetDisplaySurfaceData(This,surface)
  1821. #define IDXGIOutput1_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats)
  1822. /*** IDXGIOutput1 methods ***/
  1823. #define IDXGIOutput1_GetDisplayModeList1(This,enum_format,flags,num_modes,desc) (This)->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc)
  1824. #define IDXGIOutput1_FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device) (This)->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device)
  1825. #define IDXGIOutput1_GetDisplaySurfaceData1(This,destination) (This)->lpVtbl->GetDisplaySurfaceData1(This,destination)
  1826. #define IDXGIOutput1_DuplicateOutput(This,device,output_duplication) (This)->lpVtbl->DuplicateOutput(This,device,output_duplication)
  1827. #else
  1828. /*** IUnknown methods ***/
  1829. static FORCEINLINE HRESULT IDXGIOutput1_QueryInterface(IDXGIOutput1* This,REFIID riid,void **ppvObject) {
  1830. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  1831. }
  1832. static FORCEINLINE ULONG IDXGIOutput1_AddRef(IDXGIOutput1* This) {
  1833. return This->lpVtbl->AddRef(This);
  1834. }
  1835. static FORCEINLINE ULONG IDXGIOutput1_Release(IDXGIOutput1* This) {
  1836. return This->lpVtbl->Release(This);
  1837. }
  1838. /*** IDXGIObject methods ***/
  1839. static FORCEINLINE HRESULT IDXGIOutput1_SetPrivateData(IDXGIOutput1* This,REFGUID guid,UINT data_size,const void *data) {
  1840. return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  1841. }
  1842. static FORCEINLINE HRESULT IDXGIOutput1_SetPrivateDataInterface(IDXGIOutput1* This,REFGUID guid,const IUnknown *object) {
  1843. return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
  1844. }
  1845. static FORCEINLINE HRESULT IDXGIOutput1_GetPrivateData(IDXGIOutput1* This,REFGUID guid,UINT *data_size,void *data) {
  1846. return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  1847. }
  1848. static FORCEINLINE HRESULT IDXGIOutput1_GetParent(IDXGIOutput1* This,REFIID riid,void **parent) {
  1849. return This->lpVtbl->GetParent(This,riid,parent);
  1850. }
  1851. /*** IDXGIOutput methods ***/
  1852. static FORCEINLINE HRESULT IDXGIOutput1_GetDesc(IDXGIOutput1* This,DXGI_OUTPUT_DESC *desc) {
  1853. return This->lpVtbl->GetDesc(This,desc);
  1854. }
  1855. static FORCEINLINE HRESULT IDXGIOutput1_GetDisplayModeList(IDXGIOutput1* This,DXGI_FORMAT format,UINT flags,UINT *mode_count,DXGI_MODE_DESC *desc) {
  1856. return This->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc);
  1857. }
  1858. static FORCEINLINE HRESULT IDXGIOutput1_FindClosestMatchingMode(IDXGIOutput1* This,const DXGI_MODE_DESC *mode,DXGI_MODE_DESC *closest_match,IUnknown *device) {
  1859. return This->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device);
  1860. }
  1861. static FORCEINLINE HRESULT IDXGIOutput1_WaitForVBlank(IDXGIOutput1* This) {
  1862. return This->lpVtbl->WaitForVBlank(This);
  1863. }
  1864. static FORCEINLINE HRESULT IDXGIOutput1_TakeOwnership(IDXGIOutput1* This,IUnknown *device,WINBOOL exclusive) {
  1865. return This->lpVtbl->TakeOwnership(This,device,exclusive);
  1866. }
  1867. static FORCEINLINE void IDXGIOutput1_ReleaseOwnership(IDXGIOutput1* This) {
  1868. This->lpVtbl->ReleaseOwnership(This);
  1869. }
  1870. static FORCEINLINE HRESULT IDXGIOutput1_GetGammaControlCapabilities(IDXGIOutput1* This,DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps) {
  1871. return This->lpVtbl->GetGammaControlCapabilities(This,gamma_caps);
  1872. }
  1873. static FORCEINLINE HRESULT IDXGIOutput1_SetGammaControl(IDXGIOutput1* This,const DXGI_GAMMA_CONTROL *gamma_control) {
  1874. return This->lpVtbl->SetGammaControl(This,gamma_control);
  1875. }
  1876. static FORCEINLINE HRESULT IDXGIOutput1_GetGammaControl(IDXGIOutput1* This,DXGI_GAMMA_CONTROL *gamma_control) {
  1877. return This->lpVtbl->GetGammaControl(This,gamma_control);
  1878. }
  1879. static FORCEINLINE HRESULT IDXGIOutput1_SetDisplaySurface(IDXGIOutput1* This,IDXGISurface *surface) {
  1880. return This->lpVtbl->SetDisplaySurface(This,surface);
  1881. }
  1882. static FORCEINLINE HRESULT IDXGIOutput1_GetDisplaySurfaceData(IDXGIOutput1* This,IDXGISurface *surface) {
  1883. return This->lpVtbl->GetDisplaySurfaceData(This,surface);
  1884. }
  1885. static FORCEINLINE HRESULT IDXGIOutput1_GetFrameStatistics(IDXGIOutput1* This,DXGI_FRAME_STATISTICS *stats) {
  1886. return This->lpVtbl->GetFrameStatistics(This,stats);
  1887. }
  1888. /*** IDXGIOutput1 methods ***/
  1889. static FORCEINLINE HRESULT IDXGIOutput1_GetDisplayModeList1(IDXGIOutput1* This,DXGI_FORMAT enum_format,UINT flags,UINT *num_modes,DXGI_MODE_DESC1 *desc) {
  1890. return This->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc);
  1891. }
  1892. static FORCEINLINE HRESULT IDXGIOutput1_FindClosestMatchingMode1(IDXGIOutput1* This,const DXGI_MODE_DESC1 *mode_to_match,DXGI_MODE_DESC1 *closest_match,IUnknown *concerned_device) {
  1893. return This->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device);
  1894. }
  1895. static FORCEINLINE HRESULT IDXGIOutput1_GetDisplaySurfaceData1(IDXGIOutput1* This,IDXGIResource *destination) {
  1896. return This->lpVtbl->GetDisplaySurfaceData1(This,destination);
  1897. }
  1898. static FORCEINLINE HRESULT IDXGIOutput1_DuplicateOutput(IDXGIOutput1* This,IUnknown *device,IDXGIOutputDuplication **output_duplication) {
  1899. return This->lpVtbl->DuplicateOutput(This,device,output_duplication);
  1900. }
  1901. #endif
  1902. #endif
  1903. #endif
  1904. #endif /* __IDXGIOutput1_INTERFACE_DEFINED__ */
  1905. /* Begin additional prototypes for all interfaces */
  1906. /* End additional prototypes */
  1907. #ifdef __cplusplus
  1908. }
  1909. #endif
  1910. #endif /* __dxgi1_2_h__ */