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