1 module aurora.directx.dxgi.dxgi1_3;
2 
3 import aurora.directx.com;
4 public import aurora.directx.dxgi.dxgitype;
5 public import aurora.directx.dxgi.dxgicommon;
6 public import aurora.directx.dxgi.dxgiformat;
7 public import aurora.directx.dxgi.dxgi1_2;
8 
9 public:
10 
11 //
12 //	Constants
13 //
14 
15 //DXGI_CREATE_FACTORY
16 enum DXGI_CREATE_FACTORY_NORMAL = (0U);
17 enum DXGI_CREATE_FACTORY_DEBUG = (1U);
18 
19 //DXGI_PRESENT
20 enum DXGI_PRESENT_USE_DURATION = (0x00000100U);
21 
22 //
23 //	Enumerations
24 //
25 
26 
27 
28 //
29 //	Structures
30 //
31 
32 public struct DXGI_DECODE_SWAP_CHAIN_DESC {
33 	uint Flags;
34 }
35 
36 public struct DXGI_FRAME_STATISTICS_MEDIA {
37 	DXGI_FRAME_STATISTICS Base;
38 	alias Base this;
39 	DXGI_FRAME_PRESENTATION_MODE CompositionMode;
40 	UINT                         ApprovedPresentDuration;
41 }
42 
43 public struct DXGI_MATRIX_3X2_F {
44 	float _11;
45 	float _12;
46 	float _21;
47 	float _22;
48 	float _31;
49 	float _32;
50 }
51 
52 enum DXGI_OVERLAY_SUPPORT_FLAG
53 {
54 	DIRECT	= 0x1,
55 	SCALING	= 0x2
56 }
57 
58 //
59 //	Interfaces
60 //
61 
62 mixin(uuid!(IDXGIDebug1, "c5a05f0c-16f2-4adf-9f4d-a8c4d58ac550"));
63 public interface IDXGIDebug1 : IDXGIDebug
64 {
65 extern(Windows):
66 	void DisableLeakTrackingForThread();
67 	void EnableLeakTrackingForThread();
68 	bool IsLeakTrackingEnabledForThread();
69 }
70 
71 mixin(uuid!(IDXGIDecodeSwapChain, "2633066b-4514-4c7a-8fd8-12ea98059d18"));
72 public interface IDXGIDecodeSwapChain : IUnknown
73 {
74 extern(Windows):
75 	DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS GetColorSpace();
76 	HRESULT GetDestSize(uint *Width, uint *Height);
77 	HRESULT GetSourceRect(RECT *Rect);
78 	HRESULT GetTargetRect(RECT *Rect);
79 	HRESULT PresentBuffer(uint BufferToPresent, uint SyncInterval, uint Flags);
80 	HRESULT SetColorSpace(DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS ColorSpace);
81 	HRESULT SetDestSize(uint Width, uint Height);
82 	HRESULT SetSourceRect(const RECT *Rect);
83 	HRESULT SetTargetRect(const RECT *Rect);
84 }
85 
86 mixin(uuid!(IDXGIDevice3, "6007896c-3244-4afd-bf18-a6d3beda5023"));
87 public interface IDXGIDevice3 : IDXGIDevice2
88 {
89 extern(Windows):
90 	void Trim();
91 }
92 
93 mixin(uuid!(IDXGIFactory3, "25483823-cd46-4c7d-86ca-47aa95b837bd"));
94 interface IDXGIFactory3 : IDXGIFactory2
95 {
96 extern(Windows):
97 	uint GetCreationFlags();	
98 }
99 
100 mixin(uuid!(IDXGIFactoryMedia, "41e7d1f2-a591-4f7b-a2e5-fa9c843e1c12"));
101 public interface IDXGIFactoryMedia : IDXGIObject
102 {
103 extern(Windows):
104 	HRESULT CreateDecodeSwapChainForCompositionSurfaceHandle(IUnknown Device, HANDLE Surface, const DXGI_DECODE_SWAP_CHAIN_DESC *Desc, IDXGIResource YuvDecodeBuffers, IDXGIOutput RestrictToOutput, IDXGIDecodeSwapChain *SwapChain);	
105 	HRESULT CreateSwapChainForCompositionSurfaceHandle(IUnknown Device, HANDLE Surface, const DXGI_SWAP_CHAIN_DESC1 *Desc, IDXGIOutput RestrictToOutput, IDXGISwapChain1 *SwapChain);
106 }
107 
108 mixin(uuid!(IDXGIOutput2, "595e39d1-2724-4663-99b1-da969de28364"));
109 public interface IDXGIOutput2 : IDXGIOutput1
110 {
111 extern(Windows):
112 	bool SupportsOverlays();
113 }
114 
115 mixin(uuid!(IDXGISwapChain2, "a8be2ac4-199f-4946-b331-79599fb98de7"));
116 public interface IDXGISwapChain2 : IDXGISwapChain1
117 {
118 extern(Windows):
119 	HANDLE GetFrameLatencyWaitableObject();
120 	HRESULT GetMatrixTransform(DXGI_MATRIX_3X2_F *Matrix);
121 	HRESULT GetMaximumFrameLatency(uint *MaxLatency);
122 	HRESULT GetSourceSize(uint *Width, uint *Height);
123 	HRESULT SetMatrixTransform(const DXGI_MATRIX_3X2_F *Matrix);
124 	HRESULT SetMaximumFrameLatency(uint MaxLatency);
125 	HRESULT SetSourceSize(uint Width, uint Height);
126 }
127 
128 mixin(uuid!(IDXGISwapChainMedia,"dd95b90b-f05f-4f6a-bd65-25bfb264bd84"));
129 public interface IDXGISwapChainMedia : IUnknown
130 {
131 extern(Windows):
132 	HRESULT CheckPresentDurationSupport(uint DesiredPresentDuration, uint *ClosestSmallerPresentDuration, uint *ClosestLargerPresentDuration);
133 	HRESULT GetFrameStatisticsMedia(DXGI_FRAME_STATISTICS_MEDIA *Stats);
134 	HRESULT SetPresentDuration(uint Duration);
135 }
136 
137 mixin(uuid!(IDXGIOutput3, "8a6bb301-7e7e-41F4-a8e0-5b32f7f99b18"));
138 public interface IDXGIOutput3 : IDXGIOutput2
139 {
140 extern(Windows):
141 	HRESULT CheckOverlaySupport(DXGI_FORMAT EnumFormat, IUnknown pConcernedDevice, uint *pFlags);
142 }
143 
144 //
145 //	Functions
146 //
147 
148 extern(Windows) public HRESULT CreateDXGIFactory2(uint Flags, const(GUID)* RIID, void **Factory);
149 extern(Windows) public HRESULT DXGIGetDebugInterface1(uint Flags, const(GUID)* RIID, void **Debug);