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);