1 module aurora.directx.dxgi.dxgi1_4;
2 
3 version(Windows):
4 
5 import aurora.directx.com;
6 public import aurora.directx.dxgi.dxgi1_3;
7 
8 public:
9 
10 ///
11 /// Constants
12 ///
13 
14 ///
15 /// Functions
16 ///
17 
18 ///
19 /// Enumerations
20 ///
21 
22 enum DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG
23 {
24     PRESENT	= 0x1,
25     OVERLAY_PRESENT	= 0x2
26 }
27 
28 enum DXGI_OVERLAY_COLOR_SPACE_SUPPORT_FLAG
29 {
30     PRESENT	= 0x1
31 }
32 
33 enum DXGI_MEMORY_SEGMENT_GROUP
34 {
35     LOCAL	= 0,
36     NON_LOCAL	= 1
37 }
38 
39 ///
40 /// Structures
41 ///
42 
43 struct DXGI_QUERY_VIDEO_MEMORY_INFO
44 {
45     ulong Budget;
46     ulong CurrentUsage;
47     ulong AvailableForReservation;
48     ulong CurrentReservation;
49 }
50 
51 ///
52 /// Interfaces
53 ///
54 
55 mixin(uuid!(IDXGISwapChain3, "94d99bdb-f1f8-4ab0-b236-7da0170edab1"));
56 public interface IDXGISwapChain3 : IDXGISwapChain2
57 {
58 extern(Windows):
59     uint GetCurrentBackBufferIndex();
60     HRESULT CheckColorSpaceSupport(DXGI_COLOR_SPACE_TYPE ColorSpace, uint *pColorSpaceSupport);
61     HRESULT ResizeBuffers1(uint BufferCount, uint Width, uint Height, DXGI_FORMAT Format, uint SwapChainFlags, const uint *pCreationNodeMask, const(IUnknown) *ppPresentQueue);
62     HRESULT SetColorSpace1(DXGI_COLOR_SPACE_TYPE ColorSpace);
63 }
64 
65 mixin(uuid!(IDXGIOutput4, "dc7dca35-2196-414d-9F53-617884032a60"));
66 public interface IDXGIOutput4 : IDXGIOutput3
67 {
68 extern(Windows):
69     HRESULT CheckOverlayColorSpaceSupport(DXGI_FORMAT Format, DXGI_COLOR_SPACE_TYPE ColorSpace, IUnknown pConcernedDevice, uint *pFlags);
70 }
71 
72 mixin(uuid!(IDXGIFactory4, "1bc6ea02-ef36-464f-bf0c-21ca39e5168a"));
73 public interface IDXGIFactory4 : IDXGIFactory3
74 {
75 extern(Windows):
76     HRESULT EnumAdapterByLuid(LUID AdapterLuid, REFIID riid, void **ppvAdapter);
77     HRESULT EnumWarpAdapter(REFIID riid, void **ppvAdapter);
78 }
79 
80 mixin(uuid!(IDXGIAdapter3, "645967A4-1392-4310-A798-8053CE3E93FD"));
81 public interface IDXGIAdapter3 : IDXGIAdapter2
82 {
83 extern(Windows):
84     HRESULT QueryVideoMemoryInfo(uint NodeIndex, DXGI_MEMORY_SEGMENT_GROUP MemorySegmentGroup, DXGI_QUERY_VIDEO_MEMORY_INFO *pVideoMemoryInfo);
85     HRESULT RegisterHardwareContentProtectionTeardownStatusEvent(HANDLE hEvent, uint *pdwCookie);
86     HRESULT RegisterVideoMemoryBudgetChangeNotificationEvent(HANDLE hEvent, uint *pdwCookie);
87     HRESULT SetVideoMemoryReservation(uint NodeIndex, DXGI_MEMORY_SEGMENT_GROUP MemorySegmentGroup, ulong Reservation);
88     void UnregisterHardwareContentProtectionTeardownStatus(uint dwCookie);
89     void UnregisterVideoMemoryBudgetChangeNotification(uint dwCookie);
90 }