1 // Copyright © 2015; Dmitry Roschin 2 // Licensed under the MIT License <LICENSE.md> 3 //! Mappings for the contents of dxgi1_3.h 4 5 ENUM!{ enum DXGI_FRAME_PRESENTATION_MODE { 6 DXGI_FRAME_PRESENTATION_MODE_COMPOSED = 0, 7 DXGI_FRAME_PRESENTATION_MODE_OVERLAY = 1, 8 DXGI_FRAME_PRESENTATION_MODE_NONE = 2, 9 DXGI_FRAME_PRESENTATION_MODE_COMPOSITION_FAILURE = 3, 10 }} 11 12 FLAGS!{ enum DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS { 13 DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_NOMINAL_RANGE = 0x1, 14 DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_BT709 = 0x2, 15 DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_xvYCC = 0x4, 16 }} 17 18 FLAGS!{ enum DXGI_OVERLAY_SUPPORT_FLAG { 19 DXGI_OVERLAY_SUPPORT_FLAG_DIRECT = 0x1, 20 DXGI_OVERLAY_SUPPORT_FLAG_SCALING = 0x2, 21 }} 22 23 STRUCT!{struct DXGI_DECODE_SWAP_CHAIN_DESC { 24 Flags: ::UINT, 25 }} 26 27 STRUCT!{struct DXGI_FRAME_STATISTICS_MEDIA { 28 PresentCount: ::UINT, 29 PresentRefreshCount: ::UINT, 30 SyncRefreshCount: ::UINT, 31 SyncQPCTime: ::LARGE_INTEGER, 32 SyncGPUTime: ::LARGE_INTEGER, 33 CompositionMode: ::DXGI_FRAME_PRESENTATION_MODE, 34 ApprovedPresentDuration: ::UINT, 35 }} 36 37 STRUCT!{struct DXGI_MATRIX_3X2_F { 38 _11: ::FLOAT, 39 _12: ::FLOAT, 40 _21: ::FLOAT, 41 _22: ::FLOAT, 42 _31: ::FLOAT, 43 _32: ::FLOAT, 44 }} 45 46 RIDL!( 47 interface IDXGIDecodeSwapChain(IDXGIDecodeSwapChainVtbl): IUnknown(IUnknownVtbl) { 48 fn PresentBuffer( 49 &mut self, BufferToPresent: ::UINT, SyncInterval: ::UINT, Flags: ::UINT 50 ) -> ::HRESULT, 51 fn SetSourceRect(&mut self, pRect: *const ::RECT) -> ::HRESULT, 52 fn SetTargetRect(&mut self, pRect: *const ::RECT) -> ::HRESULT, 53 fn SetDestSize(&mut self, Width: ::UINT, Height: ::UINT) -> ::HRESULT, 54 fn GetSourceRect(&mut self, pRect: *mut ::RECT) -> ::HRESULT, 55 fn GetTargetRect(&mut self, pRect: *mut ::RECT) -> ::HRESULT, 56 fn GetDestSize( 57 &mut self, pWidth: *mut ::UINT, pHeight: *mut ::UINT 58 ) -> ::HRESULT, 59 fn SetColorSpace( 60 &mut self, ColorSpace: ::DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS 61 ) -> ::HRESULT, 62 fn GetColorSpace(&mut self) -> ::DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS 63 }); 64 65 RIDL!( 66 interface IDXGIDevice3(IDXGIDevice3Vtbl): IDXGIDevice2(IDXGIDevice2Vtbl) { 67 fn Trim(&mut self) -> () 68 }); 69 70 RIDL!( 71 interface IDXGIFactory3(IDXGIFactory3Vtbl): IDXGIFactory2(IDXGIFactory2Vtbl) { 72 fn GetCreationFlags(&mut self) -> ::UINT 73 }); 74 75 RIDL!( 76 interface IDXGIFactoryMedia(IDXGIFactoryMediaVtbl): IUnknown(IUnknownVtbl) { 77 fn CreateSwapChainForCompositionSurfaceHandle( 78 &mut self, pDevice: *mut ::IUnknown, hSurface: ::HANDLE, 79 pDesc: *const ::DXGI_SWAP_CHAIN_DESC1, pRestrictToOutput: *mut ::IDXGIOutput, 80 ppSwapChain: *mut *mut ::IDXGISwapChain1 81 ) -> ::HRESULT, 82 fn CreateDecodeSwapChainForCompositionSurfaceHandle( 83 &mut self, pDevice: *mut ::IUnknown, hSurface: ::HANDLE, 84 pDesc: *mut ::DXGI_DECODE_SWAP_CHAIN_DESC, pYuvDecodeBuffers: *mut ::IDXGIResource, 85 pRestrictToOutput: *mut ::IDXGIOutput, ppSwapChain: *mut *mut ::IDXGIDecodeSwapChain 86 ) -> ::HRESULT 87 }); 88 89 RIDL!( 90 interface IDXGIOutput2(IDXGIOutput2Vtbl): IDXGIOutput1(IDXGIOutput1Vtbl) { 91 fn SupportsOverlays(&mut self) -> ::BOOL 92 }); 93 94 RIDL!( 95 interface IDXGIOutput3(IDXGIOutput3Vtbl): IDXGIOutput2(IDXGIOutput2Vtbl) { 96 fn CheckOverlaySupport( 97 &mut self, EnumFormat: ::DXGI_FORMAT, pConcernedDevice: *mut ::IUnknown, 98 pFlags: *mut ::UINT 99 ) -> ::HRESULT 100 }); 101 102 RIDL!( 103 interface IDXGISwapChain2(IDXGISwapChain2Vtbl): IDXGISwapChain1(IDXGISwapChain1Vtbl) { 104 fn SetSourceSize(&mut self, Width: ::UINT, Height: ::UINT) -> ::HRESULT, 105 fn GetSourceSize( 106 &mut self, pWidth: *mut ::UINT, pHeight: *mut ::UINT 107 ) -> ::HRESULT, 108 fn SetMaximumFrameLatency(&mut self, MaxLatency: ::UINT) -> ::HRESULT, 109 fn GetMaximumFrameLatency(&mut self, pMaxLatency: *mut ::UINT) -> ::HRESULT, 110 fn GetFrameLatencyWaitableObject(&mut self) -> ::HANDLE, 111 fn SetMatrixTransform( 112 &mut self, pMatrix: *const ::DXGI_MATRIX_3X2_F 113 ) -> ::HRESULT, 114 fn GetMatrixTransform( 115 &mut self, pMatrix: *mut ::DXGI_MATRIX_3X2_F 116 ) -> ::HRESULT 117 }); 118 119 RIDL!( 120 interface IDXGISwapChainMedia(IDXGISwapChainMediaVtbl): IUnknown(IUnknownVtbl) { 121 fn GetFrameStatisticsMedia( 122 &mut self, pStats: *mut ::DXGI_FRAME_STATISTICS_MEDIA 123 ) -> ::HRESULT, 124 fn SetPresentDuration(&mut self, Duration: ::UINT) -> ::HRESULT, 125 fn CheckPresentDurationSupport( 126 &mut self, DesiredPresentDuration: ::UINT, pClosestSmallerPresentDuration: *mut ::UINT, 127 pClosestLargerPresentDuration: *mut ::UINT 128 ) -> ::HRESULT 129 }); 130 131 pub const DXGI_CREATE_FACTORY_DEBUG: ::UINT = 0x1; 132