1 module directx.dxgi1_3; 2 3 public import directx.dxgi1_2; 4 5 enum DXGI_CREATE_FACTORY_DEBUG = 0x1; 6 7 __gshared _DXGIGetDebugInterface1 DXGIGetDebugInterface1; 8 __gshared _CreateDXGIFactory2 CreateDXGIFactory2; 9 10 extern (Windows) { 11 alias _CreateDXGIFactory2 = HRESULT function(UINT Flags, REFIID riid, void** ppFactory); 12 alias _DXGIGetDebugInterface1 = HRESULT function(UINT Flags, REFIID riid, void **pDebug); 13 } 14 15 mixin( uuid!(IDXGIDevice3, "6007896c-3244-4afd-bf18-a6d3beda5023") ); 16 extern (C++) interface IDXGIDevice3 : IDXGIDevice2 17 { 18 void Trim(); 19 } 20 21 struct DXGI_MATRIX_3X2_F 22 { 23 FLOAT _11; 24 FLOAT _12; 25 FLOAT _21; 26 FLOAT _22; 27 FLOAT _31; 28 FLOAT _32; 29 } 30 31 mixin( uuid!(IDXGISwapChain2, "a8be2ac4-199f-4946-b331-79599fb98de7") ); 32 extern (C++) interface IDXGISwapChain2 : IDXGISwapChain1 33 { 34 HRESULT SetSourceSize( 35 UINT Width, 36 UINT Height); 37 38 HRESULT GetSourceSize( 39 /*out*/ UINT* pWidth, 40 /*out*/ UINT* pHeight); 41 42 HRESULT SetMaximumFrameLatency( 43 UINT MaxLatency); 44 45 HRESULT GetMaximumFrameLatency( 46 /*out*/ UINT* pMaxLatency); 47 48 HANDLE GetFrameLatencyWaitableObject(); 49 50 HRESULT SetMatrixTransform( 51 const(DXGI_MATRIX_3X2_F)* pMatrix); 52 53 HRESULT GetMatrixTransform( 54 /*out*/ DXGI_MATRIX_3X2_F* pMatrix); 55 } 56 57 mixin( uuid!(IDXGIOutput2, "595e39d1-2724-4663-99b1-da969de28364") ); 58 extern (C++) interface IDXGIOutput2 : IDXGIOutput1 59 { 60 BOOL SupportsOverlays(); 61 } 62 63 mixin( uuid!(IDXGIFactory3, "25483823-cd46-4c7d-86ca-47aa95b837bd") ); 64 extern (C++) interface IDXGIFactory3 : IDXGIFactory2 65 { 66 UINT GetCreationFlags(); 67 } 68 69 struct DXGI_DECODE_SWAP_CHAIN_DESC 70 { 71 UINT Flags; 72 } 73 74 alias DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS = int; 75 enum : DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS 76 { 77 DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_NOMINAL_RANGE = 0x1, 78 DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_BT709 = 0x2, 79 DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_xvYCC = 0x4 80 } 81 82 mixin( uuid!(IDXGIDecodeSwapChain, "2633066b-4514-4c7a-8fd8-12ea98059d18") ); 83 extern (C++) interface IDXGIDecodeSwapChain : IUnknown 84 { 85 HRESULT PresentBuffer( 86 UINT BufferToPresent, 87 UINT SyncInterval, 88 UINT Flags); 89 90 HRESULT SetSourceRect( 91 const(RECT)* pRect); 92 93 HRESULT SetTargetRect( 94 const(RECT)* pRect); 95 96 HRESULT SetDestSize( 97 UINT Width, 98 UINT Height); 99 100 HRESULT GetSourceRect( 101 /*out*/ RECT* pRect); 102 103 HRESULT GetTargetRect( 104 /*out*/ RECT* pRect); 105 106 HRESULT GetDestSize( 107 /*out*/ UINT* pWidth, 108 /*out*/ UINT* pHeight); 109 110 HRESULT SetColorSpace( 111 DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS ColorSpace); 112 113 DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS GetColorSpace(); 114 115 } 116 117 mixin( uuid!(IDXGIFactoryMedia, "41e7d1f2-a591-4f7b-a2e5-fa9c843e1c12") ); 118 extern (C++) interface IDXGIFactoryMedia : IUnknown 119 { 120 HRESULT CreateSwapChainForCompositionSurfaceHandle( 121 IUnknown pDevice, 122 HANDLE hSurface, 123 const(DXGI_SWAP_CHAIN_DESC1)* pDesc, 124 IDXGIOutput pRestrictToOutput, 125 /*out*/ IDXGISwapChain1* ppSwapChain); 126 127 HRESULT CreateDecodeSwapChainForCompositionSurfaceHandle( 128 IUnknown pDevice, 129 HANDLE hSurface, 130 DXGI_DECODE_SWAP_CHAIN_DESC* pDesc, 131 IDXGIResource pYuvDecodeBuffers, 132 IDXGIOutput pRestrictToOutput, 133 /*out*/ IDXGIDecodeSwapChain* ppSwapChain); 134 } 135 136 alias DXGI_FRAME_PRESENTATION_MODE = int; 137 enum : DXGI_FRAME_PRESENTATION_MODE 138 { 139 DXGI_FRAME_PRESENTATION_MODE_COMPOSED = 0, 140 DXGI_FRAME_PRESENTATION_MODE_OVERLAY = 1, 141 DXGI_FRAME_PRESENTATION_MODE_NONE = 2, 142 DXGI_FRAME_PRESENTATION_MODE_COMPOSITION_FAILURE = 3 143 } 144 145 struct DXGI_FRAME_STATISTICS_MEDIA 146 { 147 UINT PresentCount; 148 UINT PresentRefreshCount; 149 UINT SyncRefreshCount; 150 LARGE_INTEGER SyncQPCTime; 151 LARGE_INTEGER SyncGPUTime; 152 DXGI_FRAME_PRESENTATION_MODE CompositionMode; 153 UINT ApprovedPresentDuration; 154 } 155 156 mixin( uuid!(IDXGISwapChainMedia, "dd95b90b-f05f-4f6a-bd65-25bfb264bd84") ); 157 extern (C++) interface IDXGISwapChainMedia : IUnknown 158 { 159 HRESULT GetFrameStatisticsMedia( 160 /*out*/ DXGI_FRAME_STATISTICS_MEDIA* pStats); 161 162 HRESULT SetPresentDuration( 163 UINT Duration); 164 165 HRESULT CheckPresentDurationSupport( 166 UINT DesiredPresentDuration, 167 /*out*/ UINT* pClosestSmallerPresentDuration, 168 /*out*/ UINT* pClosestLargerPresentDuration); 169 } 170 171 alias DWORD DXGI_OVERLAY_SUPPORT_FLAG; 172 enum : DXGI_OVERLAY_SUPPORT_FLAG { 173 DXGI_OVERLAY_SUPPORT_FLAG_DIRECT = 0x1, 174 DXGI_OVERLAY_SUPPORT_FLAG_SCALING = 0x2 175 } 176 177 mixin(uuid!(IDXGIOutput3, "8a6bb301-7e7e-41F4-a8e0-5b32f7f99b18")); 178 179 extern (C++) interface IDXGIOutput3 : IDXGIOutput2 { 180 HRESULT CheckOverlaySupport(DXGI_FORMAT EnumFormat, 181 IUnknown pConcernedDevice, 182 UINT* pFlags); 183 }