dxgi1_6.h 60 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382
  1. /*** Autogenerated by WIDL 7.7 from include/dxgi1_6.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_6_h__
  14. #define __dxgi1_6_h__
  15. /* Forward declarations */
  16. #ifndef __IDXGIAdapter4_FWD_DEFINED__
  17. #define __IDXGIAdapter4_FWD_DEFINED__
  18. typedef interface IDXGIAdapter4 IDXGIAdapter4;
  19. #ifdef __cplusplus
  20. interface IDXGIAdapter4;
  21. #endif /* __cplusplus */
  22. #endif
  23. #ifndef __IDXGIOutput6_FWD_DEFINED__
  24. #define __IDXGIOutput6_FWD_DEFINED__
  25. typedef interface IDXGIOutput6 IDXGIOutput6;
  26. #ifdef __cplusplus
  27. interface IDXGIOutput6;
  28. #endif /* __cplusplus */
  29. #endif
  30. #ifndef __IDXGIFactory6_FWD_DEFINED__
  31. #define __IDXGIFactory6_FWD_DEFINED__
  32. typedef interface IDXGIFactory6 IDXGIFactory6;
  33. #ifdef __cplusplus
  34. interface IDXGIFactory6;
  35. #endif /* __cplusplus */
  36. #endif
  37. #ifndef __IDXGIFactory7_FWD_DEFINED__
  38. #define __IDXGIFactory7_FWD_DEFINED__
  39. typedef interface IDXGIFactory7 IDXGIFactory7;
  40. #ifdef __cplusplus
  41. interface IDXGIFactory7;
  42. #endif /* __cplusplus */
  43. #endif
  44. /* Headers for imported files */
  45. #include <dxgi1_5.h>
  46. #ifdef __cplusplus
  47. extern "C" {
  48. #endif
  49. typedef enum DXGI_ADAPTER_FLAG3 {
  50. DXGI_ADAPTER_FLAG3_NONE = 0x0,
  51. DXGI_ADAPTER_FLAG3_REMOTE = 0x1,
  52. DXGI_ADAPTER_FLAG3_SOFTWARE = 0x2,
  53. DXGI_ADAPTER_FLAG3_ACG_COMPATIBLE = 0x4,
  54. DXGI_ADAPTER_FLAG3_SUPPORT_MONITORED_FENCES = 0x8,
  55. DXGI_ADAPTER_FLAG3_SUPPORT_NON_MONITORED_FENCES = 0x10,
  56. DXGI_ADAPTER_FLAG3_KEYED_MUTEX_CONFORMANCE = 0x20,
  57. DXGI_ADAPTER_FLAG3_FORCE_DWORD = 0xffffffff
  58. } DXGI_ADAPTER_FLAG3;
  59. typedef enum DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAGS {
  60. DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_FULLSCREEN = 0x1,
  61. DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_WINDOWED = 0x2,
  62. DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_CURSOR_STRETCHED = 0x4
  63. } DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAGS;
  64. typedef enum DXGI_GPU_PREFERENCE {
  65. DXGI_GPU_PREFERENCE_UNSPECIFIED = 0x0,
  66. DXGI_GPU_PREFERENCE_MINIMUM_POWER = 0x1,
  67. DXGI_GPU_PREFERENCE_HIGH_PERFORMANCE = 0x2
  68. } DXGI_GPU_PREFERENCE;
  69. typedef struct DXGI_ADAPTER_DESC3 {
  70. WCHAR Description[128];
  71. UINT VendorId;
  72. UINT DeviceId;
  73. UINT SubSysId;
  74. UINT Revision;
  75. SIZE_T DedicatedVideoMemory;
  76. SIZE_T DedicatedSystemMemory;
  77. SIZE_T SharedSystemMemory;
  78. LUID AdapterLuid;
  79. DXGI_ADAPTER_FLAG3 Flags;
  80. DXGI_GRAPHICS_PREEMPTION_GRANULARITY GraphicsPreemptionGranularity;
  81. DXGI_COMPUTE_PREEMPTION_GRANULARITY ComputePreemptionGranularity;
  82. } DXGI_ADAPTER_DESC3;
  83. typedef struct DXGI_OUTPUT_DESC1 {
  84. WCHAR DeviceName[32];
  85. RECT DesktopCoordinates;
  86. WINBOOL AttachedToDesktop;
  87. DXGI_MODE_ROTATION Rotation;
  88. HMONITOR Monitor;
  89. UINT BitsPerColor;
  90. DXGI_COLOR_SPACE_TYPE ColorSpace;
  91. FLOAT RedPrimary[2];
  92. FLOAT GreenPrimary[2];
  93. FLOAT BluePrimary[2];
  94. FLOAT WhitePoint[2];
  95. FLOAT MinLuminance;
  96. FLOAT MaxLuminance;
  97. FLOAT MaxFullFrameLuminance;
  98. } DXGI_OUTPUT_DESC1;
  99. /*****************************************************************************
  100. * IDXGIAdapter4 interface
  101. */
  102. #ifndef __IDXGIAdapter4_INTERFACE_DEFINED__
  103. #define __IDXGIAdapter4_INTERFACE_DEFINED__
  104. DEFINE_GUID(IID_IDXGIAdapter4, 0x3c8d99d1, 0x4fbf, 0x4181, 0xa8,0x2c, 0xaf,0x66,0xbf,0x7b,0xd2,0x4e);
  105. #if defined(__cplusplus) && !defined(CINTERFACE)
  106. MIDL_INTERFACE("3c8d99d1-4fbf-4181-a82c-af66bf7bd24e")
  107. IDXGIAdapter4 : public IDXGIAdapter3
  108. {
  109. virtual HRESULT STDMETHODCALLTYPE GetDesc3(
  110. DXGI_ADAPTER_DESC3 *desc) = 0;
  111. };
  112. #ifdef __CRT_UUID_DECL
  113. __CRT_UUID_DECL(IDXGIAdapter4, 0x3c8d99d1, 0x4fbf, 0x4181, 0xa8,0x2c, 0xaf,0x66,0xbf,0x7b,0xd2,0x4e)
  114. #endif
  115. #else
  116. typedef struct IDXGIAdapter4Vtbl {
  117. BEGIN_INTERFACE
  118. /*** IUnknown methods ***/
  119. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  120. IDXGIAdapter4 *This,
  121. REFIID riid,
  122. void **ppvObject);
  123. ULONG (STDMETHODCALLTYPE *AddRef)(
  124. IDXGIAdapter4 *This);
  125. ULONG (STDMETHODCALLTYPE *Release)(
  126. IDXGIAdapter4 *This);
  127. /*** IDXGIObject methods ***/
  128. HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  129. IDXGIAdapter4 *This,
  130. REFGUID guid,
  131. UINT data_size,
  132. const void *data);
  133. HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  134. IDXGIAdapter4 *This,
  135. REFGUID guid,
  136. const IUnknown *object);
  137. HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  138. IDXGIAdapter4 *This,
  139. REFGUID guid,
  140. UINT *data_size,
  141. void *data);
  142. HRESULT (STDMETHODCALLTYPE *GetParent)(
  143. IDXGIAdapter4 *This,
  144. REFIID riid,
  145. void **parent);
  146. /*** IDXGIAdapter methods ***/
  147. HRESULT (STDMETHODCALLTYPE *EnumOutputs)(
  148. IDXGIAdapter4 *This,
  149. UINT output_idx,
  150. IDXGIOutput **output);
  151. HRESULT (STDMETHODCALLTYPE *GetDesc)(
  152. IDXGIAdapter4 *This,
  153. DXGI_ADAPTER_DESC *desc);
  154. HRESULT (STDMETHODCALLTYPE *CheckInterfaceSupport)(
  155. IDXGIAdapter4 *This,
  156. REFGUID guid,
  157. LARGE_INTEGER *umd_version);
  158. /*** IDXGIAdapter1 methods ***/
  159. HRESULT (STDMETHODCALLTYPE *GetDesc1)(
  160. IDXGIAdapter4 *This,
  161. DXGI_ADAPTER_DESC1 *pDesc);
  162. /*** IDXGIAdapter2 methods ***/
  163. HRESULT (STDMETHODCALLTYPE *GetDesc2)(
  164. IDXGIAdapter4 *This,
  165. DXGI_ADAPTER_DESC2 *pDesc);
  166. /*** IDXGIAdapter3 methods ***/
  167. HRESULT (STDMETHODCALLTYPE *RegisterHardwareContentProtectionTeardownStatusEvent)(
  168. IDXGIAdapter4 *This,
  169. HANDLE event,
  170. DWORD *cookie);
  171. void (STDMETHODCALLTYPE *UnregisterHardwareContentProtectionTeardownStatus)(
  172. IDXGIAdapter4 *This,
  173. DWORD cookie);
  174. HRESULT (STDMETHODCALLTYPE *QueryVideoMemoryInfo)(
  175. IDXGIAdapter4 *This,
  176. UINT node_index,
  177. DXGI_MEMORY_SEGMENT_GROUP segment_group,
  178. DXGI_QUERY_VIDEO_MEMORY_INFO *memory_info);
  179. HRESULT (STDMETHODCALLTYPE *SetVideoMemoryReservation)(
  180. IDXGIAdapter4 *This,
  181. UINT node_index,
  182. DXGI_MEMORY_SEGMENT_GROUP segment_group,
  183. UINT64 reservation);
  184. HRESULT (STDMETHODCALLTYPE *RegisterVideoMemoryBudgetChangeNotificationEvent)(
  185. IDXGIAdapter4 *This,
  186. HANDLE event,
  187. DWORD *cookie);
  188. void (STDMETHODCALLTYPE *UnregisterVideoMemoryBudgetChangeNotification)(
  189. IDXGIAdapter4 *This,
  190. DWORD cookie);
  191. /*** IDXGIAdapter4 methods ***/
  192. HRESULT (STDMETHODCALLTYPE *GetDesc3)(
  193. IDXGIAdapter4 *This,
  194. DXGI_ADAPTER_DESC3 *desc);
  195. END_INTERFACE
  196. } IDXGIAdapter4Vtbl;
  197. interface IDXGIAdapter4 {
  198. CONST_VTBL IDXGIAdapter4Vtbl* lpVtbl;
  199. };
  200. #ifdef COBJMACROS
  201. #ifndef WIDL_C_INLINE_WRAPPERS
  202. /*** IUnknown methods ***/
  203. #define IDXGIAdapter4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  204. #define IDXGIAdapter4_AddRef(This) (This)->lpVtbl->AddRef(This)
  205. #define IDXGIAdapter4_Release(This) (This)->lpVtbl->Release(This)
  206. /*** IDXGIObject methods ***/
  207. #define IDXGIAdapter4_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  208. #define IDXGIAdapter4_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
  209. #define IDXGIAdapter4_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  210. #define IDXGIAdapter4_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
  211. /*** IDXGIAdapter methods ***/
  212. #define IDXGIAdapter4_EnumOutputs(This,output_idx,output) (This)->lpVtbl->EnumOutputs(This,output_idx,output)
  213. #define IDXGIAdapter4_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
  214. #define IDXGIAdapter4_CheckInterfaceSupport(This,guid,umd_version) (This)->lpVtbl->CheckInterfaceSupport(This,guid,umd_version)
  215. /*** IDXGIAdapter1 methods ***/
  216. #define IDXGIAdapter4_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc)
  217. /*** IDXGIAdapter2 methods ***/
  218. #define IDXGIAdapter4_GetDesc2(This,pDesc) (This)->lpVtbl->GetDesc2(This,pDesc)
  219. /*** IDXGIAdapter3 methods ***/
  220. #define IDXGIAdapter4_RegisterHardwareContentProtectionTeardownStatusEvent(This,event,cookie) (This)->lpVtbl->RegisterHardwareContentProtectionTeardownStatusEvent(This,event,cookie)
  221. #define IDXGIAdapter4_UnregisterHardwareContentProtectionTeardownStatus(This,cookie) (This)->lpVtbl->UnregisterHardwareContentProtectionTeardownStatus(This,cookie)
  222. #define IDXGIAdapter4_QueryVideoMemoryInfo(This,node_index,segment_group,memory_info) (This)->lpVtbl->QueryVideoMemoryInfo(This,node_index,segment_group,memory_info)
  223. #define IDXGIAdapter4_SetVideoMemoryReservation(This,node_index,segment_group,reservation) (This)->lpVtbl->SetVideoMemoryReservation(This,node_index,segment_group,reservation)
  224. #define IDXGIAdapter4_RegisterVideoMemoryBudgetChangeNotificationEvent(This,event,cookie) (This)->lpVtbl->RegisterVideoMemoryBudgetChangeNotificationEvent(This,event,cookie)
  225. #define IDXGIAdapter4_UnregisterVideoMemoryBudgetChangeNotification(This,cookie) (This)->lpVtbl->UnregisterVideoMemoryBudgetChangeNotification(This,cookie)
  226. /*** IDXGIAdapter4 methods ***/
  227. #define IDXGIAdapter4_GetDesc3(This,desc) (This)->lpVtbl->GetDesc3(This,desc)
  228. #else
  229. /*** IUnknown methods ***/
  230. static FORCEINLINE HRESULT IDXGIAdapter4_QueryInterface(IDXGIAdapter4* This,REFIID riid,void **ppvObject) {
  231. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  232. }
  233. static FORCEINLINE ULONG IDXGIAdapter4_AddRef(IDXGIAdapter4* This) {
  234. return This->lpVtbl->AddRef(This);
  235. }
  236. static FORCEINLINE ULONG IDXGIAdapter4_Release(IDXGIAdapter4* This) {
  237. return This->lpVtbl->Release(This);
  238. }
  239. /*** IDXGIObject methods ***/
  240. static FORCEINLINE HRESULT IDXGIAdapter4_SetPrivateData(IDXGIAdapter4* This,REFGUID guid,UINT data_size,const void *data) {
  241. return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  242. }
  243. static FORCEINLINE HRESULT IDXGIAdapter4_SetPrivateDataInterface(IDXGIAdapter4* This,REFGUID guid,const IUnknown *object) {
  244. return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
  245. }
  246. static FORCEINLINE HRESULT IDXGIAdapter4_GetPrivateData(IDXGIAdapter4* This,REFGUID guid,UINT *data_size,void *data) {
  247. return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  248. }
  249. static FORCEINLINE HRESULT IDXGIAdapter4_GetParent(IDXGIAdapter4* This,REFIID riid,void **parent) {
  250. return This->lpVtbl->GetParent(This,riid,parent);
  251. }
  252. /*** IDXGIAdapter methods ***/
  253. static FORCEINLINE HRESULT IDXGIAdapter4_EnumOutputs(IDXGIAdapter4* This,UINT output_idx,IDXGIOutput **output) {
  254. return This->lpVtbl->EnumOutputs(This,output_idx,output);
  255. }
  256. static FORCEINLINE HRESULT IDXGIAdapter4_GetDesc(IDXGIAdapter4* This,DXGI_ADAPTER_DESC *desc) {
  257. return This->lpVtbl->GetDesc(This,desc);
  258. }
  259. static FORCEINLINE HRESULT IDXGIAdapter4_CheckInterfaceSupport(IDXGIAdapter4* This,REFGUID guid,LARGE_INTEGER *umd_version) {
  260. return This->lpVtbl->CheckInterfaceSupport(This,guid,umd_version);
  261. }
  262. /*** IDXGIAdapter1 methods ***/
  263. static FORCEINLINE HRESULT IDXGIAdapter4_GetDesc1(IDXGIAdapter4* This,DXGI_ADAPTER_DESC1 *pDesc) {
  264. return This->lpVtbl->GetDesc1(This,pDesc);
  265. }
  266. /*** IDXGIAdapter2 methods ***/
  267. static FORCEINLINE HRESULT IDXGIAdapter4_GetDesc2(IDXGIAdapter4* This,DXGI_ADAPTER_DESC2 *pDesc) {
  268. return This->lpVtbl->GetDesc2(This,pDesc);
  269. }
  270. /*** IDXGIAdapter3 methods ***/
  271. static FORCEINLINE HRESULT IDXGIAdapter4_RegisterHardwareContentProtectionTeardownStatusEvent(IDXGIAdapter4* This,HANDLE event,DWORD *cookie) {
  272. return This->lpVtbl->RegisterHardwareContentProtectionTeardownStatusEvent(This,event,cookie);
  273. }
  274. static FORCEINLINE void IDXGIAdapter4_UnregisterHardwareContentProtectionTeardownStatus(IDXGIAdapter4* This,DWORD cookie) {
  275. This->lpVtbl->UnregisterHardwareContentProtectionTeardownStatus(This,cookie);
  276. }
  277. static FORCEINLINE HRESULT IDXGIAdapter4_QueryVideoMemoryInfo(IDXGIAdapter4* This,UINT node_index,DXGI_MEMORY_SEGMENT_GROUP segment_group,DXGI_QUERY_VIDEO_MEMORY_INFO *memory_info) {
  278. return This->lpVtbl->QueryVideoMemoryInfo(This,node_index,segment_group,memory_info);
  279. }
  280. static FORCEINLINE HRESULT IDXGIAdapter4_SetVideoMemoryReservation(IDXGIAdapter4* This,UINT node_index,DXGI_MEMORY_SEGMENT_GROUP segment_group,UINT64 reservation) {
  281. return This->lpVtbl->SetVideoMemoryReservation(This,node_index,segment_group,reservation);
  282. }
  283. static FORCEINLINE HRESULT IDXGIAdapter4_RegisterVideoMemoryBudgetChangeNotificationEvent(IDXGIAdapter4* This,HANDLE event,DWORD *cookie) {
  284. return This->lpVtbl->RegisterVideoMemoryBudgetChangeNotificationEvent(This,event,cookie);
  285. }
  286. static FORCEINLINE void IDXGIAdapter4_UnregisterVideoMemoryBudgetChangeNotification(IDXGIAdapter4* This,DWORD cookie) {
  287. This->lpVtbl->UnregisterVideoMemoryBudgetChangeNotification(This,cookie);
  288. }
  289. /*** IDXGIAdapter4 methods ***/
  290. static FORCEINLINE HRESULT IDXGIAdapter4_GetDesc3(IDXGIAdapter4* This,DXGI_ADAPTER_DESC3 *desc) {
  291. return This->lpVtbl->GetDesc3(This,desc);
  292. }
  293. #endif
  294. #endif
  295. #endif
  296. #endif /* __IDXGIAdapter4_INTERFACE_DEFINED__ */
  297. /*****************************************************************************
  298. * IDXGIOutput6 interface
  299. */
  300. #ifndef __IDXGIOutput6_INTERFACE_DEFINED__
  301. #define __IDXGIOutput6_INTERFACE_DEFINED__
  302. DEFINE_GUID(IID_IDXGIOutput6, 0x068346e8, 0xaaec, 0x4b84, 0xad,0xd7, 0x13,0x7f,0x51,0x3f,0x77,0xa1);
  303. #if defined(__cplusplus) && !defined(CINTERFACE)
  304. MIDL_INTERFACE("068346e8-aaec-4b84-add7-137f513f77a1")
  305. IDXGIOutput6 : public IDXGIOutput5
  306. {
  307. virtual HRESULT STDMETHODCALLTYPE GetDesc1(
  308. DXGI_OUTPUT_DESC1 *desc) = 0;
  309. virtual HRESULT STDMETHODCALLTYPE CheckHardwareCompositionSupport(
  310. UINT *flags) = 0;
  311. };
  312. #ifdef __CRT_UUID_DECL
  313. __CRT_UUID_DECL(IDXGIOutput6, 0x068346e8, 0xaaec, 0x4b84, 0xad,0xd7, 0x13,0x7f,0x51,0x3f,0x77,0xa1)
  314. #endif
  315. #else
  316. typedef struct IDXGIOutput6Vtbl {
  317. BEGIN_INTERFACE
  318. /*** IUnknown methods ***/
  319. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  320. IDXGIOutput6 *This,
  321. REFIID riid,
  322. void **ppvObject);
  323. ULONG (STDMETHODCALLTYPE *AddRef)(
  324. IDXGIOutput6 *This);
  325. ULONG (STDMETHODCALLTYPE *Release)(
  326. IDXGIOutput6 *This);
  327. /*** IDXGIObject methods ***/
  328. HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  329. IDXGIOutput6 *This,
  330. REFGUID guid,
  331. UINT data_size,
  332. const void *data);
  333. HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  334. IDXGIOutput6 *This,
  335. REFGUID guid,
  336. const IUnknown *object);
  337. HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  338. IDXGIOutput6 *This,
  339. REFGUID guid,
  340. UINT *data_size,
  341. void *data);
  342. HRESULT (STDMETHODCALLTYPE *GetParent)(
  343. IDXGIOutput6 *This,
  344. REFIID riid,
  345. void **parent);
  346. /*** IDXGIOutput methods ***/
  347. HRESULT (STDMETHODCALLTYPE *GetDesc)(
  348. IDXGIOutput6 *This,
  349. DXGI_OUTPUT_DESC *desc);
  350. HRESULT (STDMETHODCALLTYPE *GetDisplayModeList)(
  351. IDXGIOutput6 *This,
  352. DXGI_FORMAT format,
  353. UINT flags,
  354. UINT *mode_count,
  355. DXGI_MODE_DESC *desc);
  356. HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode)(
  357. IDXGIOutput6 *This,
  358. const DXGI_MODE_DESC *mode,
  359. DXGI_MODE_DESC *closest_match,
  360. IUnknown *device);
  361. HRESULT (STDMETHODCALLTYPE *WaitForVBlank)(
  362. IDXGIOutput6 *This);
  363. HRESULT (STDMETHODCALLTYPE *TakeOwnership)(
  364. IDXGIOutput6 *This,
  365. IUnknown *device,
  366. WINBOOL exclusive);
  367. void (STDMETHODCALLTYPE *ReleaseOwnership)(
  368. IDXGIOutput6 *This);
  369. HRESULT (STDMETHODCALLTYPE *GetGammaControlCapabilities)(
  370. IDXGIOutput6 *This,
  371. DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps);
  372. HRESULT (STDMETHODCALLTYPE *SetGammaControl)(
  373. IDXGIOutput6 *This,
  374. const DXGI_GAMMA_CONTROL *gamma_control);
  375. HRESULT (STDMETHODCALLTYPE *GetGammaControl)(
  376. IDXGIOutput6 *This,
  377. DXGI_GAMMA_CONTROL *gamma_control);
  378. HRESULT (STDMETHODCALLTYPE *SetDisplaySurface)(
  379. IDXGIOutput6 *This,
  380. IDXGISurface *surface);
  381. HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData)(
  382. IDXGIOutput6 *This,
  383. IDXGISurface *surface);
  384. HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)(
  385. IDXGIOutput6 *This,
  386. DXGI_FRAME_STATISTICS *stats);
  387. /*** IDXGIOutput1 methods ***/
  388. HRESULT (STDMETHODCALLTYPE *GetDisplayModeList1)(
  389. IDXGIOutput6 *This,
  390. DXGI_FORMAT enum_format,
  391. UINT flags,
  392. UINT *num_modes,
  393. DXGI_MODE_DESC1 *desc);
  394. HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode1)(
  395. IDXGIOutput6 *This,
  396. const DXGI_MODE_DESC1 *mode_to_match,
  397. DXGI_MODE_DESC1 *closest_match,
  398. IUnknown *concerned_device);
  399. HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData1)(
  400. IDXGIOutput6 *This,
  401. IDXGIResource *destination);
  402. HRESULT (STDMETHODCALLTYPE *DuplicateOutput)(
  403. IDXGIOutput6 *This,
  404. IUnknown *device,
  405. IDXGIOutputDuplication **output_duplication);
  406. /*** IDXGIOutput2 methods ***/
  407. WINBOOL (STDMETHODCALLTYPE *SupportsOverlays)(
  408. IDXGIOutput6 *This);
  409. /*** IDXGIOutput3 methods ***/
  410. HRESULT (STDMETHODCALLTYPE *CheckOverlaySupport)(
  411. IDXGIOutput6 *This,
  412. DXGI_FORMAT enum_format,
  413. IUnknown *concerned_device,
  414. UINT *flags);
  415. /*** IDXGIOutput4 methods ***/
  416. HRESULT (STDMETHODCALLTYPE *CheckOverlayColorSpaceSupport)(
  417. IDXGIOutput6 *This,
  418. DXGI_FORMAT format,
  419. DXGI_COLOR_SPACE_TYPE colour_space,
  420. IUnknown *device,
  421. UINT *flags);
  422. /*** IDXGIOutput5 methods ***/
  423. HRESULT (STDMETHODCALLTYPE *DuplicateOutput1)(
  424. IDXGIOutput6 *This,
  425. IUnknown *device,
  426. UINT flags,
  427. UINT format_count,
  428. const DXGI_FORMAT *formats,
  429. IDXGIOutputDuplication **duplication);
  430. /*** IDXGIOutput6 methods ***/
  431. HRESULT (STDMETHODCALLTYPE *GetDesc1)(
  432. IDXGIOutput6 *This,
  433. DXGI_OUTPUT_DESC1 *desc);
  434. HRESULT (STDMETHODCALLTYPE *CheckHardwareCompositionSupport)(
  435. IDXGIOutput6 *This,
  436. UINT *flags);
  437. END_INTERFACE
  438. } IDXGIOutput6Vtbl;
  439. interface IDXGIOutput6 {
  440. CONST_VTBL IDXGIOutput6Vtbl* lpVtbl;
  441. };
  442. #ifdef COBJMACROS
  443. #ifndef WIDL_C_INLINE_WRAPPERS
  444. /*** IUnknown methods ***/
  445. #define IDXGIOutput6_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  446. #define IDXGIOutput6_AddRef(This) (This)->lpVtbl->AddRef(This)
  447. #define IDXGIOutput6_Release(This) (This)->lpVtbl->Release(This)
  448. /*** IDXGIObject methods ***/
  449. #define IDXGIOutput6_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  450. #define IDXGIOutput6_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
  451. #define IDXGIOutput6_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  452. #define IDXGIOutput6_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
  453. /*** IDXGIOutput methods ***/
  454. #define IDXGIOutput6_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
  455. #define IDXGIOutput6_GetDisplayModeList(This,format,flags,mode_count,desc) (This)->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc)
  456. #define IDXGIOutput6_FindClosestMatchingMode(This,mode,closest_match,device) (This)->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device)
  457. #define IDXGIOutput6_WaitForVBlank(This) (This)->lpVtbl->WaitForVBlank(This)
  458. #define IDXGIOutput6_TakeOwnership(This,device,exclusive) (This)->lpVtbl->TakeOwnership(This,device,exclusive)
  459. #define IDXGIOutput6_ReleaseOwnership(This) (This)->lpVtbl->ReleaseOwnership(This)
  460. #define IDXGIOutput6_GetGammaControlCapabilities(This,gamma_caps) (This)->lpVtbl->GetGammaControlCapabilities(This,gamma_caps)
  461. #define IDXGIOutput6_SetGammaControl(This,gamma_control) (This)->lpVtbl->SetGammaControl(This,gamma_control)
  462. #define IDXGIOutput6_GetGammaControl(This,gamma_control) (This)->lpVtbl->GetGammaControl(This,gamma_control)
  463. #define IDXGIOutput6_SetDisplaySurface(This,surface) (This)->lpVtbl->SetDisplaySurface(This,surface)
  464. #define IDXGIOutput6_GetDisplaySurfaceData(This,surface) (This)->lpVtbl->GetDisplaySurfaceData(This,surface)
  465. #define IDXGIOutput6_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats)
  466. /*** IDXGIOutput1 methods ***/
  467. #define IDXGIOutput6_GetDisplayModeList1(This,enum_format,flags,num_modes,desc) (This)->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc)
  468. #define IDXGIOutput6_FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device) (This)->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device)
  469. #define IDXGIOutput6_GetDisplaySurfaceData1(This,destination) (This)->lpVtbl->GetDisplaySurfaceData1(This,destination)
  470. #define IDXGIOutput6_DuplicateOutput(This,device,output_duplication) (This)->lpVtbl->DuplicateOutput(This,device,output_duplication)
  471. /*** IDXGIOutput2 methods ***/
  472. #define IDXGIOutput6_SupportsOverlays(This) (This)->lpVtbl->SupportsOverlays(This)
  473. /*** IDXGIOutput3 methods ***/
  474. #define IDXGIOutput6_CheckOverlaySupport(This,enum_format,concerned_device,flags) (This)->lpVtbl->CheckOverlaySupport(This,enum_format,concerned_device,flags)
  475. /*** IDXGIOutput4 methods ***/
  476. #define IDXGIOutput6_CheckOverlayColorSpaceSupport(This,format,colour_space,device,flags) (This)->lpVtbl->CheckOverlayColorSpaceSupport(This,format,colour_space,device,flags)
  477. /*** IDXGIOutput5 methods ***/
  478. #define IDXGIOutput6_DuplicateOutput1(This,device,flags,format_count,formats,duplication) (This)->lpVtbl->DuplicateOutput1(This,device,flags,format_count,formats,duplication)
  479. /*** IDXGIOutput6 methods ***/
  480. #define IDXGIOutput6_GetDesc1(This,desc) (This)->lpVtbl->GetDesc1(This,desc)
  481. #define IDXGIOutput6_CheckHardwareCompositionSupport(This,flags) (This)->lpVtbl->CheckHardwareCompositionSupport(This,flags)
  482. #else
  483. /*** IUnknown methods ***/
  484. static FORCEINLINE HRESULT IDXGIOutput6_QueryInterface(IDXGIOutput6* This,REFIID riid,void **ppvObject) {
  485. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  486. }
  487. static FORCEINLINE ULONG IDXGIOutput6_AddRef(IDXGIOutput6* This) {
  488. return This->lpVtbl->AddRef(This);
  489. }
  490. static FORCEINLINE ULONG IDXGIOutput6_Release(IDXGIOutput6* This) {
  491. return This->lpVtbl->Release(This);
  492. }
  493. /*** IDXGIObject methods ***/
  494. static FORCEINLINE HRESULT IDXGIOutput6_SetPrivateData(IDXGIOutput6* This,REFGUID guid,UINT data_size,const void *data) {
  495. return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  496. }
  497. static FORCEINLINE HRESULT IDXGIOutput6_SetPrivateDataInterface(IDXGIOutput6* This,REFGUID guid,const IUnknown *object) {
  498. return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
  499. }
  500. static FORCEINLINE HRESULT IDXGIOutput6_GetPrivateData(IDXGIOutput6* This,REFGUID guid,UINT *data_size,void *data) {
  501. return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  502. }
  503. static FORCEINLINE HRESULT IDXGIOutput6_GetParent(IDXGIOutput6* This,REFIID riid,void **parent) {
  504. return This->lpVtbl->GetParent(This,riid,parent);
  505. }
  506. /*** IDXGIOutput methods ***/
  507. static FORCEINLINE HRESULT IDXGIOutput6_GetDesc(IDXGIOutput6* This,DXGI_OUTPUT_DESC *desc) {
  508. return This->lpVtbl->GetDesc(This,desc);
  509. }
  510. static FORCEINLINE HRESULT IDXGIOutput6_GetDisplayModeList(IDXGIOutput6* This,DXGI_FORMAT format,UINT flags,UINT *mode_count,DXGI_MODE_DESC *desc) {
  511. return This->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc);
  512. }
  513. static FORCEINLINE HRESULT IDXGIOutput6_FindClosestMatchingMode(IDXGIOutput6* This,const DXGI_MODE_DESC *mode,DXGI_MODE_DESC *closest_match,IUnknown *device) {
  514. return This->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device);
  515. }
  516. static FORCEINLINE HRESULT IDXGIOutput6_WaitForVBlank(IDXGIOutput6* This) {
  517. return This->lpVtbl->WaitForVBlank(This);
  518. }
  519. static FORCEINLINE HRESULT IDXGIOutput6_TakeOwnership(IDXGIOutput6* This,IUnknown *device,WINBOOL exclusive) {
  520. return This->lpVtbl->TakeOwnership(This,device,exclusive);
  521. }
  522. static FORCEINLINE void IDXGIOutput6_ReleaseOwnership(IDXGIOutput6* This) {
  523. This->lpVtbl->ReleaseOwnership(This);
  524. }
  525. static FORCEINLINE HRESULT IDXGIOutput6_GetGammaControlCapabilities(IDXGIOutput6* This,DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps) {
  526. return This->lpVtbl->GetGammaControlCapabilities(This,gamma_caps);
  527. }
  528. static FORCEINLINE HRESULT IDXGIOutput6_SetGammaControl(IDXGIOutput6* This,const DXGI_GAMMA_CONTROL *gamma_control) {
  529. return This->lpVtbl->SetGammaControl(This,gamma_control);
  530. }
  531. static FORCEINLINE HRESULT IDXGIOutput6_GetGammaControl(IDXGIOutput6* This,DXGI_GAMMA_CONTROL *gamma_control) {
  532. return This->lpVtbl->GetGammaControl(This,gamma_control);
  533. }
  534. static FORCEINLINE HRESULT IDXGIOutput6_SetDisplaySurface(IDXGIOutput6* This,IDXGISurface *surface) {
  535. return This->lpVtbl->SetDisplaySurface(This,surface);
  536. }
  537. static FORCEINLINE HRESULT IDXGIOutput6_GetDisplaySurfaceData(IDXGIOutput6* This,IDXGISurface *surface) {
  538. return This->lpVtbl->GetDisplaySurfaceData(This,surface);
  539. }
  540. static FORCEINLINE HRESULT IDXGIOutput6_GetFrameStatistics(IDXGIOutput6* This,DXGI_FRAME_STATISTICS *stats) {
  541. return This->lpVtbl->GetFrameStatistics(This,stats);
  542. }
  543. /*** IDXGIOutput1 methods ***/
  544. static FORCEINLINE HRESULT IDXGIOutput6_GetDisplayModeList1(IDXGIOutput6* This,DXGI_FORMAT enum_format,UINT flags,UINT *num_modes,DXGI_MODE_DESC1 *desc) {
  545. return This->lpVtbl->GetDisplayModeList1(This,enum_format,flags,num_modes,desc);
  546. }
  547. static FORCEINLINE HRESULT IDXGIOutput6_FindClosestMatchingMode1(IDXGIOutput6* This,const DXGI_MODE_DESC1 *mode_to_match,DXGI_MODE_DESC1 *closest_match,IUnknown *concerned_device) {
  548. return This->lpVtbl->FindClosestMatchingMode1(This,mode_to_match,closest_match,concerned_device);
  549. }
  550. static FORCEINLINE HRESULT IDXGIOutput6_GetDisplaySurfaceData1(IDXGIOutput6* This,IDXGIResource *destination) {
  551. return This->lpVtbl->GetDisplaySurfaceData1(This,destination);
  552. }
  553. static FORCEINLINE HRESULT IDXGIOutput6_DuplicateOutput(IDXGIOutput6* This,IUnknown *device,IDXGIOutputDuplication **output_duplication) {
  554. return This->lpVtbl->DuplicateOutput(This,device,output_duplication);
  555. }
  556. /*** IDXGIOutput2 methods ***/
  557. static FORCEINLINE WINBOOL IDXGIOutput6_SupportsOverlays(IDXGIOutput6* This) {
  558. return This->lpVtbl->SupportsOverlays(This);
  559. }
  560. /*** IDXGIOutput3 methods ***/
  561. static FORCEINLINE HRESULT IDXGIOutput6_CheckOverlaySupport(IDXGIOutput6* This,DXGI_FORMAT enum_format,IUnknown *concerned_device,UINT *flags) {
  562. return This->lpVtbl->CheckOverlaySupport(This,enum_format,concerned_device,flags);
  563. }
  564. /*** IDXGIOutput4 methods ***/
  565. static FORCEINLINE HRESULT IDXGIOutput6_CheckOverlayColorSpaceSupport(IDXGIOutput6* This,DXGI_FORMAT format,DXGI_COLOR_SPACE_TYPE colour_space,IUnknown *device,UINT *flags) {
  566. return This->lpVtbl->CheckOverlayColorSpaceSupport(This,format,colour_space,device,flags);
  567. }
  568. /*** IDXGIOutput5 methods ***/
  569. static FORCEINLINE HRESULT IDXGIOutput6_DuplicateOutput1(IDXGIOutput6* This,IUnknown *device,UINT flags,UINT format_count,const DXGI_FORMAT *formats,IDXGIOutputDuplication **duplication) {
  570. return This->lpVtbl->DuplicateOutput1(This,device,flags,format_count,formats,duplication);
  571. }
  572. /*** IDXGIOutput6 methods ***/
  573. static FORCEINLINE HRESULT IDXGIOutput6_GetDesc1(IDXGIOutput6* This,DXGI_OUTPUT_DESC1 *desc) {
  574. return This->lpVtbl->GetDesc1(This,desc);
  575. }
  576. static FORCEINLINE HRESULT IDXGIOutput6_CheckHardwareCompositionSupport(IDXGIOutput6* This,UINT *flags) {
  577. return This->lpVtbl->CheckHardwareCompositionSupport(This,flags);
  578. }
  579. #endif
  580. #endif
  581. #endif
  582. #endif /* __IDXGIOutput6_INTERFACE_DEFINED__ */
  583. /*****************************************************************************
  584. * IDXGIFactory6 interface
  585. */
  586. #ifndef __IDXGIFactory6_INTERFACE_DEFINED__
  587. #define __IDXGIFactory6_INTERFACE_DEFINED__
  588. DEFINE_GUID(IID_IDXGIFactory6, 0xc1b6694f, 0xff09, 0x44a9, 0xb0,0x3c, 0x77,0x90,0x0a,0x0a,0x1d,0x17);
  589. #if defined(__cplusplus) && !defined(CINTERFACE)
  590. MIDL_INTERFACE("c1b6694f-ff09-44a9-b03c-77900a0a1d17")
  591. IDXGIFactory6 : public IDXGIFactory5
  592. {
  593. virtual HRESULT STDMETHODCALLTYPE EnumAdapterByGpuPreference(
  594. UINT adapter_idx,
  595. DXGI_GPU_PREFERENCE gpu_preference,
  596. REFIID iid,
  597. void **adapter) = 0;
  598. };
  599. #ifdef __CRT_UUID_DECL
  600. __CRT_UUID_DECL(IDXGIFactory6, 0xc1b6694f, 0xff09, 0x44a9, 0xb0,0x3c, 0x77,0x90,0x0a,0x0a,0x1d,0x17)
  601. #endif
  602. #else
  603. typedef struct IDXGIFactory6Vtbl {
  604. BEGIN_INTERFACE
  605. /*** IUnknown methods ***/
  606. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  607. IDXGIFactory6 *This,
  608. REFIID riid,
  609. void **ppvObject);
  610. ULONG (STDMETHODCALLTYPE *AddRef)(
  611. IDXGIFactory6 *This);
  612. ULONG (STDMETHODCALLTYPE *Release)(
  613. IDXGIFactory6 *This);
  614. /*** IDXGIObject methods ***/
  615. HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  616. IDXGIFactory6 *This,
  617. REFGUID guid,
  618. UINT data_size,
  619. const void *data);
  620. HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  621. IDXGIFactory6 *This,
  622. REFGUID guid,
  623. const IUnknown *object);
  624. HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  625. IDXGIFactory6 *This,
  626. REFGUID guid,
  627. UINT *data_size,
  628. void *data);
  629. HRESULT (STDMETHODCALLTYPE *GetParent)(
  630. IDXGIFactory6 *This,
  631. REFIID riid,
  632. void **parent);
  633. /*** IDXGIFactory methods ***/
  634. HRESULT (STDMETHODCALLTYPE *EnumAdapters)(
  635. IDXGIFactory6 *This,
  636. UINT adapter_idx,
  637. IDXGIAdapter **adapter);
  638. HRESULT (STDMETHODCALLTYPE *MakeWindowAssociation)(
  639. IDXGIFactory6 *This,
  640. HWND window,
  641. UINT flags);
  642. HRESULT (STDMETHODCALLTYPE *GetWindowAssociation)(
  643. IDXGIFactory6 *This,
  644. HWND *window);
  645. HRESULT (STDMETHODCALLTYPE *CreateSwapChain)(
  646. IDXGIFactory6 *This,
  647. IUnknown *device,
  648. DXGI_SWAP_CHAIN_DESC *desc,
  649. IDXGISwapChain **swapchain);
  650. HRESULT (STDMETHODCALLTYPE *CreateSoftwareAdapter)(
  651. IDXGIFactory6 *This,
  652. HMODULE swrast,
  653. IDXGIAdapter **adapter);
  654. /*** IDXGIFactory1 methods ***/
  655. HRESULT (STDMETHODCALLTYPE *EnumAdapters1)(
  656. IDXGIFactory6 *This,
  657. UINT Adapter,
  658. IDXGIAdapter1 **ppAdapter);
  659. WINBOOL (STDMETHODCALLTYPE *IsCurrent)(
  660. IDXGIFactory6 *This);
  661. /*** IDXGIFactory2 methods ***/
  662. WINBOOL (STDMETHODCALLTYPE *IsWindowedStereoEnabled)(
  663. IDXGIFactory6 *This);
  664. HRESULT (STDMETHODCALLTYPE *CreateSwapChainForHwnd)(
  665. IDXGIFactory6 *This,
  666. IUnknown *pDevice,
  667. HWND hWnd,
  668. const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  669. const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
  670. IDXGIOutput *pRestrictToOutput,
  671. IDXGISwapChain1 **ppSwapChain);
  672. HRESULT (STDMETHODCALLTYPE *CreateSwapChainForCoreWindow)(
  673. IDXGIFactory6 *This,
  674. IUnknown *pDevice,
  675. IUnknown *pWindow,
  676. const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  677. IDXGIOutput *pRestrictToOutput,
  678. IDXGISwapChain1 **ppSwapChain);
  679. HRESULT (STDMETHODCALLTYPE *GetSharedResourceAdapterLuid)(
  680. IDXGIFactory6 *This,
  681. HANDLE hResource,
  682. LUID *pLuid);
  683. HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)(
  684. IDXGIFactory6 *This,
  685. HWND WindowHandle,
  686. UINT wMsg,
  687. DWORD *pdwCookie);
  688. HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusEvent)(
  689. IDXGIFactory6 *This,
  690. HANDLE hEvent,
  691. DWORD *pdwCookie);
  692. void (STDMETHODCALLTYPE *UnregisterStereoStatus)(
  693. IDXGIFactory6 *This,
  694. DWORD dwCookie);
  695. HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)(
  696. IDXGIFactory6 *This,
  697. HWND WindowHandle,
  698. UINT wMsg,
  699. DWORD *pdwCookie);
  700. HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusEvent)(
  701. IDXGIFactory6 *This,
  702. HANDLE hEvent,
  703. DWORD *pdwCookie);
  704. void (STDMETHODCALLTYPE *UnregisterOcclusionStatus)(
  705. IDXGIFactory6 *This,
  706. DWORD dwCookie);
  707. HRESULT (STDMETHODCALLTYPE *CreateSwapChainForComposition)(
  708. IDXGIFactory6 *This,
  709. IUnknown *pDevice,
  710. const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  711. IDXGIOutput *pRestrictToOutput,
  712. IDXGISwapChain1 **ppSwapChain);
  713. /*** IDXGIFactory3 methods ***/
  714. UINT (STDMETHODCALLTYPE *GetCreationFlags)(
  715. IDXGIFactory6 *This);
  716. /*** IDXGIFactory4 methods ***/
  717. HRESULT (STDMETHODCALLTYPE *EnumAdapterByLuid)(
  718. IDXGIFactory6 *This,
  719. LUID luid,
  720. REFIID iid,
  721. void **adapter);
  722. HRESULT (STDMETHODCALLTYPE *EnumWarpAdapter)(
  723. IDXGIFactory6 *This,
  724. REFIID iid,
  725. void **adapter);
  726. /*** IDXGIFactory5 methods ***/
  727. HRESULT (STDMETHODCALLTYPE *CheckFeatureSupport)(
  728. IDXGIFactory6 *This,
  729. DXGI_FEATURE feature,
  730. void *support_data,
  731. UINT support_data_size);
  732. /*** IDXGIFactory6 methods ***/
  733. HRESULT (STDMETHODCALLTYPE *EnumAdapterByGpuPreference)(
  734. IDXGIFactory6 *This,
  735. UINT adapter_idx,
  736. DXGI_GPU_PREFERENCE gpu_preference,
  737. REFIID iid,
  738. void **adapter);
  739. END_INTERFACE
  740. } IDXGIFactory6Vtbl;
  741. interface IDXGIFactory6 {
  742. CONST_VTBL IDXGIFactory6Vtbl* lpVtbl;
  743. };
  744. #ifdef COBJMACROS
  745. #ifndef WIDL_C_INLINE_WRAPPERS
  746. /*** IUnknown methods ***/
  747. #define IDXGIFactory6_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  748. #define IDXGIFactory6_AddRef(This) (This)->lpVtbl->AddRef(This)
  749. #define IDXGIFactory6_Release(This) (This)->lpVtbl->Release(This)
  750. /*** IDXGIObject methods ***/
  751. #define IDXGIFactory6_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  752. #define IDXGIFactory6_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
  753. #define IDXGIFactory6_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  754. #define IDXGIFactory6_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
  755. /*** IDXGIFactory methods ***/
  756. #define IDXGIFactory6_EnumAdapters(This,adapter_idx,adapter) (This)->lpVtbl->EnumAdapters(This,adapter_idx,adapter)
  757. #define IDXGIFactory6_MakeWindowAssociation(This,window,flags) (This)->lpVtbl->MakeWindowAssociation(This,window,flags)
  758. #define IDXGIFactory6_GetWindowAssociation(This,window) (This)->lpVtbl->GetWindowAssociation(This,window)
  759. #define IDXGIFactory6_CreateSwapChain(This,device,desc,swapchain) (This)->lpVtbl->CreateSwapChain(This,device,desc,swapchain)
  760. #define IDXGIFactory6_CreateSoftwareAdapter(This,swrast,adapter) (This)->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter)
  761. /*** IDXGIFactory1 methods ***/
  762. #define IDXGIFactory6_EnumAdapters1(This,Adapter,ppAdapter) (This)->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter)
  763. #define IDXGIFactory6_IsCurrent(This) (This)->lpVtbl->IsCurrent(This)
  764. /*** IDXGIFactory2 methods ***/
  765. #define IDXGIFactory6_IsWindowedStereoEnabled(This) (This)->lpVtbl->IsWindowedStereoEnabled(This)
  766. #define IDXGIFactory6_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain)
  767. #define IDXGIFactory6_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain)
  768. #define IDXGIFactory6_GetSharedResourceAdapterLuid(This,hResource,pLuid) (This)->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid)
  769. #define IDXGIFactory6_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)
  770. #define IDXGIFactory6_RegisterStereoStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie)
  771. #define IDXGIFactory6_UnregisterStereoStatus(This,dwCookie) (This)->lpVtbl->UnregisterStereoStatus(This,dwCookie)
  772. #define IDXGIFactory6_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)
  773. #define IDXGIFactory6_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie)
  774. #define IDXGIFactory6_UnregisterOcclusionStatus(This,dwCookie) (This)->lpVtbl->UnregisterOcclusionStatus(This,dwCookie)
  775. #define IDXGIFactory6_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain)
  776. /*** IDXGIFactory3 methods ***/
  777. #define IDXGIFactory6_GetCreationFlags(This) (This)->lpVtbl->GetCreationFlags(This)
  778. /*** IDXGIFactory4 methods ***/
  779. #define IDXGIFactory6_EnumAdapterByLuid(This,luid,iid,adapter) (This)->lpVtbl->EnumAdapterByLuid(This,luid,iid,adapter)
  780. #define IDXGIFactory6_EnumWarpAdapter(This,iid,adapter) (This)->lpVtbl->EnumWarpAdapter(This,iid,adapter)
  781. /*** IDXGIFactory5 methods ***/
  782. #define IDXGIFactory6_CheckFeatureSupport(This,feature,support_data,support_data_size) (This)->lpVtbl->CheckFeatureSupport(This,feature,support_data,support_data_size)
  783. /*** IDXGIFactory6 methods ***/
  784. #define IDXGIFactory6_EnumAdapterByGpuPreference(This,adapter_idx,gpu_preference,iid,adapter) (This)->lpVtbl->EnumAdapterByGpuPreference(This,adapter_idx,gpu_preference,iid,adapter)
  785. #else
  786. /*** IUnknown methods ***/
  787. static FORCEINLINE HRESULT IDXGIFactory6_QueryInterface(IDXGIFactory6* This,REFIID riid,void **ppvObject) {
  788. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  789. }
  790. static FORCEINLINE ULONG IDXGIFactory6_AddRef(IDXGIFactory6* This) {
  791. return This->lpVtbl->AddRef(This);
  792. }
  793. static FORCEINLINE ULONG IDXGIFactory6_Release(IDXGIFactory6* This) {
  794. return This->lpVtbl->Release(This);
  795. }
  796. /*** IDXGIObject methods ***/
  797. static FORCEINLINE HRESULT IDXGIFactory6_SetPrivateData(IDXGIFactory6* This,REFGUID guid,UINT data_size,const void *data) {
  798. return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  799. }
  800. static FORCEINLINE HRESULT IDXGIFactory6_SetPrivateDataInterface(IDXGIFactory6* This,REFGUID guid,const IUnknown *object) {
  801. return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
  802. }
  803. static FORCEINLINE HRESULT IDXGIFactory6_GetPrivateData(IDXGIFactory6* This,REFGUID guid,UINT *data_size,void *data) {
  804. return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  805. }
  806. static FORCEINLINE HRESULT IDXGIFactory6_GetParent(IDXGIFactory6* This,REFIID riid,void **parent) {
  807. return This->lpVtbl->GetParent(This,riid,parent);
  808. }
  809. /*** IDXGIFactory methods ***/
  810. static FORCEINLINE HRESULT IDXGIFactory6_EnumAdapters(IDXGIFactory6* This,UINT adapter_idx,IDXGIAdapter **adapter) {
  811. return This->lpVtbl->EnumAdapters(This,adapter_idx,adapter);
  812. }
  813. static FORCEINLINE HRESULT IDXGIFactory6_MakeWindowAssociation(IDXGIFactory6* This,HWND window,UINT flags) {
  814. return This->lpVtbl->MakeWindowAssociation(This,window,flags);
  815. }
  816. static FORCEINLINE HRESULT IDXGIFactory6_GetWindowAssociation(IDXGIFactory6* This,HWND *window) {
  817. return This->lpVtbl->GetWindowAssociation(This,window);
  818. }
  819. static FORCEINLINE HRESULT IDXGIFactory6_CreateSwapChain(IDXGIFactory6* This,IUnknown *device,DXGI_SWAP_CHAIN_DESC *desc,IDXGISwapChain **swapchain) {
  820. return This->lpVtbl->CreateSwapChain(This,device,desc,swapchain);
  821. }
  822. static FORCEINLINE HRESULT IDXGIFactory6_CreateSoftwareAdapter(IDXGIFactory6* This,HMODULE swrast,IDXGIAdapter **adapter) {
  823. return This->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter);
  824. }
  825. /*** IDXGIFactory1 methods ***/
  826. static FORCEINLINE HRESULT IDXGIFactory6_EnumAdapters1(IDXGIFactory6* This,UINT Adapter,IDXGIAdapter1 **ppAdapter) {
  827. return This->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter);
  828. }
  829. static FORCEINLINE WINBOOL IDXGIFactory6_IsCurrent(IDXGIFactory6* This) {
  830. return This->lpVtbl->IsCurrent(This);
  831. }
  832. /*** IDXGIFactory2 methods ***/
  833. static FORCEINLINE WINBOOL IDXGIFactory6_IsWindowedStereoEnabled(IDXGIFactory6* This) {
  834. return This->lpVtbl->IsWindowedStereoEnabled(This);
  835. }
  836. static FORCEINLINE HRESULT IDXGIFactory6_CreateSwapChainForHwnd(IDXGIFactory6* This,IUnknown *pDevice,HWND hWnd,const DXGI_SWAP_CHAIN_DESC1 *pDesc,const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
  837. return This->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain);
  838. }
  839. static FORCEINLINE HRESULT IDXGIFactory6_CreateSwapChainForCoreWindow(IDXGIFactory6* This,IUnknown *pDevice,IUnknown *pWindow,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
  840. return This->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain);
  841. }
  842. static FORCEINLINE HRESULT IDXGIFactory6_GetSharedResourceAdapterLuid(IDXGIFactory6* This,HANDLE hResource,LUID *pLuid) {
  843. return This->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid);
  844. }
  845. static FORCEINLINE HRESULT IDXGIFactory6_RegisterStereoStatusWindow(IDXGIFactory6* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
  846. return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
  847. }
  848. static FORCEINLINE HRESULT IDXGIFactory6_RegisterStereoStatusEvent(IDXGIFactory6* This,HANDLE hEvent,DWORD *pdwCookie) {
  849. return This->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie);
  850. }
  851. static FORCEINLINE void IDXGIFactory6_UnregisterStereoStatus(IDXGIFactory6* This,DWORD dwCookie) {
  852. This->lpVtbl->UnregisterStereoStatus(This,dwCookie);
  853. }
  854. static FORCEINLINE HRESULT IDXGIFactory6_RegisterOcclusionStatusWindow(IDXGIFactory6* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
  855. return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
  856. }
  857. static FORCEINLINE HRESULT IDXGIFactory6_RegisterOcclusionStatusEvent(IDXGIFactory6* This,HANDLE hEvent,DWORD *pdwCookie) {
  858. return This->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie);
  859. }
  860. static FORCEINLINE void IDXGIFactory6_UnregisterOcclusionStatus(IDXGIFactory6* This,DWORD dwCookie) {
  861. This->lpVtbl->UnregisterOcclusionStatus(This,dwCookie);
  862. }
  863. static FORCEINLINE HRESULT IDXGIFactory6_CreateSwapChainForComposition(IDXGIFactory6* This,IUnknown *pDevice,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
  864. return This->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain);
  865. }
  866. /*** IDXGIFactory3 methods ***/
  867. static FORCEINLINE UINT IDXGIFactory6_GetCreationFlags(IDXGIFactory6* This) {
  868. return This->lpVtbl->GetCreationFlags(This);
  869. }
  870. /*** IDXGIFactory4 methods ***/
  871. static FORCEINLINE HRESULT IDXGIFactory6_EnumAdapterByLuid(IDXGIFactory6* This,LUID luid,REFIID iid,void **adapter) {
  872. return This->lpVtbl->EnumAdapterByLuid(This,luid,iid,adapter);
  873. }
  874. static FORCEINLINE HRESULT IDXGIFactory6_EnumWarpAdapter(IDXGIFactory6* This,REFIID iid,void **adapter) {
  875. return This->lpVtbl->EnumWarpAdapter(This,iid,adapter);
  876. }
  877. /*** IDXGIFactory5 methods ***/
  878. static FORCEINLINE HRESULT IDXGIFactory6_CheckFeatureSupport(IDXGIFactory6* This,DXGI_FEATURE feature,void *support_data,UINT support_data_size) {
  879. return This->lpVtbl->CheckFeatureSupport(This,feature,support_data,support_data_size);
  880. }
  881. /*** IDXGIFactory6 methods ***/
  882. static FORCEINLINE HRESULT IDXGIFactory6_EnumAdapterByGpuPreference(IDXGIFactory6* This,UINT adapter_idx,DXGI_GPU_PREFERENCE gpu_preference,REFIID iid,void **adapter) {
  883. return This->lpVtbl->EnumAdapterByGpuPreference(This,adapter_idx,gpu_preference,iid,adapter);
  884. }
  885. #endif
  886. #endif
  887. #endif
  888. #endif /* __IDXGIFactory6_INTERFACE_DEFINED__ */
  889. /*****************************************************************************
  890. * IDXGIFactory7 interface
  891. */
  892. #ifndef __IDXGIFactory7_INTERFACE_DEFINED__
  893. #define __IDXGIFactory7_INTERFACE_DEFINED__
  894. DEFINE_GUID(IID_IDXGIFactory7, 0xa4966eed, 0x76db, 0x44da, 0x84,0xc1, 0xee,0x9a,0x7a,0xfb,0x20,0xa8);
  895. #if defined(__cplusplus) && !defined(CINTERFACE)
  896. MIDL_INTERFACE("a4966eed-76db-44da-84c1-ee9a7afb20a8")
  897. IDXGIFactory7 : public IDXGIFactory6
  898. {
  899. virtual HRESULT STDMETHODCALLTYPE RegisterAdaptersChangedEvent(
  900. HANDLE event,
  901. DWORD *cookie) = 0;
  902. virtual HRESULT STDMETHODCALLTYPE UnregisterAdaptersChangedEvent(
  903. DWORD cookie) = 0;
  904. };
  905. #ifdef __CRT_UUID_DECL
  906. __CRT_UUID_DECL(IDXGIFactory7, 0xa4966eed, 0x76db, 0x44da, 0x84,0xc1, 0xee,0x9a,0x7a,0xfb,0x20,0xa8)
  907. #endif
  908. #else
  909. typedef struct IDXGIFactory7Vtbl {
  910. BEGIN_INTERFACE
  911. /*** IUnknown methods ***/
  912. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  913. IDXGIFactory7 *This,
  914. REFIID riid,
  915. void **ppvObject);
  916. ULONG (STDMETHODCALLTYPE *AddRef)(
  917. IDXGIFactory7 *This);
  918. ULONG (STDMETHODCALLTYPE *Release)(
  919. IDXGIFactory7 *This);
  920. /*** IDXGIObject methods ***/
  921. HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
  922. IDXGIFactory7 *This,
  923. REFGUID guid,
  924. UINT data_size,
  925. const void *data);
  926. HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
  927. IDXGIFactory7 *This,
  928. REFGUID guid,
  929. const IUnknown *object);
  930. HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
  931. IDXGIFactory7 *This,
  932. REFGUID guid,
  933. UINT *data_size,
  934. void *data);
  935. HRESULT (STDMETHODCALLTYPE *GetParent)(
  936. IDXGIFactory7 *This,
  937. REFIID riid,
  938. void **parent);
  939. /*** IDXGIFactory methods ***/
  940. HRESULT (STDMETHODCALLTYPE *EnumAdapters)(
  941. IDXGIFactory7 *This,
  942. UINT adapter_idx,
  943. IDXGIAdapter **adapter);
  944. HRESULT (STDMETHODCALLTYPE *MakeWindowAssociation)(
  945. IDXGIFactory7 *This,
  946. HWND window,
  947. UINT flags);
  948. HRESULT (STDMETHODCALLTYPE *GetWindowAssociation)(
  949. IDXGIFactory7 *This,
  950. HWND *window);
  951. HRESULT (STDMETHODCALLTYPE *CreateSwapChain)(
  952. IDXGIFactory7 *This,
  953. IUnknown *device,
  954. DXGI_SWAP_CHAIN_DESC *desc,
  955. IDXGISwapChain **swapchain);
  956. HRESULT (STDMETHODCALLTYPE *CreateSoftwareAdapter)(
  957. IDXGIFactory7 *This,
  958. HMODULE swrast,
  959. IDXGIAdapter **adapter);
  960. /*** IDXGIFactory1 methods ***/
  961. HRESULT (STDMETHODCALLTYPE *EnumAdapters1)(
  962. IDXGIFactory7 *This,
  963. UINT Adapter,
  964. IDXGIAdapter1 **ppAdapter);
  965. WINBOOL (STDMETHODCALLTYPE *IsCurrent)(
  966. IDXGIFactory7 *This);
  967. /*** IDXGIFactory2 methods ***/
  968. WINBOOL (STDMETHODCALLTYPE *IsWindowedStereoEnabled)(
  969. IDXGIFactory7 *This);
  970. HRESULT (STDMETHODCALLTYPE *CreateSwapChainForHwnd)(
  971. IDXGIFactory7 *This,
  972. IUnknown *pDevice,
  973. HWND hWnd,
  974. const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  975. const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,
  976. IDXGIOutput *pRestrictToOutput,
  977. IDXGISwapChain1 **ppSwapChain);
  978. HRESULT (STDMETHODCALLTYPE *CreateSwapChainForCoreWindow)(
  979. IDXGIFactory7 *This,
  980. IUnknown *pDevice,
  981. IUnknown *pWindow,
  982. const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  983. IDXGIOutput *pRestrictToOutput,
  984. IDXGISwapChain1 **ppSwapChain);
  985. HRESULT (STDMETHODCALLTYPE *GetSharedResourceAdapterLuid)(
  986. IDXGIFactory7 *This,
  987. HANDLE hResource,
  988. LUID *pLuid);
  989. HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)(
  990. IDXGIFactory7 *This,
  991. HWND WindowHandle,
  992. UINT wMsg,
  993. DWORD *pdwCookie);
  994. HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusEvent)(
  995. IDXGIFactory7 *This,
  996. HANDLE hEvent,
  997. DWORD *pdwCookie);
  998. void (STDMETHODCALLTYPE *UnregisterStereoStatus)(
  999. IDXGIFactory7 *This,
  1000. DWORD dwCookie);
  1001. HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)(
  1002. IDXGIFactory7 *This,
  1003. HWND WindowHandle,
  1004. UINT wMsg,
  1005. DWORD *pdwCookie);
  1006. HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusEvent)(
  1007. IDXGIFactory7 *This,
  1008. HANDLE hEvent,
  1009. DWORD *pdwCookie);
  1010. void (STDMETHODCALLTYPE *UnregisterOcclusionStatus)(
  1011. IDXGIFactory7 *This,
  1012. DWORD dwCookie);
  1013. HRESULT (STDMETHODCALLTYPE *CreateSwapChainForComposition)(
  1014. IDXGIFactory7 *This,
  1015. IUnknown *pDevice,
  1016. const DXGI_SWAP_CHAIN_DESC1 *pDesc,
  1017. IDXGIOutput *pRestrictToOutput,
  1018. IDXGISwapChain1 **ppSwapChain);
  1019. /*** IDXGIFactory3 methods ***/
  1020. UINT (STDMETHODCALLTYPE *GetCreationFlags)(
  1021. IDXGIFactory7 *This);
  1022. /*** IDXGIFactory4 methods ***/
  1023. HRESULT (STDMETHODCALLTYPE *EnumAdapterByLuid)(
  1024. IDXGIFactory7 *This,
  1025. LUID luid,
  1026. REFIID iid,
  1027. void **adapter);
  1028. HRESULT (STDMETHODCALLTYPE *EnumWarpAdapter)(
  1029. IDXGIFactory7 *This,
  1030. REFIID iid,
  1031. void **adapter);
  1032. /*** IDXGIFactory5 methods ***/
  1033. HRESULT (STDMETHODCALLTYPE *CheckFeatureSupport)(
  1034. IDXGIFactory7 *This,
  1035. DXGI_FEATURE feature,
  1036. void *support_data,
  1037. UINT support_data_size);
  1038. /*** IDXGIFactory6 methods ***/
  1039. HRESULT (STDMETHODCALLTYPE *EnumAdapterByGpuPreference)(
  1040. IDXGIFactory7 *This,
  1041. UINT adapter_idx,
  1042. DXGI_GPU_PREFERENCE gpu_preference,
  1043. REFIID iid,
  1044. void **adapter);
  1045. /*** IDXGIFactory7 methods ***/
  1046. HRESULT (STDMETHODCALLTYPE *RegisterAdaptersChangedEvent)(
  1047. IDXGIFactory7 *This,
  1048. HANDLE event,
  1049. DWORD *cookie);
  1050. HRESULT (STDMETHODCALLTYPE *UnregisterAdaptersChangedEvent)(
  1051. IDXGIFactory7 *This,
  1052. DWORD cookie);
  1053. END_INTERFACE
  1054. } IDXGIFactory7Vtbl;
  1055. interface IDXGIFactory7 {
  1056. CONST_VTBL IDXGIFactory7Vtbl* lpVtbl;
  1057. };
  1058. #ifdef COBJMACROS
  1059. #ifndef WIDL_C_INLINE_WRAPPERS
  1060. /*** IUnknown methods ***/
  1061. #define IDXGIFactory7_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  1062. #define IDXGIFactory7_AddRef(This) (This)->lpVtbl->AddRef(This)
  1063. #define IDXGIFactory7_Release(This) (This)->lpVtbl->Release(This)
  1064. /*** IDXGIObject methods ***/
  1065. #define IDXGIFactory7_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data)
  1066. #define IDXGIFactory7_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object)
  1067. #define IDXGIFactory7_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data)
  1068. #define IDXGIFactory7_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent)
  1069. /*** IDXGIFactory methods ***/
  1070. #define IDXGIFactory7_EnumAdapters(This,adapter_idx,adapter) (This)->lpVtbl->EnumAdapters(This,adapter_idx,adapter)
  1071. #define IDXGIFactory7_MakeWindowAssociation(This,window,flags) (This)->lpVtbl->MakeWindowAssociation(This,window,flags)
  1072. #define IDXGIFactory7_GetWindowAssociation(This,window) (This)->lpVtbl->GetWindowAssociation(This,window)
  1073. #define IDXGIFactory7_CreateSwapChain(This,device,desc,swapchain) (This)->lpVtbl->CreateSwapChain(This,device,desc,swapchain)
  1074. #define IDXGIFactory7_CreateSoftwareAdapter(This,swrast,adapter) (This)->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter)
  1075. /*** IDXGIFactory1 methods ***/
  1076. #define IDXGIFactory7_EnumAdapters1(This,Adapter,ppAdapter) (This)->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter)
  1077. #define IDXGIFactory7_IsCurrent(This) (This)->lpVtbl->IsCurrent(This)
  1078. /*** IDXGIFactory2 methods ***/
  1079. #define IDXGIFactory7_IsWindowedStereoEnabled(This) (This)->lpVtbl->IsWindowedStereoEnabled(This)
  1080. #define IDXGIFactory7_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain)
  1081. #define IDXGIFactory7_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain)
  1082. #define IDXGIFactory7_GetSharedResourceAdapterLuid(This,hResource,pLuid) (This)->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid)
  1083. #define IDXGIFactory7_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie)
  1084. #define IDXGIFactory7_RegisterStereoStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie)
  1085. #define IDXGIFactory7_UnregisterStereoStatus(This,dwCookie) (This)->lpVtbl->UnregisterStereoStatus(This,dwCookie)
  1086. #define IDXGIFactory7_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie)
  1087. #define IDXGIFactory7_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie)
  1088. #define IDXGIFactory7_UnregisterOcclusionStatus(This,dwCookie) (This)->lpVtbl->UnregisterOcclusionStatus(This,dwCookie)
  1089. #define IDXGIFactory7_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain)
  1090. /*** IDXGIFactory3 methods ***/
  1091. #define IDXGIFactory7_GetCreationFlags(This) (This)->lpVtbl->GetCreationFlags(This)
  1092. /*** IDXGIFactory4 methods ***/
  1093. #define IDXGIFactory7_EnumAdapterByLuid(This,luid,iid,adapter) (This)->lpVtbl->EnumAdapterByLuid(This,luid,iid,adapter)
  1094. #define IDXGIFactory7_EnumWarpAdapter(This,iid,adapter) (This)->lpVtbl->EnumWarpAdapter(This,iid,adapter)
  1095. /*** IDXGIFactory5 methods ***/
  1096. #define IDXGIFactory7_CheckFeatureSupport(This,feature,support_data,support_data_size) (This)->lpVtbl->CheckFeatureSupport(This,feature,support_data,support_data_size)
  1097. /*** IDXGIFactory6 methods ***/
  1098. #define IDXGIFactory7_EnumAdapterByGpuPreference(This,adapter_idx,gpu_preference,iid,adapter) (This)->lpVtbl->EnumAdapterByGpuPreference(This,adapter_idx,gpu_preference,iid,adapter)
  1099. /*** IDXGIFactory7 methods ***/
  1100. #define IDXGIFactory7_RegisterAdaptersChangedEvent(This,event,cookie) (This)->lpVtbl->RegisterAdaptersChangedEvent(This,event,cookie)
  1101. #define IDXGIFactory7_UnregisterAdaptersChangedEvent(This,cookie) (This)->lpVtbl->UnregisterAdaptersChangedEvent(This,cookie)
  1102. #else
  1103. /*** IUnknown methods ***/
  1104. static FORCEINLINE HRESULT IDXGIFactory7_QueryInterface(IDXGIFactory7* This,REFIID riid,void **ppvObject) {
  1105. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  1106. }
  1107. static FORCEINLINE ULONG IDXGIFactory7_AddRef(IDXGIFactory7* This) {
  1108. return This->lpVtbl->AddRef(This);
  1109. }
  1110. static FORCEINLINE ULONG IDXGIFactory7_Release(IDXGIFactory7* This) {
  1111. return This->lpVtbl->Release(This);
  1112. }
  1113. /*** IDXGIObject methods ***/
  1114. static FORCEINLINE HRESULT IDXGIFactory7_SetPrivateData(IDXGIFactory7* This,REFGUID guid,UINT data_size,const void *data) {
  1115. return This->lpVtbl->SetPrivateData(This,guid,data_size,data);
  1116. }
  1117. static FORCEINLINE HRESULT IDXGIFactory7_SetPrivateDataInterface(IDXGIFactory7* This,REFGUID guid,const IUnknown *object) {
  1118. return This->lpVtbl->SetPrivateDataInterface(This,guid,object);
  1119. }
  1120. static FORCEINLINE HRESULT IDXGIFactory7_GetPrivateData(IDXGIFactory7* This,REFGUID guid,UINT *data_size,void *data) {
  1121. return This->lpVtbl->GetPrivateData(This,guid,data_size,data);
  1122. }
  1123. static FORCEINLINE HRESULT IDXGIFactory7_GetParent(IDXGIFactory7* This,REFIID riid,void **parent) {
  1124. return This->lpVtbl->GetParent(This,riid,parent);
  1125. }
  1126. /*** IDXGIFactory methods ***/
  1127. static FORCEINLINE HRESULT IDXGIFactory7_EnumAdapters(IDXGIFactory7* This,UINT adapter_idx,IDXGIAdapter **adapter) {
  1128. return This->lpVtbl->EnumAdapters(This,adapter_idx,adapter);
  1129. }
  1130. static FORCEINLINE HRESULT IDXGIFactory7_MakeWindowAssociation(IDXGIFactory7* This,HWND window,UINT flags) {
  1131. return This->lpVtbl->MakeWindowAssociation(This,window,flags);
  1132. }
  1133. static FORCEINLINE HRESULT IDXGIFactory7_GetWindowAssociation(IDXGIFactory7* This,HWND *window) {
  1134. return This->lpVtbl->GetWindowAssociation(This,window);
  1135. }
  1136. static FORCEINLINE HRESULT IDXGIFactory7_CreateSwapChain(IDXGIFactory7* This,IUnknown *device,DXGI_SWAP_CHAIN_DESC *desc,IDXGISwapChain **swapchain) {
  1137. return This->lpVtbl->CreateSwapChain(This,device,desc,swapchain);
  1138. }
  1139. static FORCEINLINE HRESULT IDXGIFactory7_CreateSoftwareAdapter(IDXGIFactory7* This,HMODULE swrast,IDXGIAdapter **adapter) {
  1140. return This->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter);
  1141. }
  1142. /*** IDXGIFactory1 methods ***/
  1143. static FORCEINLINE HRESULT IDXGIFactory7_EnumAdapters1(IDXGIFactory7* This,UINT Adapter,IDXGIAdapter1 **ppAdapter) {
  1144. return This->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter);
  1145. }
  1146. static FORCEINLINE WINBOOL IDXGIFactory7_IsCurrent(IDXGIFactory7* This) {
  1147. return This->lpVtbl->IsCurrent(This);
  1148. }
  1149. /*** IDXGIFactory2 methods ***/
  1150. static FORCEINLINE WINBOOL IDXGIFactory7_IsWindowedStereoEnabled(IDXGIFactory7* This) {
  1151. return This->lpVtbl->IsWindowedStereoEnabled(This);
  1152. }
  1153. static FORCEINLINE HRESULT IDXGIFactory7_CreateSwapChainForHwnd(IDXGIFactory7* This,IUnknown *pDevice,HWND hWnd,const DXGI_SWAP_CHAIN_DESC1 *pDesc,const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
  1154. return This->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain);
  1155. }
  1156. static FORCEINLINE HRESULT IDXGIFactory7_CreateSwapChainForCoreWindow(IDXGIFactory7* This,IUnknown *pDevice,IUnknown *pWindow,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
  1157. return This->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain);
  1158. }
  1159. static FORCEINLINE HRESULT IDXGIFactory7_GetSharedResourceAdapterLuid(IDXGIFactory7* This,HANDLE hResource,LUID *pLuid) {
  1160. return This->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid);
  1161. }
  1162. static FORCEINLINE HRESULT IDXGIFactory7_RegisterStereoStatusWindow(IDXGIFactory7* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
  1163. return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie);
  1164. }
  1165. static FORCEINLINE HRESULT IDXGIFactory7_RegisterStereoStatusEvent(IDXGIFactory7* This,HANDLE hEvent,DWORD *pdwCookie) {
  1166. return This->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie);
  1167. }
  1168. static FORCEINLINE void IDXGIFactory7_UnregisterStereoStatus(IDXGIFactory7* This,DWORD dwCookie) {
  1169. This->lpVtbl->UnregisterStereoStatus(This,dwCookie);
  1170. }
  1171. static FORCEINLINE HRESULT IDXGIFactory7_RegisterOcclusionStatusWindow(IDXGIFactory7* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) {
  1172. return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie);
  1173. }
  1174. static FORCEINLINE HRESULT IDXGIFactory7_RegisterOcclusionStatusEvent(IDXGIFactory7* This,HANDLE hEvent,DWORD *pdwCookie) {
  1175. return This->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie);
  1176. }
  1177. static FORCEINLINE void IDXGIFactory7_UnregisterOcclusionStatus(IDXGIFactory7* This,DWORD dwCookie) {
  1178. This->lpVtbl->UnregisterOcclusionStatus(This,dwCookie);
  1179. }
  1180. static FORCEINLINE HRESULT IDXGIFactory7_CreateSwapChainForComposition(IDXGIFactory7* This,IUnknown *pDevice,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) {
  1181. return This->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain);
  1182. }
  1183. /*** IDXGIFactory3 methods ***/
  1184. static FORCEINLINE UINT IDXGIFactory7_GetCreationFlags(IDXGIFactory7* This) {
  1185. return This->lpVtbl->GetCreationFlags(This);
  1186. }
  1187. /*** IDXGIFactory4 methods ***/
  1188. static FORCEINLINE HRESULT IDXGIFactory7_EnumAdapterByLuid(IDXGIFactory7* This,LUID luid,REFIID iid,void **adapter) {
  1189. return This->lpVtbl->EnumAdapterByLuid(This,luid,iid,adapter);
  1190. }
  1191. static FORCEINLINE HRESULT IDXGIFactory7_EnumWarpAdapter(IDXGIFactory7* This,REFIID iid,void **adapter) {
  1192. return This->lpVtbl->EnumWarpAdapter(This,iid,adapter);
  1193. }
  1194. /*** IDXGIFactory5 methods ***/
  1195. static FORCEINLINE HRESULT IDXGIFactory7_CheckFeatureSupport(IDXGIFactory7* This,DXGI_FEATURE feature,void *support_data,UINT support_data_size) {
  1196. return This->lpVtbl->CheckFeatureSupport(This,feature,support_data,support_data_size);
  1197. }
  1198. /*** IDXGIFactory6 methods ***/
  1199. static FORCEINLINE HRESULT IDXGIFactory7_EnumAdapterByGpuPreference(IDXGIFactory7* This,UINT adapter_idx,DXGI_GPU_PREFERENCE gpu_preference,REFIID iid,void **adapter) {
  1200. return This->lpVtbl->EnumAdapterByGpuPreference(This,adapter_idx,gpu_preference,iid,adapter);
  1201. }
  1202. /*** IDXGIFactory7 methods ***/
  1203. static FORCEINLINE HRESULT IDXGIFactory7_RegisterAdaptersChangedEvent(IDXGIFactory7* This,HANDLE event,DWORD *cookie) {
  1204. return This->lpVtbl->RegisterAdaptersChangedEvent(This,event,cookie);
  1205. }
  1206. static FORCEINLINE HRESULT IDXGIFactory7_UnregisterAdaptersChangedEvent(IDXGIFactory7* This,DWORD cookie) {
  1207. return This->lpVtbl->UnregisterAdaptersChangedEvent(This,cookie);
  1208. }
  1209. #endif
  1210. #endif
  1211. #endif
  1212. #endif /* __IDXGIFactory7_INTERFACE_DEFINED__ */
  1213. /* Begin additional prototypes for all interfaces */
  1214. /* End additional prototypes */
  1215. #ifdef __cplusplus
  1216. }
  1217. #endif
  1218. #endif /* __dxgi1_6_h__ */